#!/bin/sh set -e if [ -z "$2" ] then echo "Справка: $0 <устройство для установки> <конфигурационный файл ignition>" echo "Пример: $0 /dev/sda config.ign" exit 1 fi DEVICE=$1 IGNITION_CONFIG=$2 BRANCH=alt/x86_64/containeros/stable OS_NAME=alt-containeros MOUNT_DIR=/tmp/acos REPO_LOCAL=$MOUNT_DIR/ostree/repo if [ ! -b $DEVICE ] then echo "Первый параметр должен быть именем блочного устройства" exit 1 fi if [ ! -f $IGNITION_CONFIG ] then echo "Второй параметр должен быть именем существующего файла" exit 1 fi if [ `id -u` -ne 0 ] then echo "Запуск скрипта $0 возможет только от пользователя root (uid=0)" exit 1 fi set +e mount|grep ^$DEVICE if [ "$?" -eq 0 ] then echo "Диск, на который выполняется установка, должен быть непримонтированным" exit 1 fi set -e parted $DEVICE print if [ "$?" -ne 0 ] then exit 1 fi read -p "Вы уверены, что хотите установить ACOS на данный диск (y/n)? " -n 1 -r echo if [[ ! $REPLY =~ ^[Yy]$ ]] then exit 1 fi #На диске, на который выполняется установка создать файловую систему. Метка boot нужна для поиска раздела в ignition. dd if=/dev/zero of=$DEVICE bs=1M count=3 parted $DEVICE mktable msdos 2>&1 | grep -v /etc/fstab parted -a optimal $DEVICE mkpart primary ext4 2MIB 100% 2>&1 | grep -v /etc/fstab parted $DEVICE set 1 boot on 2>&1 | grep -v /etc/fstab mkfs.ext4 -L boot "$DEVICE"1 mkdir $MOUNT_DIR mount "$DEVICE"1 $MOUNT_DIR tar xf acos_root.tar.xz -C $MOUNT_DIR grub-install --root-directory=$MOUNT_DIR $DEVICE ln -s ../loader/grub.cfg $MOUNT_DIR/boot/grub/grub.cfg ostree config --repo $REPO_LOCAL set sysroot.bootloader grub2 ostree refs --repo $REPO_LOCAL --create alt:$BRANCH $BRANCH ostree admin os-init $OS_NAME --sysroot $MOUNT_DIR OSTREE_BOOT_PARTITION="/boot" ostree admin deploy alt:$BRANCH --sysroot $MOUNT_DIR --os $OS_NAME \ --karg-append=ignition.platform.id=metal --karg-append=\$ignition_firstboot \ --karg-append=net.ifnames=0 --karg-append=biosdevname=0 \ --karg-append=quiet --karg-append=root=UUID=`blkid --match-tag UUID -o value "$DEVICE"1` rm -rf $MOUNT_DIR/ostree/deploy/$OS_NAME/var tar xf var.tar.xz -C $MOUNT_DIR/ostree/deploy/$OS_NAME/ touch $MOUNT_DIR/ostree/deploy/$OS_NAME/var/.ostree-selabeled #Создать конфигурационные файлы ignition mkdir $MOUNT_DIR/ignition cp $IGNITION_CONFIG $MOUNT_DIR/ignition/config.ign touch $MOUNT_DIR/boot/ignition.firstboot #Установить пароль рута в новой системе echo echo echo chroot $MOUNT_DIR/ostree/boot.1/$OS_NAME/*/0/ passwd