Добавлено описание установки ALT Linux в ostree

This commit is contained in:
Андрей Соколов 2021-07-05 10:03:08 +03:00
parent ba8e2a1ac2
commit 6316341594
2 changed files with 72 additions and 3 deletions

View File

@ -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)

71
alt_on_ostree.md Normal file
View File

@ -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
```