How-to`s — Linux From Scratch. Part1. Подготовка к установке
Данные статьи являются сокращённой вольной интерпретацией руководства LFS. Тут будет даваться перевод необходимых действий для сбора работоспособной ОС с нуля (from scratch) с некоторыми комментариями. Стоит отметить, что я буду делать некоторые действия, которые, возможно, Вам не понадобятся — например, я буду ставить систему в файл для удобного переноса на другой компьютер. И вообще, я собираю систему только для понимания, как это делать, так что для комфортной работы будущей системы понадобится несколько другая конфигурация (например, /sources рекомендуется делать несколько десятков гигабайт, так как там происходит сборка — у меня же этого нету)
Свежую версию руководства можно получить через svn
После этого можно его собрать в нужном виде и читать.
Пакеты для сборки можно скачать одним файлом отсюда. Подробнее стоит почитать тут.
Естественно, для того, чтобы делать то, что указано ниже, нужно обладать некоторыми знаниями. Самое главное — не копировать тупо команды, а понимать, что они делают и для чего это нужно, адаптируя к конкретной машине.
Это первая статья, которая описывает самый быстрый этап — подготовку к установке LFS.
Сначала нужно создать новый раздел для установки системы. Тестовая сборка LFS, как написано в рукодстве, занимает примерно от 650 Мбайт (32бит) до 710 Мбайт (64бит). Кроме того, потребуется место для сборки файлов. Я пока решил, что гигабайт трёх мне хватит, поэтому создал файл примерно на 3,1GB.
Дальнейшие операции выполнялись под рутом
Тут мы создаём в файле файловую систему ext3. mkfs ругнётся, что это не блочное устройство, на что мы ответим, что нам всё равно. Далее для удобства создадим переменную LFS, где будет храниться путь к точке монтирования нашего раздела с LFS, создадим такую директорию и примонтируем туда наш образ.
После этого создаём там папочку sources и присваиваем ему права 1777. Для чего нужна единичка в начале? Это так называемый sticky-bit. В результате у нас все могут писать в этот каталог, но удалять можно только те файлы, владельцем которого являешься.
Так как при установке будет собираться временная система, то создаётся специальный каталог /tools для того, чтобы потом отделять её от основной системы
В результате в системе-хосте появился каталог /tools. Это будет полезно при работе инструментов с хоста, чтобы собранные программы понимали, что они находятся в /tools, а не /mnt/lfs/tools.
Так как собирать систему под рутом не есть хорошая идея, есть смысл создать специального пользователя для данной цели.
В результате этих действий мы создаём пользователя, его каталог, назначаем ему шелл /bin/bash, запрещаем копирование из /etc/skel и добавляем его в группу lfs. Далее там всё логично — задаём пароль, делаем владельцем $LFS/tools и $LFS/sources и логинимся под ним.
Теперь настройка пользователя. Сначала сделаем так, чтобы все переменные окружения (кроме HOME, TERM, и PS1) были пустыми в целях безопасной и корректной сборки.
Далее настраиваем .bash
Сначала тут отключаем функцию хеширования bash, которая запоминает полный путь к программам, чего нам не нужно. Затем задаём umask, то есть новые созданные файлы буду иметь права 755, задаём переменную LFS, задаём локаль (в основном для совместимости с glibc < 2.2.4), задаём описание машины и PATH и делаем следующее.
Так как сейчас у многих несколько процессоров (ядер), то есть смысл указать make, что нужно работать в несколько потоков. Для двухъядерного процессора я указал, что нужно использовать 2 потока.
После этого можно приступать к сборке.
Свежую версию руководства можно получить через svn
svn co svn://svn.linuxfromscratch.org/LFS/trunk/BOOK/
После этого можно его собрать в нужном виде и читать.
Пакеты для сборки можно скачать одним файлом отсюда. Подробнее стоит почитать тут.
Естественно, для того, чтобы делать то, что указано ниже, нужно обладать некоторыми знаниями. Самое главное — не копировать тупо команды, а понимать, что они делают и для чего это нужно, адаптируя к конкретной машине.
Это первая статья, которая описывает самый быстрый этап — подготовку к установке LFS.
Сначала нужно создать новый раздел для установки системы. Тестовая сборка LFS, как написано в рукодстве, занимает примерно от 650 Мбайт (32бит) до 710 Мбайт (64бит). Кроме того, потребуется место для сборки файлов. Я пока решил, что гигабайт трёх мне хватит, поэтому создал файл примерно на 3,1GB.
dd if=/dev/zero of=/media/win_d/lfswelinux bs=100M count=30
Дальнейшие операции выполнялись под рутом
1 2 |
sudo -s |
Тут мы создаём в файле файловую систему ext3. mkfs ругнётся, что это не блочное устройство, на что мы ответим, что нам всё равно. Далее для удобства создадим переменную LFS, где будет храниться путь к точке монтирования нашего раздела с LFS, создадим такую директорию и примонтируем туда наш образ.
1 2 3 4 |
export LFS=/mnt/lfs |
После этого создаём там папочку sources и присваиваем ему права 1777. Для чего нужна единичка в начале? Это так называемый sticky-bit. В результате у нас все могут писать в этот каталог, но удалять можно только те файлы, владельцем которого являешься.
1 2 |
mkdir -v $LFS/sources |
Так как при установке будет собираться временная система, то создаётся специальный каталог /tools для того, чтобы потом отделять её от основной системы
1 2 |
mkdir -v $LFS/tools |
В результате в системе-хосте появился каталог /tools. Это будет полезно при работе инструментов с хоста, чтобы собранные программы понимали, что они находятся в /tools, а не /mnt/lfs/tools.
Так как собирать систему под рутом не есть хорошая идея, есть смысл создать специального пользователя для данной цели.
1 2 3 4 5 6 |
groupadd lfs |
В результате этих действий мы создаём пользователя, его каталог, назначаем ему шелл /bin/bash, запрещаем копирование из /etc/skel и добавляем его в группу lfs. Далее там всё логично — задаём пароль, делаем владельцем $LFS/tools и $LFS/sources и логинимся под ним.
Теперь настройка пользователя. Сначала сделаем так, чтобы все переменные окружения (кроме HOME, TERM, и PS1) были пустыми в целях безопасной и корректной сборки.
1 2 3 |
cat > ~/.bash_profile << "EOF" |
Далее настраиваем .bash
1 2 3 4 5 6 7 8 9 |
cat > ~/.bashrc << "EOF" |
Сначала тут отключаем функцию хеширования bash, которая запоминает полный путь к программам, чего нам не нужно. Затем задаём umask, то есть новые созданные файлы буду иметь права 755, задаём переменную LFS, задаём локаль (в основном для совместимости с glibc < 2.2.4), задаём описание машины и PATH и делаем следующее.
source ~/.bash_profile
Так как сейчас у многих несколько процессоров (ядер), то есть смысл указать make, что нужно работать в несколько потоков. Для двухъядерного процессора я указал, что нужно использовать 2 потока.
set MAKEFLAGS='-j 2'
После этого можно приступать к сборке.