17 янв. 2012 г.

ThinkPad X220 и установка Arch Linux + GPT + UEFI

Лог подготовки ноутбука к работе.

Обновить BIOS

Самый простой способ записи флешки для этого в [1]:
В Windows вместо dd можно использовать утилиту Image Writer for Windows [2].

Подготовить SSD к работе

Для X220 подходят только диски высотой 7 мм, поэтому чтобы установить SSD (Intel 320 series 80 GB), нужно снять сверху пластиковую рамку, увеличивающую высоту до 9,5 мм, комплектные винты придется заменить на М2х3 мм или М2х4 мм.
Надо узнать размер страницы flash-памяти, используемой в накопителе, и выровнять разделы по границам страниц. Рекомендуется использовать GPT вместо MBR. Для работы с таким способом разметки понадобится утилита gdisk или parted вместо стандартного fdisk [3].
Google говорит, что для моего диска нужно выравнить разделы по 8 KB (16384 сектора) [4].
Загрузка будет происходить в режиме UEFI-only, поэтому потребуется раздел >= 200 MB с FAT32 и установленным флагом boot [5].
Еще раз по шагам для чистого диска (все, кроме последнего пункта, я выполнял в parted):
  1. Создать новую GPT.
  2. Не забывая про выравнивание, создать первый раздел 200 MB для загрузчика.
  3. Выставить флаг boot для этого раздела (в parted команда set 1 boot on, 1 — номер раздела).
  4. Создать второй раздел для / .
  5. Создать третий раздел для /home .
  6. Выйти из parted и сделать ФС FAT32 на первом разделе: mkfs.vfat -F32 /dev/sda1 .

Приготовить загрузочную флешку

UEFI пришел на смену BIOS, X220 не исключение, надо как-то с этим жить. Для начала в BIOS (ну да, UEFI) Setup включить режим загрузки UEFI-only, чтобы не было соблазна загружаться в режиме совместимости. Есть 2 проблемы:
  1. Официальный установочный образ Арча включает только старый GRUB, который ни GPT, ни UEFI не поддерживает. Решение — неофициальный, но современный и прогрессивный проект Archboot [6].
  2. Archboot не грузится в UEFI-only после обычной записи с помощью dd. Нужно вручную ставить Syslinux на флешку и разархивировать ISO-образ Archboot на нее [7].

Установить базовую систему

Загружаемся с флешки, запускается скрипт установки. Делаем все по плану вплоть до установки загрузчика. В автоматическом режиме он устанавливаться не захотел, но хотя бы проинструктировал, что нужно делать дальше. Примечания по установке:
  • Не определилась WiFi-карта, хотя модули загружены. Поэтому в свободной консоли поднимаем сеть руками:
    ifconfig wlan0 up
    iwconfig wlan0 essid "YOUR_SSID"
    dhcpcd wlan0
    
  • Выбираем ручное монтирование разделов (раздел /dev/sda1 не переформатировать, потому что по умолчанию mkfs.vfat создает FAT16), монтируем /dev/sda1 => /boot/efi, /dev/sda2 => /, /dev/sda3 => /home. В Archboot корень устанавливаемой системы находится в /tmp/install.
  • Выбор пакетов, ставим grub загрузчиком, отмечаем группу base-devel.
    Добавляем пакеты:
    • curl — пригодится
    • hdparm — может пригодится для тонкой настройки\проверки диска
    • links — консольный браузер для тяжелых времен
    • pptpclient — для доступа к университетской VPN
    • openssh
    • rfkill — для управления wlan-карточкой
    • sqlite3 — много где используется, можно сразу поставить
    • sudo
    • wireless_tools
    Убираем ненужные пакеты:
    • cryptsetup — шифрование не надо
    • e2fsprogs — не нужны утилиты для этой ФС
    • grub — старый GRUB не поддерживает GPT, поэтому нужен GRUB2
    • heirloom-mailx — нет потребности работать с почтой в консоли
    • jfsutils — не нужны утилиты для этой ФС
    • lvm2 — не использовал и не собираюсь в ближайшем будущем
    • mdadm — RAID на ноутбуке не нужен
    • nano — есть vi
    • pcmciautils — нет таких устройств
    • reiserfsprogs — не нужны утилиты для этой ФС
    • xfsprogs — не нужны утилиты для этой ФС
  • Configure system.
    /etc/rc.conf:
    LOCALE="ru_RU.UTF-8"
    CONSOLEFONT=UniCyr_8x16
    
    HOSTNAME="vlap"
    
    еще убрать демон network из списка запускаемых, ему на смену все равно придет networkmanager.
  • в /etc/fstab добавить к обоим разделам опции (после defaults) noatime и discard — для SSD;
  • в /etc/locale.gen раскомментировать UTF-8 локали ru_RU и en_US;
  • в /etc/pacman.conf раскомментировать репозиторий multilib и добавить французский сервер с yaourt'ом и другими пакетами:
    [archlinuxfr]
    Server = http://repo.archlinux.fr/$arch
