ostree_on_alt/alt_on_ostree.md

118 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Установка ALT Linux в ostree
Для установки достаточно раздела 2ГБ.
Сборка архива корневой файловой системы
```
git clone https://gitea.basealt.ru/keremet/mkimage-profiles
cd mkimage-profiles
mkdir ~/out
make vm/acos.tar
cd -
```
Создание ветки в репозитории ostree
```
mkdir root
sudo tar xf out/acos-latest-x86_64.tar -C root/ --exclude=./dev/tty --exclude=./dev/tty0 --exclude=./dev/console --exclude=./dev/urandom --exclude=./dev/random --exclude=./dev/full --exclude=./dev/zero --exclude=/dev/null --exclude=./dev/pts/ptmx --exclude=./dev/null
sudo chroot root/ systemctl enable ignition-firstboot-complete.service ostree-remount.service sshd docker
sudo sed -i 's/^LABEL=ROOT\t/LABEL=boot\t/g' root/etc/fstab
sudo sed -i 's/^AcceptEnv /#AcceptEnv /g' root/etc/openssh/sshd_config
sudo sed -i 's/^# WHEEL_USERS ALL=(ALL) ALL$/WHEEL_USERS ALL=(ALL) ALL/g' root/etc/sudoers
sudo sed -i 's|^HOME=/home$|HOME=/var/home|g' root/etc/default/useradd
echo "blacklist floppy" | sudo tee root/etc/modprobe.d/blacklist-floppy.conf
sudo mkdir root/sysroot
sudo ln -s sysroot/ostree root/ostree
sudo mv root/home root/opt root/srv root/mnt root/var/
sudo mv root/root root/var/roothome
sudo mv root/usr/local root/var/usrlocal
sudo ln -s var/home root/home
sudo ln -s var/opt root/opt
sudo ln -s var/srv root/srv
sudo ln -s var/roothome root/root
sudo ln -s ../var/usrlocal root/usr/local
sudo ln -s var/mnt root/mnt
sudo chroot root/ chgrp wheel /usr/bin/sudo /bin/su
sudo chroot root/ chmod 710 /usr/bin/sudo /bin/su
sudo chroot root/ chmod ug+s /usr/bin/sudo /bin/su
KERNEL=`sudo find root/boot/ -type f -name "vmlinuz-*"`
SHA=`sudo sha256sum "$KERNEL" | awk '{print $1;}'`
sudo mv "$KERNEL" "$KERNEL-$SHA"
sudo rm -f root/boot/vmlinuz
sudo rm -f root/boot/initrd*
cat <<EOF > /tmp/ostree.conf
d /run/ostree 0755 root root -
f /run/ostree/initramfs-mount-var 0755 root root -
EOF
sudo cp /tmp/ostree.conf root/
sudo chroot root/ dracut --reproducible --gzip -v --add ignition --add ostree -f /boot/initramfs-$SHA --include /ostree.conf /etc/tmpfiles.d/ostree.conf --no-hostonly --omit-drivers=floppy --omit=nfs --omit=lvm --omit=iscsi --kver `ls root/lib/modules`
sudo rm -f root/ostree.conf
sudo rm -rf root/usr/etc
sudo mv root/etc root/usr/etc
sudo mv root/var ./var
sudo mkdir root/var
ostree init --repo=repo --mode=archive
sudo ostree commit --repo=repo --tree=dir=root -b alt/x86_64/coreos/stable --no-xattrs --no-bindings --parent=none --mode-ro-executables --add-metadata-string=version=sisyphus.`date +%Y%m%d`.0.0
```
Последняя команда выдаст хеш коммита. На коммит можно ссылаться по этому хешу или по имени ветки (параметр -b).
На диске, на который выполняется установка (в данном примере /dev/sdb) создать файловую систему и минимальный набор каталогов для ostree. Метка boot нужна для поиска раздела в ignition.
```
DEVICE=/dev/sdb
sudo parted $DEVICE mktable msdos
sudo parted -a optimal $DEVICE mkpart primary ext4 2MIB 100%
sudo parted $DEVICE set 1 boot on
sudo mkfs.ext4 -L boot "$DEVICE"1
sudo mkdir /tmp/acos
sudo mount "$DEVICE"1 /tmp/acos
sudo ostree admin init-fs --modern /tmp/acos
```
Установить GRUB
```
sudo grub-install --root-directory=/tmp/acos $DEVICE
sudo ln -s ../loader/grub.cfg /tmp/acos/boot/grub/grub.cfg
```
Выполнить развертывание операционной системы из репозитория ostree.
```
sudo ostree pull-local --repo /tmp/acos/ostree/repo /home/keremet/repo alt/x86_64/coreos/stable
sudo ostree config --repo /tmp/acos/ostree/repo set sysroot.bootloader grub2
sudo ostree refs --repo /tmp/acos/ostree/repo --create alt:alt/x86_64/coreos/stable alt/x86_64/coreos/stable
sudo ostree admin os-init alt-coreos --sysroot /tmp/acos
OSTREE_BOOT_PARTITION="/boot" sudo ostree admin deploy alt:alt/x86_64/coreos/stable --sysroot /tmp/acos --os alt-coreos --karg-append=ignition.platform.id=metal --karg-append=\$ignition_firstboot --karg-append=quiet --karg-append=root=UUID=`sudo blkid --match-tag UUID -o value "$DEVICE"1`
sudo rm -r /tmp/acos/ostree/deploy/alt-coreos/var
sudo mv var /tmp/acos/ostree/deploy/alt-coreos/var
sudo touch /tmp/acos/ostree/deploy/alt-coreos/var/.ostree-selabeled
```
Установить пароль рута в новой системе
```
sudo chroot /tmp/acos/ostree/boot.1/alt-coreos/*/0/ passwd
```
Создать конфигурационные файлы ignition. config-net.ign - пример конфига, скачивающего другой конфиг. или можно не создавать файл, а добавить параметр --karg-append=ignition.config.url=http://31.184.254.102/tmp/example2.ign
```
sudo mkdir /tmp/acos/ignition
sudo cp config.ign /tmp/acos/ignition/
sudo touch /tmp/acos/boot/ignition.firstboot
```
-----------------------------------------
В случае каких-то ошибок для повтора инструкции можно восстановить исходное состояние
```
DEVICE=/dev/sdb
sudo rm -rf repo/ root/
sudo umount /tmp/acos
sudo rm -rf /tmp/acos
sudo dd if=/dev/zero of=$DEVICE bs=1M
```