busybox
Объединяет крошечные версии многих распространённых утилит UNIX в один небольшой двоичный файл (1-2 Мбайт). Он заменяет большинство утилит, которые обычно находятся в GNU Coreutils, GNU Findutils и т.д.
- Версия: 1.36.1
- Домашняя страница: https://www.busybox.net
- Время сборки: 0.3 ОВС
Настройка
Процесс настройки пакета
busybox
схож с процессом настройки ядра Linux. Параметры сборки записываются в файл.config
. Можно сконфигурировать сборку в псевдографическом режиме (make menuconfig
), а можно использовать стандартный конфиг (make defconfig
). Вы можете сохранить файл.config
для того, чтобы в будущем (в случае пересборки этой версии BusyBox или в случае сборки новой версии этого пакета) не конфигурировать пакет вновь.
Убедитесь, что дерево исходного кода BusyBox чистое и не содержит лишних файлов:
make mrproper
Далее требуется настроить пакет BusyBox, выбрав те опции, которые вам нужны, и убрать то, что вам не требуется. В зависимости от числа выбранных опций зависит в том числе и размер вашей системы, однако BusyBox — вещь довольно минималистичная, и на размер системы влияет больше ядро Linux, его модули и файлы Device Tree.
make ARCH=arm64 menuconfig
Процесс настройки
В разделах Archival Utilities
, Coreutils
, Console Utilities
, Debian Utilities
, klibc-utils
, Editors
и т.д. выберите сборку программ и утилит в зависимости от того, в каких сценариях должна использоваться ваша система LFA, а также в зависимости от её конечного размера. Конечно, на её размер куда больше будут влиять ядро и файлы, необходимые для загрузки системы, но инструкции по уменьшению размера, к примеру, ядра Linux, ищите сами на просторах интернета.
Система инициализации
Поскольку чуть позже мы установим в LFA загрузочные скрипты, нам требуется система инициализации, которая эти скрипты будет исполнять. Для этого компилируйте BusyBox с поддержкой init
, halt
, poweroff
, reboot
. Кроме того, вам нужны программы getty
и login
.
Init Utilities --->
<*> halt [CONFIG_HALT]
<*> poweroff [CONFIG_POWEROFF]
<*> reboot [CONFIG_REBOOT]
<*> init [CONFIG_INIT]
Login/Password Management Utilities --->
<*> getty [CONFIG_GETTY]
<*> login [CONFIG_LOGIN]
mdev
В данном руководстве рекомендуется использовать mdev
для динамического управления устройствами в директории /dev
. Включите следующие опции:
Linux System Utilities --->
<*> mdev [CONFIG_MDEV]
<*> Support /etc/mdev.conf [CONFIG_FEATURE_MDEV_CONF]
<*> Support loading of firmware [CONFIG_FEATURE_MDEV_LOAD_FIRMWARE]
<*> Support daemon mode [CONFIG_FEATURE_MDEV_DAEMON]
Отключение опций
После конфигурирования вам нужно отлючить ряд возможностей, с которыми мы не смогли бы корректно собрать этот пакет.
Во-первых, отключите сборку ifplugd
и inetd
, поскольку их сборка вместе с musl
имеет проблемы:
sed -i 's/\(CONFIG_\)\(.*\)\(INETD\)\(.*\)=y/# \1\2\3\4 is not set/g' .config
sed -i 's/\(CONFIG_IFPLUGD\)=y/# \1 is not set/' .config
Отключите использование utmp
/wtmp
, поскольку musl
их не поддерживает:
sed -i 's/\(CONFIG_FEATURE_WTMP\)=y/# \1 is not set/' .config
sed -i 's/\(CONFIG_FEATURE_UTMP\)=y/# \1 is not set/' .config
Отключите использование ipsvd
для TCP и UDP, поскольку у него есть проблемы сборки вместе с musl
(аналогично inetd
):
sed -i 's/\(CONFIG_UDPSVD\)=y/# \1 is not set/' .config
sed -i 's/\(CONFIG_TCPSVD\)=y/# \1 is not set/' .config
Обычно в системах подобных LFA не требуются пакетные менеджеры типа того же dpkg
. К тому же, в BusyBox предоставляется достаточно «обрезанная» версия dpkg с некоторыми ограничениями. Да и подобных LFS руководствах (в том числе и в LFA) не рекомендуется использовать подобные пакетные менеджеры во избежание проблем и поломок системы. Если вам не нужен dpkg
, отключите его сборку, чем освободите около 73 Кб памяти:
sed -i 's/\(CONFIG_DPKG\)=y/# \1 is not set/' .config
sed -i 's/\(CONFIG_DPKG_DEB\)=y/# \1 is not set/' .config
Тоже самое сделайте и с версией пакетного менеджера rpm
:
sed -i 's/\(CONFIG_RPM\)=y/# \1 is not set/' .config
sed -i 's/\(CONFIG_RPM2CPIO\)=y/# \1 is not set/' .config
Сборка
make ARCH=arm64 CROSS_COMPILE=$LFA_TGT-
Установка
Установите пакет:
make ARCH=arm64 CROSS_COMPILE=$LFA_TGT- \
CONFIG_PREFIX=$LFA_SYS install
Заметьте, что BusyBox содержит множество программ, но все они объединены в один файл. Однако для удобства (чтобы, например, вводить не
busybox mv file1 file2
, а простоmv file1 file2
как в обычных системах) в каталогах$LFA_SYS/bin
и$LFA_SYS/sbin
создаются ссылки наbusybox
с именами программ, которые содержит этот пакет.
Если вы собираетесь собирать ядро с помощью модулей, вам нужно убедиться, что depmod.pl
доступен для выполнения на вашем хосте:
cp -v examples/depmod.pl $LFA/tools/bin
chmod -v 755 $LFA/tools/bin/depmod.pl
Содержимое пакета
- Установленные программы:
[
,[[
,arch
,ascii
,ash
,awk
,base32
,base64
,basename
,bc
,bunzip2
,busybox
и другие1
Описание компонентов
- Программы:
busybox
— реализация стандартных UNIX утилит.- все остальные — ссылки на
busybox
.
Набор установленного ПО зависит от того, какие настройки вы указывали при конфигурировании пакета.