Установка Arch Linux

Сборку системы с нуля удобнее всего рассматривать на примере Arch Linux: мастер установки в нём отсутствует, и все действия, скрытые другими дистрибутивами за полосой прогресса, выполняются вручную.

Установка осуществляется на виртуальную машину в VirtualBox, где ошибки ничего не стоят, а результат воспроизводим. Сначала система собирается в режиме Legacy BIOS, затем рассматривается вариант с зеркальным RAID-массивом, собранным из двух дисков, а в конце машина переключается на UEFI и загрузчик перенастраивается.

Создание виртуальной машины

  1. В VirtualBox создаётся новая виртуальная машина.
  2. Вводится имя виртуальной машины, выбирается тип операционной системы Linux и версия Arch Linux (64-bit).
  3. Выделяется необходимое количество оперативной памяти (рекомендуется не менее 2 ГБ).
  4. Создаётся новый виртуальный жёсткий диск в формате VDI.
  5. Выделяется место на диске (рекомендуется не менее 20 ГБ).
  6. В настройках виртуальной машины выбирается Legacy BIOS (или SeaBIOS).
  7. Подключается ISO образ Arch Linux.

Установка Arch Linux с использованием Legacy BIOS

Последовательность действий, повторяющаяся у любого дистрибутива, включает разметку диска, создание файловых систем на разделах, их монтирование в нужном порядке, распаковку базовой системы, вход в неё и установку загрузчика.

  1. Запустим виртуальную машину и загрузимся с ISO образа Arch Linux.

  2. С помощью 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, и переразмечать диск не придётся.

  3. Создадим файловую систему на ESP разделе.

    mkfs.fat -F32 /dev/sda2
    
  4. Создадим файловую систему на корневом разделе.

    mkfs.ext4 /dev/sda3
    
  5. Смонтируем корневую файловую систему.

    mount /dev/sda3 /mnt
    
  6. Создадим точку монтирования и смонтируем ESP.

    mkdir /mnt/boot
    mount /dev/sda2 /mnt/boot
    
  7. Установим базовую систему.

    pacstrap /mnt base linux linux-firmware
    
  8. Сгенерируем файл fstab.

    genfstab -U /mnt >> /mnt/etc/fstab
    
  9. Перейдём в новую систему. Команда arch-chroot подменяет корень файловой системы на /mnt, после чего все команды выполняются так, как если бы загрузка уже была произведена в устанавливаемую систему. Механика подмены корня рассматривается в главе про внутреннее устройство Linux.

    arch-chroot /mnt
    
  10. Установим загрузчик GRUB.

    pacman -S grub
    grub-install --target=i386-pc /dev/sda
    grub-mkconfig -o /boot/grub/grub.cfg
    
  11. Установим пароль root.

    passwd
    
  12. Выйдем из chroot-окружения и размонтируем файловые системы.

    exit
    umount -R /mnt
    reboot
    

Установка Arch Linux на RAID1

Последовательность та же, но на зеркале из двух дисков. Отличий два: массив необходимо собрать до создания файловой системы, а initramfs — научить этот массив находить, иначе при первой же загрузке система не найдёт корень.

  1. Добавим виртуальной машине второй диск такого же размера и загрузимся с установочного образа Arch Linux.

  2. Подготовим диски.

    cfdisk /dev/sda
    cfdisk /dev/sdb
    

    На каждом диске выберем таблицу GPT и создадим два раздела: /dev/sda1 размером 1M с типом BIOS boot (EF02) и /dev/sda2 на всё остальное с типом Linux RAID (FD00); то же самое на /dev/sdb. Раздел BIOS boot необходим по той же причине, что и в предыдущем разделе, причём на обоих дисках, иначе после отказа первого диска машина со второго не загрузится.

  3. Создадим RAID1 массив.

    mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
    
  4. Отформатируем RAID-массив.

    mkfs.ext4 /dev/md0
    
  5. Смонтируем файловую систему.

    mount /dev/md0 /mnt
    
  6. Установим базовую систему.

    pacstrap /mnt base linux linux-firmware mdadm
    
  7. Сгенерируем fstab.

    genfstab -U /mnt >> /mnt/etc/fstab
    
  8. Выполним chroot в новую систему.

    arch-chroot /mnt
    
  9. Настроим mdadm.

    mdadm --detail --scan >> /etc/mdadm.conf
    
  10. Настроим mkinitcpio:

    В файле /etc/mkinitcpio.conf необходимо добавить mdadm_udev в список HOOKS, обязательно раньше filesystems, иначе к моменту монтирования корня массив ещё не будет собран.

    HOOKS=(base udev autodetect modconf block mdadm_udev filesystems keyboard fsck)
    
  11. Пересоберём начальный RAM-диск.

    mkinitcpio -P
    
  12. Установим GRUB.

    pacman -S grub
    
  13. Установим GRUB на оба диска.

    grub-install --target=i386-pc /dev/sda
    grub-install --target=i386-pc /dev/sdb
    
  14. Создадим конфигурацию GRUB.

    grub-mkconfig -o /boot/grub/grub.cfg
    
  15. Перезагрузим систему.

    exit
    umount -R /mnt
    reboot
    

Работоспособность зеркала проверяется сразу: выключить машину, отсоединить один диск, убедиться, что система загружается, затем вернуть его на место и повторить проверку со вторым диском.

Переключение на UEFI и настройка загрузчика

Вернёмся к машине из первой установки, размеченной на sda1, sda2 и sda3: EFI-раздел там уже заведён. Зеркало из предыдущего раздела для этого шага не подходит, поскольку ESP в нём отсутствует; связка RAID1 с UEFI собирается самостоятельно в задании.

Переустанавливать систему не потребуется: UEFI отличается от BIOS только тем, где расположен загрузчик и как прошивка его находит, поэтому достаточно разместить .efi-файл на EFI-разделе и зарегистрировать запись в NVRAM.

  1. Остановим виртуальную машину.

  2. В настройках виртуальной машины изменим BIOS на UEFI.

  3. Запустим виртуальную машину и загрузимся с ISO образа Arch Linux.

  4. Смонтируем корневую файловую систему и ESP.

    mount /dev/sda3 /mnt
    mount /dev/sda2 /mnt/boot
    arch-chroot /mnt
    
  5. Установим пакеты, необходимые для загрузки с UEFI.

    pacman -S grub efibootmgr dosfstools os-prober mtools
    
  6. Установим загрузчик 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».