91 lines
4.1 KiB
Markdown
91 lines
4.1 KiB
Markdown
# Установка 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 sshd
|
||
sudo sed -i 's/^LABEL=ROOT\t/LABEL=boot\t/g' root/etc/fstab
|
||
echo "blacklist floppy" | sudo tee root/etc/modprobe.d/blacklist-floppy.conf
|
||
sudo mkdir root/sysroot
|
||
sudo ln -s sysroot/ostree root/ostree
|
||
sudo chroot root/ chown :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*
|
||
sudo chroot root/ dracut --reproducible --gzip -v --add ignition --add ostree -f /boot/initramfs-$SHA --no-hostonly --omit-drivers=floppy --omit=nfs --omit=lvm --omit=iscsi --kver `ls root/lib/modules`
|
||
|
||
sudo rm -rf root/usr/etc
|
||
sudo mv root/etc root/usr/etc
|
||
|
||
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 chroot /tmp/acos/ostree/boot.1/alt-coreos/*/0/ passwd
|
||
```
|
||
|
||
Создать конфигурационные файлы ignition
|
||
```
|
||
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
|
||
```
|