Установка Arch Linux
Сборку системы с нуля удобнее всего рассматривать на примере Arch Linux: мастер установки в нём отсутствует, и все действия, скрытые другими дистрибутивами за полосой прогресса, выполняются вручную.
Установка осуществляется на виртуальную машину в VirtualBox, где ошибки ничего не стоят, а результат воспроизводим. Сначала система собирается в режиме Legacy BIOS, затем рассматривается вариант с зеркальным RAID-массивом, собранным из двух дисков, а в конце машина переключается на UEFI и загрузчик перенастраивается.
Создание виртуальной машины
- В VirtualBox создаётся новая виртуальная машина.
- Вводится имя виртуальной машины, выбирается тип операционной системы Linux и версия Arch Linux (64-bit).
- Выделяется необходимое количество оперативной памяти (рекомендуется не менее 2 ГБ).
- Создаётся новый виртуальный жёсткий диск в формате VDI.
- Выделяется место на диске (рекомендуется не менее 20 ГБ).
- В настройках виртуальной машины выбирается Legacy BIOS (или SeaBIOS).
- Подключается ISO образ Arch Linux.
Установка Arch Linux с использованием Legacy BIOS
Последовательность действий, повторяющаяся у любого дистрибутива, включает разметку диска, создание файловых систем на разделах, их монтирование в нужном порядке, распаковку базовой системы, вход в неё и установку загрузчика.
-
Запустим виртуальную машину и загрузимся с ISO образа Arch Linux.
-
С помощью
cfdiskвыполним разметку диска (/dev/sda). Выберем таблицу разделов GPT и создадим три раздела:/dev/sda1: 1M, тип BIOS boot (кодEF02)/dev/sda2: 1G, тип EFI System (кодEF00), то есть ESP/dev/sda3: остальное пространство для корневой файловой системы
Первый раздел выглядит лишним, однако является обязательным. На диске с MBR GRUB размещает свою вторую ступень в промежутке, оставленном после загрузочной записи, а на GPT такого промежутка нет, и
grub-install --target=i386-pcоткажется работать с сообщением «embedding is not possible». В раздел BIOS boot GRUB и записывает вторую ступень; файловая система на нём не создаётся, он остаётся неразмеченным.Второй раздел на этом этапе не потребуется: при загрузке через BIOS прошивка не имеет представления об ESP. Он заведён на будущее: в конце главы эта машина будет переключена на UEFI, и переразмечать диск не придётся.
-
Создадим файловую систему на ESP разделе.
mkfs.fat -F32 /dev/sda2 -
Создадим файловую систему на корневом разделе.
mkfs.ext4 /dev/sda3 -
Смонтируем корневую файловую систему.
mount /dev/sda3 /mnt -
Создадим точку монтирования и смонтируем ESP.
mkdir /mnt/boot mount /dev/sda2 /mnt/boot -
Установим базовую систему.
pacstrap /mnt base linux linux-firmware -
Сгенерируем файл fstab.
genfstab -U /mnt >> /mnt/etc/fstab -
Перейдём в новую систему. Команда
arch-chrootподменяет корень файловой системы на/mnt, после чего все команды выполняются так, как если бы загрузка уже была произведена в устанавливаемую систему. Механика подмены корня рассматривается в главе про внутреннее устройство Linux.arch-chroot /mnt -
Установим загрузчик GRUB.
pacman -S grub grub-install --target=i386-pc /dev/sda grub-mkconfig -o /boot/grub/grub.cfg -
Установим пароль root.
passwd -
Выйдем из chroot-окружения и размонтируем файловые системы.
exit umount -R /mnt reboot
Установка Arch Linux на RAID1
Последовательность та же, но на зеркале из двух дисков. Отличий два: массив необходимо собрать до создания файловой системы, а initramfs — научить этот массив находить, иначе при первой же загрузке система не найдёт корень.
-
Добавим виртуальной машине второй диск такого же размера и загрузимся с установочного образа Arch Linux.
-
Подготовим диски.
cfdisk /dev/sda cfdisk /dev/sdbНа каждом диске выберем таблицу GPT и создадим два раздела:
/dev/sda1размером 1M с типом BIOS boot (EF02) и/dev/sda2на всё остальное с типом Linux RAID (FD00); то же самое на/dev/sdb. Раздел BIOS boot необходим по той же причине, что и в предыдущем разделе, причём на обоих дисках, иначе после отказа первого диска машина со второго не загрузится. -
Создадим RAID1 массив.
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2 -
Отформатируем RAID-массив.
mkfs.ext4 /dev/md0 -
Смонтируем файловую систему.
mount /dev/md0 /mnt -
Установим базовую систему.
pacstrap /mnt base linux linux-firmware mdadm -
Сгенерируем fstab.
genfstab -U /mnt >> /mnt/etc/fstab -
Выполним chroot в новую систему.
arch-chroot /mnt -
Настроим mdadm.
mdadm --detail --scan >> /etc/mdadm.conf -
Настроим mkinitcpio:
В файле
/etc/mkinitcpio.confнеобходимо добавитьmdadm_udevв списокHOOKS, обязательно раньшеfilesystems, иначе к моменту монтирования корня массив ещё не будет собран.HOOKS=(base udev autodetect modconf block mdadm_udev filesystems keyboard fsck) -
Пересоберём начальный RAM-диск.
mkinitcpio -P -
Установим GRUB.
pacman -S grub -
Установим GRUB на оба диска.
grub-install --target=i386-pc /dev/sda grub-install --target=i386-pc /dev/sdb -
Создадим конфигурацию GRUB.
grub-mkconfig -o /boot/grub/grub.cfg -
Перезагрузим систему.
exit umount -R /mnt reboot
Работоспособность зеркала проверяется сразу: выключить машину, отсоединить один диск, убедиться, что система загружается, затем вернуть его на место и повторить проверку со вторым диском.
Переключение на UEFI и настройка загрузчика
Вернёмся к машине из первой установки, размеченной на sda1, sda2 и sda3: EFI-раздел там уже заведён. Зеркало из предыдущего раздела для этого шага не подходит, поскольку ESP в нём отсутствует; связка RAID1 с UEFI собирается самостоятельно в задании.
Переустанавливать систему не потребуется: UEFI отличается от BIOS только тем, где расположен загрузчик и как прошивка его находит, поэтому достаточно разместить .efi-файл на EFI-разделе и зарегистрировать запись в NVRAM.
-
Остановим виртуальную машину.
-
В настройках виртуальной машины изменим BIOS на UEFI.
-
Запустим виртуальную машину и загрузимся с ISO образа Arch Linux.
-
Смонтируем корневую файловую систему и ESP.
mount /dev/sda3 /mnt mount /dev/sda2 /mnt/boot arch-chroot /mnt -
Установим пакеты, необходимые для загрузки с UEFI.
pacman -S grub efibootmgr dosfstools os-prober mtools -
Установим загрузчик GRUB с поддержкой UEFI.
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB grub-mkconfig -o /boot/grub/grub.cfg efibootmgr -v
В выводе efibootmgr -v должна появиться запись GRUB. Если она отсутствует, необходимо убедиться, что раздел с .efi-файлом смонтирован в /boot и отформатирован в FAT32.
Задание. Установка повторяется самостоятельно, но с зеркалированием диска и загрузкой через UEFI: «Установка Arch Linux вручную с RAID1 и UEFI».