Linux From Scratch
Linux From Scratch читать книгу онлайн
Gerard Beekmans
Copyright © 1999-2002 by Gerard Beekmans
Перевод: Денис Каледин, Ник Фролов, Алекс Казанков.
Версия 4.0
Эта книга описывает процесс создания Linux системы с нуля, используя лишь исходные коды необходимого программного обеспечения.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
bashbug
bashbug – скрипт, помогающий пользователю составлять и отправлять сообщения об ошибках bash в стандартном формате.
sh
sh – символическая ссылка на bash. Будучи вызванным как sh, bash имитирует запуск старых версий sh для лучшего соответствия стандартам POSIX.
Зависимости Bash
Последняя проверка: версия 2.05a.
Bash: bash, sh Binutils: ar, as, ld, ranlib, size Diffutils: cmp Fileutils: chmod, cp, install, ln, ls, mkdir, mv, rm Gcc: cc, cc1, collect2, cpp0, gcc Grep: egrep, grep Make: make Gawk: awk Sed: sed Sh-utils: basename, echo, expr, hostname, sleep, uname Texinfo: install-info Textutils: cat, tr, uniq
Установка Binutils-2.13
Приблизительное время компиляции: 2.05 SBU Необходимое дисковое пространство: 160 MB
Установка Binutils
Этот пакет известен своим нестабильным поведением при компиляции с измененными опциями оптимизации (включая опции -march и -mcpu). Binutils рекомендуется компилировать с настройками по умолчанию. Следовательно, если вы задали переменные такие как CFLAGS или CXXFLAGS, изменяющие уровень оптимизации по умолчанию, рекомендуется убрать их при сборке пакета binutils. Изменяя оптимизации для binutils, вы действуете на свой страх и риск.
Для инсталляции Binutils выполните:
mkdir ../binutils-build && cd ../binutils-build && ../binutils-2.13/configure –prefix=$LFS/static –disable-nls && make LDFLAGS=-all-static && make install
Пояснения команд
mkdir ../binutils-build: В инструкциях установки Binutils рекомендуется создать отдельную директорию для сборки, вместо того, чтобы компилировать программу в директории исходников. Итак, мы создаем директорию binutils-build и будем работать из нее.
–disable-nls: Эта опция выключает поддержку интернационализации (или i18n), которая не нужна нам на стадии статически связанных программ, т.к. часто дает сбои при использовании статических ссылок.
LDFLAGS=-all-static: Присваиваем переменной LDFLAGS значение -all-static для того, чтобы использовать статические ссылки.
Содержимое Binutils
Последняя проверка: версия 2.12.1.
Программы
addr2line, ar, as, gasp, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings and strip
Описания
addr2line
addr2line переводит программные адреса в имена файлов и номера строк. Given an address and an executable, используется отладочная информация исполняемого файла, чтобы определить, какое имя файла и номер строки связаны с данным адресом.
ar
ar создает и изменяет архивы, а также производит их распаковку. Архив – файл, содержащий несколько файлов в виде, позволяющем восстановить оригинал.
as
as используется для ассемблирования вывода the GNU C Compiler, gcc для использования с линкером ld.
gasp
gasp – Assembler Macro Preprocessor.
gprof
gprof отображает статистику системных вызовов.
ld
ld объединяет несколько объектных и архивных файлов и устанавливает символьные отношения. Последний шаг в сборке скомпилированной программы – запуск ld.
nm
nm перечисляет символы из объектных файлов.
objcopy
objcopy utility копирует содержимое одного объектного файла в другой. objcopy использует библиотеку GNU BFD для чтения/записи объектных файлов. Возможна запись конечного объектного файла в формате, отличном от исходного.
objdump
objdump выводит информацию об одном или нескольких объектных файлах. Опции указывают, какую информацию выводить. Эта информация полезна для программистов, разрабатывающих компиляторы, в противоположность тем, кому нужно просто скомпилировать и запустить программу.
ranlib
ranlib генерирует оглавление содержимого архива и сохраняет его в архиве. Список будет содержать все символы, определенные членами архива, that is a relocatable object file.
readelf
readelf выводит информацию об бинарных файлах типа elf.
size
size выводит размеры секций –и общий размер– каждого указанного объектного файла. По умолчанию, генерируется одна строка для каждого объектного файла или модуля в архиве.
strings
Для каждого заданного файла strings выводит последовательность отображаемых символов длиной минимум 4 знака (или указанной длины), завершающуюся непечатным символом. По умолчанию, выводятся лишь строки из инициализированных и загруженных частей объектных файлов. Для других типов файлов выводятся строки из всего файла.
strings зачастую используется для определения содержимого нетекстовых файлов.
strip
strip удаляет все или указанные символы из объектных файлов. Список объектных файлов может включать архивы. Должен быть задан как минимум один объектный файл. Модификация указанных файлов приоритетнее, чем запись модифицированных копий под другими именами.
Библиотеки
libbfd.[a,so] и libopcodes.[a,so]
Описания
libbfd
libbfd – библиотека Binary File Descriptor.
libopcodes
libopcodes – библиотека для работы с опкодами, используется в сборке утилит вроде objdump. Опкоды – «читаемые» версии инструкций процессора.
Зависимости Binutils
Последняя проверка: версия 2.11.2.
Autoconf: autoconf, autoheader Automake: aclocal, automake Bash: sh Binutils: ar, as, ld, nm, ranlib, strip Diffutils: cmp Fileutils: chmod, cp, ln, ls, mkdir, mv, rm, rmdir, touch Flex: flex Gcc: cc, cc1, collect2, cpp0, gcc Glibc: ldconfig Grep: egrep, fgrep, grep M4: m4 Make: make Gawk: gawk Sed: sed Sh-utils: basename, echo, expr, hostname, sleep, true, uname Texinfo: install-info, makeinfo Textutils: cat, sort, tr, uniq
Установка Bzip2-1.0.2
Приблизительное время компиляции: 0.07 SBU Необходимое дисковое пространство: 6 MB
Установка Bzip2
Для инсталляции Bzip2 выполните:
make CC="gcc -static" && make PREFIX=$LFS/static install
Стоит заметить, что имеет смысл загрузить патч для программы Tar, который позволяет ей без труда запаковывать и распаковывать архивы с помощью bzip2/bunzip2. Однако этот патч не является частью базовой системы LFS. С обычной версией tar, для работы с bzip2/bunzip2 используются конструкции вида bzcat file.tar.bz | tar -xv или tar –use-compress-prog=bunzip2 -xvf file.tar.bz2. Вышеупомянутый патч предоставляет возможность использования опции -j, при помощи которой распаковать архив bzip2 командой tar -xvfj file.tar.bz2. Применение данного патча будет рассмотрено далее, при установке пакета Tar.
Пояснения команд
make CC="gcc -static": Таким образом мы сообщаем gcc, что компиляция bzip2 должна быть выполнена с использованием статических ссылок.
Содержимое Bzip2
Последняя проверка: версия 1.0.2
Программы
bunzip2 (ссылка на bzip2), bzcat (ссылка на bzip2), bzcmp, bzdiff, bzegrep, bzfgrep, bzgrep, bzip2, bzip2recover, bzless и bzmore
Описания
bunzip2
bunzip2 распаковывает файлы, сжатые bzip2.
bzcat
bzcat (или bzip2 -dc) распаковывает указанные файлы на стандартный вывод.
bzcmp, bzdiff
bzcmp и bzdiff позволяют использовать cmp и diff для файлов, сжатых bzip2.
bzegrep, bzfgrep, bzgrep
bzegrep, bzfgrep, и bzgrep позволяют использовать egrep, fgrep, or grep для файлов, сжатых bzip2.
bzip2
bzip2 сжимает файлы, используя Burrows-Wheeler block sorting алгоритм сжатия текста и код Huffman. Сжатие, обычно: значительно лучше, чем достигаемое традиционными архиваторами, основанными на LZ77/LZ78, и достигает производительности PPM семейства статистических архиваторов.
bzip2recover
bzip2recover восстанавливает данные из поврежденных файлов bzip2.
bzless
bzless – подобный less фильтр, позволяющий поэкранный просмотр сжатых или текстовых файлов.