Файловая система lfs что это
Файловая система с лог-структурой (LFS)
Лог-структурированные файловые системы были введены Rosenblum и Ousterhout в начале 90-х годов для решения следующих проблем.
Несмотря на то, что скорость процессора и объем основной памяти увеличились в геометрической прогрессии, стоимость доступа к диску развивалась гораздо медленнее. Это требует файловой системы, которая фокусируется на производительности записи, использует последовательную полосу пропускания и эффективно работает как при записи на диск, так и при обновлении метаданных. Именно здесь мотивируется лог-структурированная файловая система (LFS).
Хотя все операции чтения невозможно выполнить последовательно (поскольку любой файл может быть доступен в любой момент времени), мы можем использовать эффективность последовательной записи. LFS хранит небольшой буфер всех записей в сегменте памяти. Журнал — это просто структура данных, которая записывается только в начале (можно представить весь диск как журнал). Когда журнал заполнен, он последовательно записывается в неиспользуемую часть диска. Новые данные и метаданные (иноды, каталоги) накапливаются в буферном кеше и записываются одновременно в большие блоки (например, сегменты по 0,5M или 1M).
Ниже приведены структуры данных, используемые в реализации LFS.
Последовательная запись на диск:
Рассмотрим следующий рисунок, на котором показан блок данных D, записанный на диск в местоположении A0. Наряду с блоком данных находится инод, который указывает на блок данных D. Обычно блоки данных имеют размер 4 КБ, а размер инодов — около 128 байт.
Эффективная последовательная запись на диск:
Однако простой записи последовательно на диск недостаточно для достижения эффективности. Чтобы понять проблему, рассмотрим, что мы записали блок данных D по адресу A0 в момент времени T. Теперь, когда мы получим следующий блок данных в момент времени T + t для записи в A0 + 1, диск уже повернут некоторыми единицы измерения. Если время вращения диска
мы должны ждать
перед записью второго блока, чтобы два адреса (A0, A0 + 1) были смежными.
Решение этой проблемы простое — вместо ожидания после каждых двух последовательных записей блока данных мы можем просто сгруппировать некоторые из последовательных записей и временно сохранить их в сегменте, а затем записать их все вместе на диск. Таким образом, вместо того, чтобы ждать, пока диск переместится после каждого блока данных, мы ждем, пока он переместится после каждого x блоков данных, где x — емкость сегмента. Рисунок ниже иллюстрирует эту концепцию.
и
4 обновления одного и того же файла j, которые записываются на диск сразу. Это один из набора обновлений, буферизированных в LFS.
является обновлением файла k, который записывается на диск в следующем обороте.
Процесс в двух словах:
Процесс чтения LFS такой же, как и в файловых системах Unix после нахождения inode для файла (который сохраняется в карте inode). Процесс записи можно обобщить следующим образом:
LFS также устраняет вышеупомянутую проблему малой записи в RAID-4 и RAID-5, поскольку целые сегменты записываются вместо небольших блоков данных.
проблемы:
Одна из проблем, которая возникает, состоит в том, что сегменты в журнале имеют тенденцию фрагментироваться, поскольку старые блоки файлов заменяются новыми. Поскольку LFS создает старые копии данных, разбросанных по разным сегментам на диске, их необходимо периодически очищать. Для этого более чистый процесс «очищает» старые сегменты. Этот очиститель берет несколько неполных сегментов и уплотняет их, создавая один полный сегмент, освобождая тем самым пространство.
LiveInternetLiveInternet
—Цитатник
Идеи: из чего можно сделать совушку &.
Декор стены «камнями» Сегодня представляю на ваш суд одну идею, до которой доду.
Каменные баночки. Имитация. Нашла на страницах Страны мастеров нов.
Новый способ изготовления полубусин. Новый способ изготовления полубусин.  .
—Рубрики
—Музыка
—Поиск по дневнику
—Подписка по e-mail
—Интересы
—Друзья
—Постоянные читатели
—Сообщества
—Статистика
Стирание компакт-диска или DVD-диска
Стирание компакт-диска или DVD-диска
Стирание компакт-диска или DVD-диска
Перезаписываемые компакт-диски (например, диски CD-RW) и DVD-диски (например, DVD-RW, DVD+RW или DVD+RAM) поддерживают многократное стирание и запись содержимого. После стирания содержимого перезаписываемого компакт-диска, DVD-диска или диска Blu-ray можно повторно отформатировать диск и снова записать на него нужные файлы.
Если на компьютере установлено устройство записи компакт-дисков или DVD-дисков, можно скопировать файлы на записываемыйдиск. Этот процесс называется записью диска. В зависимости от выбранного формата диска Windows записывает диски в формате файловой системы LFSили формате Mastered. Дополнительные сведения о выборе формата диска для записи см. в разделе Выбор формата компакт-диска или DVD-диска
Если диалоговое окно «Автозапуск» не открывается, нажмите кнопку Пуск
Если диалоговое окно «Автозапуск» не открывается, нажмите кнопку Пуск
Источник
Использование CD-RW и DVD-RW дисков в Windows 7
Если вставить в привод чистый CD-RW или DVD-RW диск, то проводник Windows 7 автоматически выдаст запрос на форматирование этого диска при попытке открыть этот диск::
LFS это ни что иное как UDF. Файловая система для пакетной записи на CD и DVD диски. Позволяет использовать лазерный диск точно так же как и обычный. То есть копировать и удалять файлы наипростейшим образом. Файловая система UDF в частности используется в DVD-Video.
Mastered это запись диска в файловой системе ISO9660 с расширением Joliet. Файловая система ISO9660 это традиционная файловая система для лазерных дисков. Аудио CD, MP3 диски, диски с компьютерными программами записываются в этой файловой системе.
Использование файловой системы UDF (LFS)
Файловая система UDF используется для пакетной записи на лазерные диски. В зависимости от версии поддерживается разными версиями Windows. Например, Windows XP поддерживает версии 1.50, 2.0, 2.01.
Файловая система UDF также используется в системах записи и воспроизведения видео и аудио, например в DVD плеерах (DVD-video диски изготавливаются с использованием UDF версии 1.50). Есть модели видеокамер, которые записывают снятый материал на DVD-RW диски. Для того, чтобы использовать такой диски вначале его нужно отформатировать.
Вставить в привод чистый CD-RW или DVD-RW диск, то проводник Windows 7 автоматически выдаст запрос на форматирование этого диска при попытке открыть этот диск:
После завершения форматирования можно копировать файлы на этот диск прямо через проводник Windows:
Далее нужно открыть диск и на нем выполнить команду «Вставить»:
Однако нужно помнить, что скорость копирования на UDF диск значительно ниже чем на обычный или на USB флеш-диск.
Даже небольшая сумма может помочь написанию новых статей 🙂
Или поделитесь ссылкой на эту статью со своими друзьями.
LFS: Темная сторона Силы. Часть 1
Для того чтобы установить на свой компьютер Linux и начать его использовать для конкретных задач существует масса способов. Выбор дистрибутивов чрезвычайно широк, на любой вкус и цвет — и «для домохозяек» и для продвинутых пользвателей, допускающие любой уровень кастомизации, в том числе и сборку из исходников под конкретное железо. Установка системы в принципе доступна любому, мало-мальски грамотному пользователю ПК. И, если не погружаться в популярные по сей дей холивары на тему «Linux vs Другая ОС», то и спользование данной системы не требует знаний, которые были обязательными для новоиспеченного линуксоида скажем десять лет назад. С моей, глубоко субъективной точки зрения, за более чем десять лет, которые я наблюдаю за развитием этой системы, линукс стал более дружественен к новичкам и избавился от многих проблем, присущих ему в прошлом. И это хорошо.
Пингвины ручной сборки.
На Хабре уже мелькала пара статей на тему LFS, например эта, или вот эта. Комментарии к последней наводят на закономерную мысль — если набор возможностей для установки Linux и его изучения и так исчерпывающе широк, зачем нужен LFS?
Не буду витеивато излагать истории о том «как космические корабли бороздят… и когда Земля была огненным шаром. ». Я отвечу на поставленный вопрос исходя из своей позиции — я собираю LFS потому, что мне просто интересно это сделать. Я вижу в этом процессе хорошую возможность заглянуть «под капот» системы. Допускаю, что этот путь сложно назвать оптимальным. Тем не менее, данная статья, и последующие за ней будут посвящены процессу ручной сборки Linux-системы. Данные статьи не будут переводом документации по сборке — в этом нет особой нужды. Акценты будут расставлены на специфике и ньюансах процесса, с которыми пришлось столкнуться автору лично. Будем считать этот цикл чем-то вроде дневника неофита.
1. Системные требования
Для сборки LFS необходим компьютер с установленной на нем ОС GNU/Linux. В принципе, подойдет любой дистрибутив. Допустим я, на своих машинах, использую Arch Linux. Что касается дистрибутивов основанных на Debian (Linux Mint, Ubuntu и т.п.), они разумеется тоже подходят, но спешу обратить внимание на следующее — на одном из начальных этапов работы, при инициализации переменных окружения, возникает предупреждение командной оболочки
Это предупреждение я получал в Linux Mint 17 связано оно с косвенным вызовом dircolors (команда, раскрашивающая терминал) из /etc/profile при повторном входе пользователя и обновлении переменных окружения командой source. Оно не является критичным и его можно игнорировать.
В хостовой Linux-системе должны быть установленны пакеты, перечисленные в официальных системных требованиях. Большинство этих пакетов входят в систему «из коробки» или являются устанавливаемыми дополнительно средствами разработчика. В любом случает они легко устанавливаются из официального репозитория конкретного дистрибутива. Хорошим вариантом является использование LiveCD типа Knoppix, тогда установить LFS можно на машину, не содержащую никакой ОС. В этом смысле выбор остается за вами.
Кроме железа и ОС необходимы так же терпение и усидчивость. Процесс сборки и настройки довольно длительный и трудоемкий. Не стоит заниматься копипастингом в терминал команд из книги: во-первых Ваш случай может быть уникальным; во-вторых — наша цель разобраться с принципом построения работоспособной ОС, собранной из исходников, а значит придется вникать в смысл происходящих процессов. К каждомуу этапу работы надо подходить осмысленно и не торопясь.
2. Документация по сборке минимальной системы
Вся необходимая документация сосредоточена в книге Linux Form Scratch (ссылка ведет на онлайн-версию крайнего стабильного релиза). Первый совет который хотелось бы дать новичку — брать последнюю стабильную версию на английском языке. Существуют русскоязычные переводы, однако они всегда отстают от актуальной версии. Кроме того сслыка на самую свежую русскую версию LFS 6.0 ведет в пустоту, а единственный доступный с оффициального сайта перевод касается LFS 5.0 но он, мягко говоря, устарел. Ядро системы и ПО проекта GNU претерпевают регулярные изменения, к тому же те версии пакетов, которые описаны в старых версиях LFS не всегда доступны для скачивания, а если и доступны, то их поиск придется производить вручную. Так что наш выбор — актуальная англоязычная версия LFS.
Примечание: пока писалась данная статья, в вики-статье от LFS была найдена ссылка на перевод LFS 7.3, что уже ближе к истине. Однако перевод этот еще не закончен — большая часть книги на английском.
Так же хочу предупредить читателя, что использование Current Development вресии книги так же может обернуться непредвиденными трудностями. Эту версию можно получить из ежедневно обновляемого репозитория SVN. Книга скачивается командой
И легко собирается, например так (для сборки html-версии необходим пакет tidyhtml)
Данная версия является самой свежей, ориентированной на использование недавно вышедшей «skynet-версии» ядра Linux 4.0.
Первая проблема возникает уже при проверках контрольных сумм скачанных пакетов
Указанный архив распаковывается, размеры файлов соотвествуют истине. Возможно в файл md5sums, содержащем список CRS просто закралась ошибка. Однако, дабы не рисковать, лучше взять стабильную версию книги.
3. Подготовка почвы
Прежде всего, для развертывания LFS, нам нужно дисковое пространство. Это может быть один раздел (или несколько разделов) на HDD, а может быть и каталог в хостовой файловой системе. Я остановился на варианте с разделом на HDD виртуальной машины, на которую предварительно водрузил 64-битный Arch Linux.
Минимальный размер потребного дискового пространства — 4 Гб. Я создал логический раздел размером в 40 Гб, отформатировав его в EXT4. Данный раздел необходимо смонтировать в хост-системе. Точку монтирования удобно сохранить в специальной переменной среды
ибо по этому пути нам придется обращаться очень часто. Монтируем раздел командами (в моем случае это раздел sda6, в вашем, наверняка, будет иначе)
ключ —directory-prefix указывает путь, по которому следует поместить скачанный файл. После этого приступаем к закачке исходников всего и вся, что нам предстоит установить
ключ —input-file указывает на файл, содержащий список URL загружаемых пакетов; —continue — включает докачку частично скачанных файлов, в случае если соединение с сетью было прервано. Будет загружено около 325 Мб архивов с исходниками требуемого ПО а так же патчи, необходимые для сборки. После загрузки необходимо проверить целостность скачанных пакетов
Сама проверка — вызов утилиты md5sum, выполняющей подсчет контрольных сумм всех файлов, содержащихся в передаваемом в качестве параметра списке md5sums и сверяющей результат со значением, указанном в том же списке. Результат, в случае успеха будет выглядеть так
beta2.tar.xz: ЦЕЛ
gzip-1.6.tar.xz: ЦЕЛ
iana-etc-2.30.tar.bz2: ЦЕЛ
inetutils-1.9.2.tar.gz: ЦЕЛ
intltool-0.50.2.tar.gz: ЦЕЛ
iproute2-3.19.0.tar.xz: ЦЕЛ
kbd-2.0.2.tar.gz: ЦЕЛ
kmod-19.tar.xz: ЦЕЛ
less-458.tar.gz: ЦЕЛ
lfs-bootscripts-20150222.tar.bz2: ЦЕЛ
libcap-2.24.tar.xz: ЦЕЛ
libpipeline-1.4.0.tar.gz: ЦЕЛ
libtool-2.4.6.tar.xz: ЦЕЛ
linux-3.19.tar.xz: ЦЕЛ
m4-1.4.17.tar.xz: ЦЕЛ
make-4.1.tar.bz2: ЦЕЛ
man-db-2.7.1.tar.xz: ЦЕЛ
man-pages-3.79.tar.xz: ЦЕЛ
mpc-1.0.2.tar.gz: ЦЕЛ
mpfr-3.1.2.tar.xz: ЦЕЛ
ncurses-5.9.tar.gz: ЦЕЛ
patch-2.7.4.tar.xz: ЦЕЛ
perl-5.20.2.tar.bz2: ЦЕЛ
pkg-config-0.28.tar.gz: ЦЕЛ
procps-ng-3.3.10.tar.xz: ЦЕЛ
psmisc-22.21.tar.gz: ЦЕЛ
readline-6.3.tar.gz: ЦЕЛ
sed-4.2.2.tar.bz2: ЦЕЛ
shadow-4.2.1.tar.xz: ЦЕЛ
sysklogd-1.5.1.tar.gz: ЦЕЛ
sysvinit-2.88dsf.tar.bz2: ЦЕЛ
tar-1.28.tar.xz: ЦЕЛ
tcl8.6.3-src.tar.gz: ЦЕЛ
texinfo-5.2.tar.xz: ЦЕЛ
tzdata2015a.tar.gz: ЦЕЛ
udev-lfs-20140408.tar.bz2: ЦЕЛ
util-linux-2.26.tar.xz: ЦЕЛ
vim-7.4.tar.bz2: ЦЕЛ
XML-Parser-2.44.tar.gz: ЦЕЛ
xz-5.2.0.tar.xz: ЦЕЛ
zlib-1.2.8.tar.xz: ЦЕЛ
bash-4.3.30-upstream_fixes-1.patch: ЦЕЛ
bc-1.06.95-memory_leak-1.patch: ЦЕЛ
bzip2-1.0.6-install_docs-1.patch: ЦЕЛ
coreutils-8.23-i18n-1.patch: ЦЕЛ
glibc-2.21-fhs-1.patch: ЦЕЛ
kbd-2.0.2-backspace-1.patch: ЦЕЛ
mpfr-3.1.2-upstream_fixes-3.patch: ЦЕЛ
readline-6.3-upstream_fixes-3.patch: ЦЕЛ
sysvinit-2.88dsf-consolidated-1.patch: ЦЕЛ
Отдельное внимание я обратил на пару команд pushd/popd. Хотя я и убежденный линуксоид, давно использующий данную систему, эти внутренние команды bash оказались для меня в новинку. Тем не менее, они очень удобны, когда приходится часто скакать по различным точкам файловой системы с последующим возвратом назад. Команда pushd временно переводит вас в указанный в качетве параметра каталог. Возврат назад происходит командой popd. При этом маршрут, по которому вы прыгаете организуется в виде стека и вам не надо заново вводить путь, по которому следует вернуться назад.
Теперь у нас имеется всё необходимое, чтобы начать сборку, но осталось выполнить последние подготовительные операции
4. Настройка рабочего окружения
Для чего это требуется? Вообще, зачем нужны символические ссылки? Они создаются для обеспечения единообразия доступа к определенным точкам файловой системы. В данный момент, в хост системы путь к этому каталогу выглядит как /mnt/lfs/tools. Когда мы перейдем во временную систему, корень которой будет располагаться по пути /mnt/lfs, в этой временной системе содержимое каталога будет доступно по пути /tools. Те первичные инструменты, которые мы соберем будут обращаться к данному каталогу по пути /tools в не зависимости от того где они будут запускаться — этот путь будет жестко «вшит» в бинарники после компиляции. Поэтому создавая указанную ссылку, мы обеспечиваем возможность обращения к данному каталогу по пути /tools вне зависимости от текущего расположения корня системы. В противном случае сразу после перехода во временную систему нас ждет сбой при первой же компиляции.
Теперь создадим новую группу и нового пользователя, от имени которого будем работать на первом этапе сборки временной системы. Работать от root точно не следует — вы, например при конфигурировании устанавливаемого пакета, можете перепутать или забыть задать префикс для каталога инсталляции и установкой собранного пакета в хост-систему поломать её (или осложнить работу пакетного менеджера в будущем). Работа от непривилегированного пользователя, у которого заданы права на запись только в определенные каталоги, позволит вам избежать неприятностей.
Первая команда создает группу lfs. Вторая — создает пользователя lfs. Смысл параметров таков:
Устанавливаем пароль пользователю lfs
Логинимся от имени lfs
Черта в параметрах команды (сокращение от ключа -l или —login) указывает, что для данного пользователя надо создать «чистую» сессию, не наследующую значения переменных окружения из предыдущей сессии. Для данной сессии мы создадим собственный набор переменных окружения
Создаем в домашней директории пользователя файлы
/.bash_profile определяет индивидуальную пользовательску настройку переменных среды. Команда
создает «чистое» пользовательское окружение (ключ -i указывает игнорировать предыдущие настройки), присваивая значения переменным среды
/.bashrc определяет какие настройки должны быть выполнены при логине в сессию данного пользователя
Отдельно следует обратить внимание на способ создания файлов. Почему мы используем команду cat, почему нельзя воспользоваться любимым консольным редактором? Ну, хорошо, пока мы находимся в хост-системе, текстовый редактор нам доступен. А вот когда мы перейдем во временную систему, так у нас не будет никакого редактора. Поэтому приходится использовать команду cat, перенаправляющую поток вывода из одного файла в другой. Входной файл у нас не указан — значит будет использован стандартный поток ввода. В качестве выходного файла указан создаваемый нами файл, а в качестве условия завершения — появление в потоке ввода символьной последовательности конца файла — EOF. После ввода команды мы сможем набирать текст создаваемого файла прямо в терминале. Для прекращения процесса вводим строку EOF. Таким способом мы превращаем командную оболочку в примитивный текстовый редактор.
Созданные скрипты будут исполнятся при каждом логине от имени lfs. Обновим пользовательское окружение командой
Убеждаемся, что необходимые переменные окружения установлены
5. Сборка временного набора инструментов (Temporary System)
Начиная собирать систему, мы сталкиваемся с классической проблемой «курицы и яйца». Для сборки системы нам необходимы компилятор, линковщик и библиотеки. Но у нас нет ничего из перечисленного, только их исходники. У нас есть компилятор в хост-системе, и собирать необходимое ПО мы начнем именно им. Однако если просто собрать тот же gcc с настройками по-умолчанию он не будет работать в LFS-системе на начальном этапе её построения — он использует динамическую компоновку необходимых для работы библиотек. Весь необходимый для работы код надо будет скомпоновать статически, то есть явным образом включить в исполняемый файл.
Таким образом первым делом мы выполним кросс-компиляцию некоторых частей будущей системы, чтобы иметь возможность воспользоваться ими при сборке окончательного её варианта.
Для всех собираемых пакетов порядок сборки содержит следующую последовательность действий (если не оговорено иного!):
Время сборки пакетов различно — от практически мгновенной, до двух с половиной часов (сборка gcc после «чрута» со всеми тестами длится примерно столько). Так как быстродействие компьютеров различается, в качестве единицы измерения времени сборки выбрана относительная единица, именуемая Standard Build Unit (SBU). Один SBU равен времени сборки пакета binutils, который компилируется самым первым. Продолжительность 1.0 SBU по времени можно ориентировочно оценить для вашей системы, но об этом чуть ниже, а пока
Мы не будем рассматривать сборку каждого пакета — на это есть сама книга LFS. Однако мы остановимся на некоторых ньюансах сборки, рассмотрев компиляцию наиболее важных пакетов
6. Сборка Binutils — первый проход. Измерение SBU
Binutils — пакет, содержащий вспомогательные утилиты для сборки ПО. В их число входят ассемблер (as) и компоновщик (ld). Они необходимы glibc и gcc для прохождения некоторых тестов, поэтому данный пакет собирается в первую очередь.
Распаковываем архив и переходим в каталог с его содержимым
Для сборки этого пакета рекомендуется создать отдельный каталог, создаем его и переходим туда
Теперь надо выполнить конфигурирование пакета, чтобы сгенерировать правильный Makefile.
Отдельное внимание ключам:
После того как отработает конфигуратор, на выходе мы получим Makefile, предназначенный для сборки и установки пакета. Собираем пакет и измеряем SBU
Время измеряем утилитой time <. >, которая возвращает время выполнения команд, заключенных в фигурные скобки. Это даст возможность ориентировочно оценить SBU, чтобы иметь представление о времени сборки остальных пакетов.
Примечание : LFS содержит рекомендацию измерять время конфигурирования сборки и установки. Но эта рекомендация носит пространный характер. Основное время работы машины уходит на make и проведение тестов. Кроме того, между make и make install могут выполнятся и другие действия, в которые приходится вникать. Так что я принял решение выполнить оценку описанным выше способом, учитывая примерный характер измерения, которое все равно определяется ещё и общей загрузкой системы другой работой.
Для моей системы — виртуальная машина на 4-х ядрах Intel Core i7 c 4096 Мб ОЗУ, работающей поверх хоста на том же Intel Core i7-2600K (4 ядра с гипертрейдингом) c 16 Гб ОЗУ — SBU составил 2 минуты 32 секунды при сборке в один поток.
Время сборки остальных пакетов дается в книге в долях SBU, так что теперь можно оценивать примерное время сборки всего остального, планируя таким образом работу (например запустить финальную сборку сборку gcc вместе с тестами и уйти делать другие дела, ибо занимает это всё 63 SBU — нет смысла с надеждой пялится в экран)
После того как сборка окончена, создаем символические ссылки на каталоги библиотек. Данная операция необходима, если ваша система 64-разрядная, так что нижеприведенная команда сначала проверяет разрядность системы, а уж потом при необходимости создает симлинки.
После этого устанавливаем собранное
Выходим наверх и удаляем ненужные более каталоги
7. Сборка GCC — первый проход
В процессе сборки системы компилятор придется собирать трижды. Первые два прохода необходимы для получения компилятора, способного работать независимо от хост-системы. На первом проходе мы будем использовать статическую компоновку всего необходимого кода, а так же проведем некоторые дополнительные настройки.
Во-первых распакуем архив с исходниками и перейдём в созданный каталог
Для успешной компиляции нам потребуются исходники ещё трех пакетов: GMP, MPFR и MPC. Распакуем их в каталог исходников компилятора и переименуем каталоги так, как на них ссылаются в исходниках gcc
Кроме того, придется отредактировать исходники gcc. Дело в том, что путь поиска компоновщика ld в них определен как для нормальной работающей системы. В нашем случае компоновщик располагается в каталоге /tools (он был собран в составе binutils). Некоторые из макроопределений так же должны ссылаться на /tools, поэтому трансформируем исходники, применяя монструозную команду
sed — потоковый текстовый редактор, выполняющий операции над текстовыми файлу по шаблонам, определяемым регулярными выражениями.
Когда я первый раз открыл LFS, я имел представление о синтаксисе sed ровно такое же, как слушательница курсов исскусств имени Леонардо да Винчи о сельском хозяйстве. Однако упорное гугление привело меня к следующим мыслям
Таким образом выражение ‘s@/lib\(64\)\?\(32\)\?/ld@/tools&@g’ разобрано мной так — найти все строки, содержащие «/lib», «/lib64» и «/lib32» и поставить перед ними строку «/tools», а выражение ‘s@/usr@/tools@g’ — найти все строки, содержащие «/usr» и заменить их на «/tools»
В общем, сборка временной системы (да и основной тоже) буквальна пропитана применением подобных конструкций. Желательно постараться вникнуть в их смысл, а команды набивать руками. Тогда к концу процесса сборки вас ожидает просветеление по многим вопросам, касающихся приемов обработки текстов и работы в *nix-консоли.
вносит исправление в скрипт конфигуратора, однако в моем случае она не внесла в него никаких изменений. По книге она направлена на изменения характера работы gcc с защитой стека.
Далее нам надо выполнить конфигурирование
Ключи несут следующий смысл:
Настроив сборку таким образом, выполняем её и устанавливаем пакет
после чего прибираемся за собой
8. Сборка остальных пакетов временной системы
Дальнейший ход сборки временной системы в пояснениях не нуждается и я отсылаю читателя к книге LFS. Единственное что стоит отметить — на протяжении всего процесса придется править исходники и устанавливать специальные опции конфигуратора, причем этот процесс должен быть вдумчивым и неторопливым. Ошибка на данном этапе может стоить довольно дорого, а найти её, неподготовленному ньюфагу, достаточно тяжело.
Ограничусь описанием минимального набора пакетов временной системы и некоторыми важными пояснениями. Следом за gcc надо установить
После сборки Glibc необходимо провести первый тест собранного компилятора. Создаем примитивную программу и собираем её компилятором из временного набора
Парсим получившийся бинарник на предмет наличия и содержания пути поиска загрузчика динамических библиотек
В моем случае получен следующий результат:
что говорит о правильной ссылке на линкер. В книге приводится результат для 32-разрядной системы, я же собирал 64-разрядную, и приведенный здесь путь отличается от указанного вкниге.
Убедившись, что всё в порядке, удаляем тестовую программу
По мере сборки пакетов, они постепенно вводятся в работу, делая нас всё более и более независимыми от хост-системы. На этом этапе необходим повторный тест компилятора
9. Обрезка отладочной иформации
После того как всё будет собрано, для экономии места рекомендуют обрезать отладочную информацию от собранных бинарников. Делаем это командами
Кроме того, можно удалить установленную но не нужную пока документацию — всё равно она будет собрана и установлена заново и уже на чистовую