ostree_on_alt/alt_on_ostree.md

72 lines
3.9 KiB
Markdown
Raw Normal View History

# Установка 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
```