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