2021-08-13 15:07:57 +03:00
#!/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
2021-08-13 15:34:50 +03:00
cp $IGNITION_CONFIG $MOUNT_DIR /ignition/config.ign
2021-08-13 15:07:57 +03:00
touch $MOUNT_DIR /boot/ignition.firstboot
#Установить пароль рута в новой системе
echo
echo
echo
chroot $MOUNT_DIR /ostree/boot.1/$OS_NAME /*/0/ passwd