После этого выходим из установщика.

Установить GRUB2 [8]

  1. Подключаем модуль Device-mapper support
    modprobe dm-mod
  2. Делаем chroot в установленную систему, предварительно забиндив в будущий корень уже примонтированные системные каталоги:
    mount --bind /dev /tmp/install/dev
    mount --bind /proc /tmp/install/proc
    mount --bind /sys /tmp/install/sys
    chroot /tmp/install
    
  3. Устанавливаем пакет GRUB2 для UEFI:
    pacman-db-upgrade
    pacman -Syy
    pacman -S grub2-efi-x86_64
    
  4. Устанавливаем загрузчик в UEFI-раздел.
    grub_efi_x86_64-install --root-directory=/boot/efi --boot-directory=/boot/efi/efi --bootloader-id=grub --no-floppy --recheck --debug
    Хотя --boot-directory и указана как /boot/efi/efi, у меня создалась почему-то /boot/efi/EFI.
  5. Осталось только сгенерировать конфигурационный файл для GRUB2 и скопировать файл grubx64.efi в нужное место:
    grub-mkconfig -o /boot/efi/EFI/grub/grub.cfg
    cp /boot/efi/EFI/grub/grubx64.efi /boot/efi/EFI/boot/bootx64.efi
Можно загружаться в установленную систему.

Исправляем ошибку при загрузке GRUB2 error: no suitable mode found [8]

  1. Копируем шрифт:
    cp /usr/share/grub/unicode.pf2 /boot/efi/EFI/grub/
  2. Добавляем в /boot/efi/EFI/grub/grub.cfg строки:
    insmod efi_gop
    insmod efi_uga
    insmod font
    if loadfont ${prefix}/unicode.pf2
    then
        insmod gfxterm
        set gfxmode=auto
        set gfxpayload=keep
        terminal_output gfxterm
    fi
    

Источники

  1. Обновление BIOS ThinkPad X220 с использованием Linux http://www.floccinaucinihilipilification.net/blog/2011/10/2/updating-the-bios-of-a-thinkpad-x220-using-linux.html
  2. Загрузить Image Writer for Windows https://launchpad.net/win32-image-writer/+download
  3. Arch Wiki. SSD https://wiki.archlinux.org/index.php/SSD#Tips_for_Maximizing_SSD_Performance
  4. Тема о выравнивании для SSD 320 series на форуме Intel http://communities.intel.com/thread/22001
  5. Arch Wiki. Создание раздела для UEFI https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface#Create_an_UEFI_SYSTEM_PARTITION_in_Linux
  6. Arch Wiki. Archboot https://wiki.archlinux.org/index.php/Archboot
  7. Создание загрузочной флешки для режима UEFI-only https://gitorious.org/tianocore_uefi_duet_builds/pages/Linux_Windows_BIOS_UEFI_boot_USB
  8. Arch Wiki. GRUB2 https://wiki.archlinux.org/index.php/GRUB2

6 комментариев :

  1. cool story, bro :) бессонная ночь стоила того ;)

    ОтветитьУдалить
  2. Анонимный05.04.2012, 14:19

    Для того, чтобы загрузить Linux из UEFI, по-прежнему требуется раздел FAT32? :(

    ОтветитьУдалить
    Ответы
    1. Анонимный30.06.2012, 14:56

      Для того, чтобы загрузить что угодно из UEFI, нужен fat32-EFI SYSTEM PARTITION, в который ложатся бутлоудеры

      Удалить
  3. Анонимный05.04.2012, 16:31

    у X220 в bios можно переключиться на legacy

    ОтветитьУдалить
  4. Анонимный30.06.2012, 14:58

    Загрузил archboot с флешки в UEFI-режиме. Все нормально настраивалось, пока не дошло до установки пакетов. Сдыхает с мессагой:
    :: kmod and module-init-tools are in conflict и т.д.

    ОтветитьУдалить
    Ответы
    1. Анонимный07.07.2012, 23:37

      Наверное, надо было сначала руками удалять старый module-init-tools.

      Удалить