Я решил разобраться чем же принципиально отличается дистрибутив Salix от Slackware. А для этого решил разобраться, как собрать свой iso-образ. И ещё одна причина, это отсутствие до сих пор установочного образа для salix-15.0.
Начнем, делаю в реальном времени — результат не известен 🙂
Первое, что нужно это клонировать репозиторий:
git clone https://github.com/gapan/iso-creation
Далее переходит в клонированию папку и видим набор скриптов, которые нужно выполнить по порядку.
Первый скрипт 00-determineuser.sh проверит пользователя.
Второй 01-downloadpackages.sh ориентируясь на настройки в файле slapt-getrc.x86_64 загрузит пакеты в папку /var/slapt-get. В этом файле я исправил версию репозитория:
# The Slackware repository
SOURCE=file:///mnt/repos/x86_64/slackware-15.0/:OFFICIAL
SOURCE=file:///mnt/repos/x86_64/slackware-15.0/extra/:OFFICIAL
При выполнении скрипта загрузки пакетов будут заданы вопросы о версии, архитектуре и списке пакетов:
Это важный момент, т.к. позволит нам менять набор пакетов.
Списки пакетов находятся в папках:
И их можно отредактировать при необходимости.
После выполнения скрипта 03-createdep.sh создаются файлы зависимостей, с расширением .dep
Скрипт 04-md5andlist.sh создаст фаqлы md5-хешей и список пакетов iso/PACKAGELIST. По сути создаст репозиторий дистрибутива.
Скрипт 05-packagestxt.sh создает файлы описания пакета вида aaa_base-15.0-x86_64-1.txt.
Скрипт 06-cleanup.sh очищает временные папки.
В итоге мы получаем вот такую структуру файлов для сборки ISO-образа
Седьмой шаг 07-initrd.sh перепаковывает initrd. Т.е. распаковывает initrd от Slackware, копируют в него скрипты установки от Salix в папку /usr/lib/setup/. Тем самым заменяется процесс установки.
Для выполнения скрипта 07-initrd.sh мне пришлось заменить адрес репозиторий в скрипте и метод распаковки initrd:
#SLACKREPO=http://download.salixos.org/$arch/slackware-$VER
SLACKREPO=http://slackware.uk/salix/$arch/slackware-$VER
#gzip -dc < $CWD/initrd/$arch/slack-initrd.img | cpio -i
xz -dc < $CWD/initrd/$arch/slack-initrd.img | cpio -i
При выполнении скрипта я стал получать ошибке на шаге копирование сообщений для разных локаленй. Я отключил этот шаг:
# We need messages catalogs for available locales - Didier
install_messages_catalogs() {
echo "Installing messages catalogs"
for j in $(find po -name "*.po"); do
LocaleDir=`echo $j | sed "s|po/\(.*\)\.po|\1|"`
MO_DIR=/boot/initrd-tree/usr/share/locale/$LocaleDir/LC_MESSAGES
mkdir -p $MO_DIR
msgfmt --strict -c -v --statistics -o $MO_DIR/salix-installer.mo $j
chown root:root $MO_DIR/salix-installer.mo
chmod 644 $MO_DIR/salix-installer.mo
done
}
#install_messages_catalogs - закомментировал
После этого initrf наконец-то собрался
Unpacking slackware initrd...
193463 blocks
Replacing rc.d scripts...
Replacing setup scripts...
Installing spkg...
Installing dialog...
Installing xzdec ...
Installing gettext...
Installing terminus fonts...
Installing locale definitions
Installing nano and its dependency libmagic...
Tweaking config files...
Removing unnecessary stuff...
Repacking initrd...
253992 blocks
DONE!
Следующий скрипт 08-isolinux.sh — копирует isolinux.bin
cp /usr/share/syslinux/isolinux.bin isolinux/$arch
Далее идет скрипт 09-kernel.sh, который подготавливает ядро:
Скрипт 10-efi.sh создает необходимые данные для efi (я его пропустил).
Скрипт 11-secureboot.sh так же нужен для uefi (я его пропустил).
И вот последний скрипт99-createiso.sh, который и создает ISO-образ Salix.
Writing to 'stdio:../salix64-15.0-15.0.iso' completed successfully.
Неожиданно, но образ успешно собрался и заработал. Т.е. установка прошла успешно, но надо сказать SAlix не заработал. Связано это с тем, что я использовал списки пакетов от Salix 14.2, а репозиторий от 15.0. Ну и конечно не все необходимые пакеты были собраны в образ и установлены, на этапе запуска Salix были ошибки.
Тем не менее я считаю, что цель достигнута. Я разобрался, как работает сборка Salix, это главное для меня.