diff --git a/README.md b/README.md index 837dfc0..5d20041 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,4 @@ 1. Подготовка корневой файловой системы для коммита - можно сделать с помощью [mkimage-profiles](mkimage-profiles.md) 2. Подготовка корневой файловой системы [ostree](ostree_in_cosa.md) 3. [Установка](rootfs_install.md) - -Осталось разобраться как сделать так, чтобы ОС запускалась не из корневого каталога, а из произвольного, переданного параметром ядра ostree. То есть надо создать initrd, в котором обрабатывался бы этот параметр ядра. -Гипотеза: достаточно пересобрать ostree без "--without-dracut" и команде dracut передать "--add ostree" +4. [Установка ALT Linux в ostree](alt_on_ostree.md) diff --git a/alt_on_ostree.md b/alt_on_ostree.md new file mode 100644 index 0000000..43f0a51 --- /dev/null +++ b/alt_on_ostree.md @@ -0,0 +1,71 @@ +# Установка ALT Linux в ostree + +Для установки достаточно раздела 1ГБ. Когда ostree обновиться в репозитории можно будет заменить "libostree-2020.8-alt2.x86_64.rpm ostree-2020.8-alt2.x86_64.rpm" на ostree + +``` +git clone git://git.altlinux.org/gears/m/mkimage-profiles.git +cd mkimage-profiles +make vm/bare.tar +cp $TMP/out/bare-20210702-x86_64.tar ./ +ostree init --repo=repo --mode=archive +mkdir root +tar xf bare-20210702-x86_64.tar -C root/ +mkdir root/sysroot +ln -s sysroot/ostree root/ostree +rm -f root/dev/null root/dev/pts/ptmx root/dev/console rm root/dev/full root/dev/random root/dev/tty root/dev/tty0 root/dev/urandom root/dev/zero +apt-get install -o "RPM::RootDir=$PWD/root" libostree-2020.8-alt2.x86_64.rpm ostree-2020.8-alt2.x86_64.rpm +ostree commit --repo=repo --tree=dir=root -b sokolov1 --owner-uid 0 --owner-gid 0 --no-xattrs --no-bindings --parent=none --mode-ro-executables --timestamp '2021-06-14 16:08:54 +0200' +``` + +Последняя команда выдаст хеш коммита. Его надо запомнить. Пусть он будет 7376008586f183d872a47b78ebc83ccc7e44349023b271506903c658c9778409 + +На диске, на который выполняется установка (в данном примере /dev/sdb) создать файловую систему и минимальный набор каталогов для ostree +``` +parted /dev/sdb mktable msdos +parted -a optimal /dev/sdb mkpart primary ext4 2MIB 100% +mkfs.ext4 -L ROOT /dev/sdb1 +mkdir /tmp/sdb1 +mount /dev/sdb1 /tmp/sdb1 +ostree admin init-fs --modern /tmp/sdb1 +``` + +Выполнить развертывание операционной системы из репозитория ostree. Важно: заменить хэш коммита на свой +``` +ostree pull-local --repo /tmp/sdb1/ostree/repo /home/keremet/repo 7376008586f183d872a47b78ebc83ccc7e44349023b271506903c658c9778409 +ostree refs --repo /tmp/sdb1/ostree/repo --create altlinux:altlinux/x86_64/coreos/stable 7376008586f183d872a47b78ebc83ccc7e44349023b271506903c658c9778409 +ostree admin os-init alt-coreos --sysroot /tmp/sdb1 +ostree admin deploy altlinux:altlinux/x86_64/coreos/stable --sysroot /tmp/sdb1 --os alt-coreos +``` + +Последняя команда выдаст сообщение об ошибке (error: Failed to find kernel in /usr/lib/modules, /usr/lib/ostree-boot or /boot). Это сообщение можно игнорировать + +Установить GRUB +``` +grub-install --root-directory=/tmp/sdb1 /dev/sdb +``` + +Разместить ядро и initramfs в каталоге /boot новой системы. Важно: в initramfs должен быть модуль ostree +``` +cp /boot/vmlinuz /tmp/sdb1/boot/ +mkdir /tmp/dracut +dracut --reproducible --gzip -v --add ostree --tmpdir=/tmp/dracut -f /tmp/sdb1/boot/initrd.img --no-hostonly --omit=nfs --omit=lvm --omit=iscsi --kver `uname -r` +``` + +Создание заготовки конфига GRUB +``` +grub-mkconfig -o /tmp/sdb1/boot/grub/grub.cfg +``` + +Редактирование /tmp/sdb1/boot/grub/grub.cfg (UUID заменить на то, что выдаст blkid, добавить параметр ядра ostree=/ostree/boot/1, убрать параметр splash, добавить параметр fastboot, изменить название пункта меню (ALT CoreOS 0.0.1), оставить его один) + +Так как модуль ostree требует символическую ссылку, создать ее. Важно - скорректировать каталог (хэш), на который должна указывать ссылка +``` +mkdir /tmp/sdb1/ostree/boot +ln -s ../deploy/alt-coreos/deploy/7376008586f183d872a47b78ebc83ccc7e44349023b271506903c658c9778409.0/ /tmp/sdb1/ostree/boot/1 +``` + +Установить пароль рута в новой системе +``` +chroot /tmp/sdb1/ostree/boot/1 + passwd +```