ostree_on_alt/acos-installer.sh

94 lines
2.9 KiB
Bash
Executable File
Raw 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.

#!/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