2

Недавно я установил Ubuntu 15.10 (настольный компьютер) на зашифрованном RAID 1 и хочу рассказать, как этого добиться, поскольку он не работал «из коробки», и я не нашел никакого учебного пособия. Так что я хотел добиться Ubuntu, работающего на зашифрованном томе, который зеркально отображен на двух физических жестких дисках, работающих в конфигурации RAID 1.

1 ответ1

2

Большая фотография

Итак, давайте начнем с изображения того, как выглядит результат:

Основная стратегия

Итак, шаги по настройке системы, подобные этой, следующие:

  1. Создайте карту памяти Live-USB
  2. Загрузите Live-CD
  3. Подготовьте RAID (используется mdadm)
  4. Подготовьте зашифрованный контейнер (используется luks)
  5. Установите Ubuntu через установщик (к сожалению, не поддерживает эту настройку из коробки)
  6. Переключиться на целевую систему через chroot
  7. Исправить mdadm-установку (не устанавливается автоматически при установке на рейд)
  8. Исправить crypttab (не устанавливается автоматически при установке на зашифрованный том)
  9. Исправить личинку (при необходимости)
  10. перезагружать

Шаг за шагом

Итак, я проведу вас через эти шаги:

  1. Создайте карту Live-USB Stick по адресу http://releases.ubuntu.com/15.10/ubuntu-15.10-desktop-amd64.iso (или любой другой архитектуре, если применимо)

  2. Загрузите 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)"
  1. Установите Ubuntu через установщик (рекомендуется не устанавливать обновления при установке, поэтому в случае ошибки вы не будете ждать без необходимости)

  2. Переключитесь на целевую систему через 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
  1. перезагружать

Вы можете адаптировать любые размеры скриптов к вашим потребностям. Сохраните и извините их, чтобы сократить необходимое время.

Кстати, спасибо хорошему другу за помощь, когда я действительно застрял.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .