Большая фотография
Итак, давайте начнем с изображения того, как выглядит результат:
Основная стратегия
Итак, шаги по настройке системы, подобные этой, следующие:
- Создайте карту памяти Live-USB
- Загрузите Live-CD
- Подготовьте RAID (используется mdadm)
- Подготовьте зашифрованный контейнер (используется luks)
- Установите Ubuntu через установщик (к сожалению, не поддерживает эту настройку из коробки)
- Переключиться на целевую систему через chroot
- Исправить mdadm-установку (не устанавливается автоматически при установке на рейд)
- Исправить crypttab (не устанавливается автоматически при установке на зашифрованный том)
- Исправить личинку (при необходимости)
- перезагружать
Шаг за шагом
Итак, я проведу вас через эти шаги:
Создайте карту Live-USB Stick по адресу http://releases.ubuntu.com/15.10/ubuntu-15.10-desktop-amd64.iso (или любой другой архитектуре, если применимо)
Загрузите live CD (не устанавливайте)
3./4. Запустите первый скрипт оболочки, который проведет вас через следующие шаги
- Подготовьте RAID
- Подготовьте зашифрованный контейнер
#!/bin/bash read -p "verify sda/sdb are the intended devices and other devices are unplugged" sudo apt-get install gparted mdadm read -p "create empty partitions for raid and also reserved bios gpt areas manually! Use gpt-partition tables in all steps, apply the following layout to both disks: 1MiB unformmated (bios_grub) (recommendation to leave 99MiB unallocated in case we need to do some nasty EFI stuff), remaining space unformatted partition" sudo gparted sudo parted /dev/sda set 1 raid on sudo parted /dev/sdb set 1 raid on read -p "verify non-bios partition is actual sda2 and sdb2" sudo mdadm --create /dev/md0 --auto md --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2 read -p "create boot partition and empty partition for encryption" sudo gparted sudo cryptsetup -c aes-xts-plain64 -s 512 -h sha512 luksFormat /dev/md0p2 sudo cryptsetup luksOpen /dev/md0p2 lukslvm sudo pvcreate /dev/mapper/lukslvm sudo vgcreate vgubuntu /dev/mapper/lukslvm sudo lvcreate -L 10G -n swap vgubuntu sudo lvcreate -L 100G -n root vgubuntu sudo lvcreate -l 100%FREE -n home vgubuntu sudo mkswap /dev/mapper/vgubuntu-swap -L swap sudo mkfs.ext4 /dev/mapper/vgubuntu-root -L root sudo mkfs.ext4 /dev/mapper/vgubuntu-home -L home echo "all done, start installation (and fix boot in chroot)"
Установите Ubuntu через установщик (рекомендуется не устанавливать обновления при установке, поэтому в случае ошибки вы не будете ждать без необходимости)
Переключитесь на целевую систему через chroot. Для этого откройте новое окно терминала cd в / media / ubuntu и подготовьте chroot с помощью следующего скрипта:
#!/bin/bash read -p "verify this script is called from /media/ubuntu/ and a subfolder is used as mountpoint for the chroot root filesystem named root" mkdir /media/ubuntu/root #umount /media/ubuntu/bootpart mount /dev/mapper/vgubuntu-root root mount /dev/md0p1 root/boot/ mount -o rbind /dev root/dev mount -t proc proc root/proc/ mount -t sysfs sys root/sys cp /etc/resolv.conf root/etc/resolv.conf echo "chroot setup, call 'sudo chroot /media/ubuntu/root /bin/bash' to chroot"
7./8./9. Используйте следующий скрипт в оболочке chroot (после вызова 'sudo chroot / media / ubunu / root / bin / bash') для:
- Исправить mdadm-установку
- Исправить crypttab
- Исправить личинку (при необходимости)
#!/bin/bash sudo apt-get update apt-get install emacs mdadm #read -p "the BIOS boot partition must be configured to be 1MiB, unformatted and having flag bios_grub" #sudo gparted grub-install /dev/sda echo "reading UUID of root device /dev/md0p2" blkid /dev/md0p2 read -p "edit crypttab add line 'lukslvm UUID=<VOLUME_ID> none luks'" emacs /etc/crypttab read -p "edit modules add line 'dm-crypt'" emacs /etc/modules update-initramfs -u -k all read -p "add 'kopt=root=/dev/mapper/vgubuntu-root' to 'GRUB_CMDLINE_LINUX_DEFAULT' in /etc/default/grub" emacs /etc/default/grub sudo update-grub
- перезагружать
Вы можете адаптировать любые размеры скриптов к вашим потребностям. Сохраните и извините их, чтобы сократить необходимое время.
Кстати, спасибо хорошему другу за помощь, когда я действительно застрял.