Linux From Scratch — Часть 1
Это первая статья из большой серии, в которых будет описываться процесс сборки собственного дистрибутива.
И так поехали...
Шаг 1. Для начала нам нужно подготовить диск или, скорее всего, раздел диска, на котором в конечном счете и будет находиться наша система. Как написано в книге, минимальные требования это 1.5 GB свободного места. Но если вы захотите и дальше расширят свою систему, то придется с болью на сердце отдать на неё около 3 GB или более.
Я не буду описывать процесс создания раздела, но скажу что это можно сделать с помощью таких консольных программ как cfdisk и fdisk. Первая предоставляет пользователю псевдо-графический интерфейс и более удобна в использовании в том случае, если вы никогда не пользовались подобными инструментами. Вторая управляется исключительно командами, но при этом имеет большую функциональность, которая, впрочем, нам пока не нужна. И на последок, не забывайте делать резервные копии важных данных!
И так, у нас имеется чистый раздел, и файл в папке /dev связанный с этим разделом, начинающийся с 'sd' (далее идет номер устройства (в виде буквы) и номер раздела).
Все дальнейшие действия делаются от root'а.
Теперь давайте создадим на нашем разделе файловую систему(ФС). Сейчас все пользуются ext3, которая является той же ext2 только с добавлением "журнала", что обеспечивает более устойчивую к сбоям работу...
... создаст нужную нам файловую систему на нашем разделе. Также если вы собираетесь использовать swap раздел, создайте на нем соответствуюшую ФС:
где <yyy> отведенный для swap раздел на диске.
Теперь создадим точку монтирования и смонтируем в неё основной раздел нашей будующей системы:
Если вы хотите отвести отдельный раздел например для /home создайте такую директорию в /mnt/lfs и смонтируйте туда нужный раздел, командой
После этого, зайдя туда вы обнаружите каталог lost+found не удаляйте его, он необходим для нормальной работы ФС.
Активируйте swap командой:
Большинство (если не все) ключей '-v' говорят команде выводить все совершаемые ею действия на экран
Шаг 2. Нам нужно создать необходимые каталоги и получить исходные коды программ.
Следующие команды создадут каталог /mnt/lfs/sources, в котором будут находиться все исходники, а также сделает так, чтобы только владелец файлов мог удалять их, даже если другие пользователи имеют право записи в неё.
Для скачивания исходников отлично подойдет wget(программа с консольным интерфейсом для скачивания файлов из интернета) c файлом wget-list из development версии книги, в котором содержится список всего необходимого. Всё это весит около 250 МБ. Также все необходимые пакеты можно найти на специальном LFS LiveCD, который содержит все необходимые средства и пакеты, но так как они немного устарели, перейдем в созданный каталог и скачаем исходники с помощью wget:
После скачивания создадим каталог /mnt/lfs/tools ...
... для сборки в нем базовых средств, с помощью которых в дальнейшем соберем все остальное (авторы книги хотят максимально снизить зависимость от основной системы). И создадим символическую ссылку на этот каталог из основной системы just for fun =) (чтобы было удобнее)
Шаг 3. Создадим пользователя/группу lfs и настроим окружение пользователя.
Первая команда создаст новую запись в файле /etc/group, в котором храниться информация о всех группах пользователей, присутствующих в системе. А вторая в файле /etc/passwd добавит запись о новом пользователе. Описание ключей (в порядке написания):
-s /bin/bash - говорит какая оболочка должна использоваться по-умолчанию.
-g lfs - указывает основную группу нового пользователя
-m - указывает, что нужно создать для пользователя домашний каталог в /home
-k /dev/null - предотвращает копирование каталога /skel со стандартным набором каталогов и файлов с настройками
lfs - имя нового пользователя
Задайте для нового пользователя пароль:
Смените владельца каталогов /tools и /sources на lfs:
При входе в систему первым что вы обычно видите это оболочка login, которая при запуске читает файлы /etc/profile и .bash_profile, находящийся в домашнем каталоге пользователя. Создадим файл .bash_profile:
При запуске этот файл очистит все переменные окружения, так как, по мнению разработчиков, они потенциально опасны, за исключением, HOME и TERM и немного изменит стандартное приглашение оболочки bash.
Также в домашнем каталоге нам нужен файл .bashrc, который при запуске читает оболочка bash. В него мы поместим некоторые необходимые нам в будующем переменные окружения:
"set +h" говорит bash отключит функцию запоминания местоположения команд, так что он всегда будет искать их в переменной PATH. Это нам очень полезно так, как мы постоянно будем собирать все новые средства.
"umask 022" дает нам гарантии, что все новые файлы будут созданы с правами доступа 644(так что все смогут их читать и выполнять, но не изменять), а каталоги с 744.
В заключение подключим только что созданный файл:
To be continue...
И так поехали...
Шаг 1. Для начала нам нужно подготовить диск или, скорее всего, раздел диска, на котором в конечном счете и будет находиться наша система. Как написано в книге, минимальные требования это 1.5 GB свободного места. Но если вы захотите и дальше расширят свою систему, то придется с болью на сердце отдать на неё около 3 GB или более.
Я не буду описывать процесс создания раздела, но скажу что это можно сделать с помощью таких консольных программ как cfdisk и fdisk. Первая предоставляет пользователю псевдо-графический интерфейс и более удобна в использовании в том случае, если вы никогда не пользовались подобными инструментами. Вторая управляется исключительно командами, но при этом имеет большую функциональность, которая, впрочем, нам пока не нужна. И на последок, не забывайте делать резервные копии важных данных!
И так, у нас имеется чистый раздел, и файл в папке /dev связанный с этим разделом, начинающийся с 'sd' (далее идет номер устройства (в виде буквы) и номер раздела).
Все дальнейшие действия делаются от root'а.
Теперь давайте создадим на нашем разделе файловую систему(ФС). Сейчас все пользуются ext3, которая является той же ext2 только с добавлением "журнала", что обеспечивает более устойчивую к сбоям работу...
$ mke2fs -jv /dev/<xxx>
... создаст нужную нам файловую систему на нашем разделе. Также если вы собираетесь использовать swap раздел, создайте на нем соответствуюшую ФС:
$ mkswap /dev/<yyy>
где <yyy> отведенный для swap раздел на диске.
Теперь создадим точку монтирования и смонтируем в неё основной раздел нашей будующей системы:
$ mkdir /mnt/lfs
$ mount -v -t ext3 /dev/<xxx> /mnt/lfs
Если вы хотите отвести отдельный раздел например для /home создайте такую директорию в /mnt/lfs и смонтируйте туда нужный раздел, командой
$ mount -v -t ext3 /dev/<ddd> /mnt/lfs/home
После этого, зайдя туда вы обнаружите каталог lost+found не удаляйте его, он необходим для нормальной работы ФС.
Активируйте swap командой:
$ /sbin/swapon -v /dev/<yyy>
Большинство (если не все) ключей '-v' говорят команде выводить все совершаемые ею действия на экран
Шаг 2. Нам нужно создать необходимые каталоги и получить исходные коды программ.
Следующие команды создадут каталог /mnt/lfs/sources, в котором будут находиться все исходники, а также сделает так, чтобы только владелец файлов мог удалять их, даже если другие пользователи имеют право записи в неё.
$ mkdir -v /mnt/lfs/sources
$ chmod -v a+wt /mnt/lfs/sources
Для скачивания исходников отлично подойдет wget(программа с консольным интерфейсом для скачивания файлов из интернета) c файлом wget-list из development версии книги, в котором содержится список всего необходимого. Всё это весит около 250 МБ. Также все необходимые пакеты можно найти на специальном LFS LiveCD, который содержит все необходимые средства и пакеты, но так как они немного устарели, перейдем в созданный каталог и скачаем исходники с помощью wget:
$ cd /mnt/lfs/sources
$ wget -c -i <путь_к_файлу_'wget-list'>
После скачивания создадим каталог /mnt/lfs/tools ...
$ mkdir /mnt/lfs/tools
... для сборки в нем базовых средств, с помощью которых в дальнейшем соберем все остальное (авторы книги хотят максимально снизить зависимость от основной системы). И создадим символическую ссылку на этот каталог из основной системы just for fun =) (чтобы было удобнее)
$ ln -sv /mnt/lfs/tools /
Шаг 3. Создадим пользователя/группу lfs и настроим окружение пользователя.
$ groupadd lfs
$ useradd -s /bin/bash -g lfs -m -k /dev/null lfs
Первая команда создаст новую запись в файле /etc/group, в котором храниться информация о всех группах пользователей, присутствующих в системе. А вторая в файле /etc/passwd добавит запись о новом пользователе. Описание ключей (в порядке написания):
-s /bin/bash - говорит какая оболочка должна использоваться по-умолчанию.
-g lfs - указывает основную группу нового пользователя
-m - указывает, что нужно создать для пользователя домашний каталог в /home
-k /dev/null - предотвращает копирование каталога /skel со стандартным набором каталогов и файлов с настройками
lfs - имя нового пользователя
Задайте для нового пользователя пароль:
$ passwd lfs
Смените владельца каталогов /tools и /sources на lfs:
$ chown -v lfs /mnt/lfs/tools
$ chown -v lfs /mnt/lfs/sources
... и зайдите в систему от его имени:
$ su - lfs
Ключ "-" сообщает, что нужно запустить новый экземпляр оболочки.При входе в систему первым что вы обычно видите это оболочка login, которая при запуске читает файлы /etc/profile и .bash_profile, находящийся в домашнем каталоге пользователя. Создадим файл .bash_profile:
1 2 3 |
cat > ~/.bash_profile << "EOF" > exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash > EOF |
Также в домашнем каталоге нам нужен файл .bashrc, который при запуске читает оболочка bash. В него мы поместим некоторые необходимые нам в будующем переменные окружения:
1 2 3 4 5 6 7 8 9 |
cat > ~/.bashrc << "EOF" > set +h > umask 022 > LFS=/mnt/lfs > LC_ALL=POSIX > LFS_TGT=$(uname -m)-lfs-linux-gnu > PATH=/tools/bin:/bin:/usr/bin > export LFS LC_ALL LFS_TGT PATH > EOF |
"umask 022" дает нам гарантии, что все новые файлы будут созданы с правами доступа 644(так что все смогут их читать и выполнять, но не изменять), а каталоги с 744.
В заключение подключим только что созданный файл:
source ~/.bash_profile
To be continue...