Вход/Регистрация
Linux From Scratch
вернуться

Beekmans Gerard

Шрифт:

Создайте директорию /mnt/lfs:

mkdir -p /mnt/lfs

Монтируем LFS раздел:

mount /dev/xxx /mnt/lfs

Замените «xxx» наименованием раздела (например hda11).

Эта директория (/mnt/lfs) и есть значение переменной LFS variable из Главы 2. Если вы планируете использовать переменную среды LFS, самое время выполнить export LFS=/mnt/lfs.

Если вы решили выделить LFS несколько разделов (к примеру $LFS и $LFS/usr), монтируйте их следующим образом:

mkdir -p /mnt/lfs && mount /dev/xxx /mnt/lfs && mkdir /mnt/lfs/usr && mount /dev/yyy /mnt/lfs/usr

Естественно, замените /dev/xxx и /dev/yyy на соответствующие наименования разделов.

Глава 5. Подготовка системы LFS

Вступление

В этой главе мы скомпилируем и установим минимальную Linux-систему. Эта система будет располагать инструментами, необходимыми для сборки окончательной системы LFS в следующей главе.

Файлы, скомпилированные в данной главе, будут инсталлированы в директорию $LFS/static, для того, чтобы отделить их от тех файлов, которые будут установлены в следующей главе. Так как эти программы можно рассматривать как временные, нет необходимости засорять ими нашу будущую систему LFS.

Ключ к пониманию работы Linux – четкое знание о том, для чего нужен системе и пользователю каждый пакет программ, и что он делает. Для этого после инструкций по установке по каждому пакету приведены короткие описания входящих в него программ.

Перед использованием ко многим пакетам необходимо применить патчи. Мы будем делать это только там и тогда, где необходимо, так что не стоит волноваться, если инструкции по применению патча отсутствуют.

Во время инсталляции некоторых пакетов, на экран будут выводиться многочисленные предупреждения компилятора. В них нет ничего страшного, не обращайте на них внимание. Это просто предупреждения – в основном, связанные с некорректным, но не запрещенным использованием синтаксиса C или C++. Дело в том, что стандарты C довольно часто менялись, а некоторые пакеты все еще используют старый стандарт, однако это не проблема.

Прежде чем начать, убедитесь, что переменная LFS задана корректно. Для проверки выполните:

echo $LFS

Убедитесь, что вывод на экране соответствует точке монтирования раздела LFS (например /mnt/lfs).

Почему мы используем статические ссылки?

(Спасибо Plasmatic'у за разъяснение этого вопроса в одном из списков рассылки LFS.)

При компиляции программы, вместо того, чтобы при создании нового файла каждый раз переписывать все функции работы с ядром, аппаратными средствами, файлами, все базовые функции хранятся в библиотеках. glibc, которую мы установим позже, является одной из главных библиотек такого рода. Она содержит код для всех основных функций, таких как открытие файлов, печать информации на экран, получение ввода от пользователя. После компиляции программы эти библиотеки связываются ссылками с новой программой, чтобы она могла использовать любую функцию этих библиотек.

Однако такие библиотеки могут оказаться довольно большими (например, libc.a обычно занимает 2.5 MB), и держать отдельную копию каждой библиотеки прикрепленной к программе не очень то и логично. Представьте себе простую команду вроде ls с лишними 2.5 MB, прикрепленными к ней! Вместо того, чтобы делать библиотеку частью программы, или связывать статической ссылкой, библиотеку можно хранить в отдельном файле, который будет подгружаться по мере необходимости. Это называется динамическими ссылками, т.к. библиотека загружается и выгружается динамически, по мере необходимости программы.

Итак, у нас есть файл размером 1 KB и файл размером 2.5 MB. Пока мы не сэкономили дискового пространства (разве что освободили оперативную память до того, как библиотека понадобится). Настоящая выгода от использования динамических ссылок состоит в том, что нам необходимо хранить лишь одну копию библиотеки. Если ls и rm используют одну и ту же библиотеку, то нам не нужно иметь две копии этой библиотеки. Обе команды могут пользоваться кодом из одного файла. Также и с оперативной памятью – две программы используют один код вместо того, чтобы загружать в память его дубликаты. Таким образом экономится не только место на диске, но и драгоценная оперативная память.

Если динамические ссылки позволяют сэкономить столько места, почему же мы везде используем статические ссылки? Потому что, когда вы входите в новую (и далекую от совершенства) систему LFS с помощью команды chroot, динамические библиотеки будут недоступны, т.к. они находятся в дереве старого дистрибутива (например в /usr/lib). Эти каталоги будут недоступны из корневой директории системы LFS ($LFS).

Для того чтобы скомпилированные программы работали в среде chroot, при компиляции убедитесь, что библиотеки связаны статическими ссылками, отсюда возникают опции –enable-static-link, –disable-shared, и – static в Главе 5. Первое, что описывает Глава 6, это компиляция основных библиотек системы, glibc. После этого, мы перекомпилируем все программы, собранные в Главе 5, но в этот раз с динамическими ссылками, чтобы воспользоваться всеми преимуществами экономии дискового пространства.

  • Читать дальше
  • 1
  • ...
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: