Недавно я установил Ubuntu 15.10 (настольный компьютер) на зашифрованном RAID 1 и хочу рассказать, как этого добиться, поскольку он не работал «из коробки», и я не нашел никакого учебного пособия. Так что я хотел добиться Ubuntu, работающего на зашифрованном томе, который зеркально отображен на двух физических жестких дисках, работающих в конфигурации RAID 1.
1 ответ
Большая фотография
Итак, давайте начнем с изображения того, как выглядит результат:
Основная стратегия
Итак, шаги по настройке системы, подобные этой, следующие:
- Создайте карту памяти 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
- перезагружать
Вы можете адаптировать любые размеры скриптов к вашим потребностям. Сохраните и извините их, чтобы сократить необходимое время.
Кстати, спасибо хорошему другу за помощь, когда я действительно застрял.