Перейти к содержимому

Пошаговая установка Arch Linux. Ставим базовую систему

by на 12.12.2012

Эх, давно я не брал в руки напильник, но недавняя заметка в lifehacker.com подвигнула меня посмотреть, что есть Arch Linux образца конца света 2012 года. Признаюсь, что дистрибутив мне нравился, и много лун назад достаточно длительный период использовался в качестве десктопа дома. Итак, сегодня, дорогие красноглазые друзья, мы будем ставить базовую систему Arch Linux. Особое внимание уделено дисковой разметке, ибо для размещения корневого раздела, home и swap используется LVM. Чем хорош LVM и зачем оно надо, интересующиеся найдут в Интернетах.

Установка производится в виртуальную машину, сам процесс не отличается от установки на физическую машину с единственной оговоркой – т.к. размеры виртуального жесткого диска всего 8G, то при задании размеров разделов настоящего жесткого диска требуется включать мозг и указывать адекватные цифры для LVM.

Описание процесса установки категорически рекомендуется читать на wiki.archlinux.org, ибо там есть все. Приведенный ниже сценарий аккумулируют сведения wiki, домыслы автора и содержит некоторое количество принтскринов процесса.

Надеюсь, трудностей с получением дистрибутива не возникло, удалось загрузить live-систему и (о чудо!) сеть работает. С чего грузить live разницы нет, в моем случае был использован ipxe.iso, подсунутый в виртуальную машину. Охренев от Удивившись отсутствию /arch/setup, приступим к установке.

Разметка диска

Средства разметки диска fdisk и cfdisk

  1. Разметку диска производим следующим образом: создаем 2 раздела, в первый будет отдан под загрузочный раздел будущей системы /boot, на втором разделе для гибкости будем использовать менеджер логических дисков LVM.
    Разметка диска

    Разметка диска

  2. Просмотр текущей разметки:
    # fdisk –l
    fdisk

    fdisk

    В данном случае видно диск /dev/sda пустой. Остальные устройства /dev/mapper относятся к загруженной Live-системе.

  3. Запускаем программу для разметки диска cfdisk с указанием диска в качестве параметра:
    # cfdisk /dev/sda
    cfdisk

    cfdisk

  4. Создаем primary-partition для раздела загрузчика /boot нашей будущей системы размером 100M c помощью меню программы cfdisk: [New]/[Primary]/Size (in MB) – 100/[Beginning]/[Bootable]
    sda1

    sda1

  5. Аналогичным образом размечаем оставшееся место как primary-partition для всего остального, при этом изменяем тип с помощью меню [Type] на 8E, т.е. Linux LVM
    sda2

    sda2

  6. Записываем изменения на диск с помощью меню [write] и выходим из cfdisk [Quit]

LVM

  1. Создаем Physical Volume (PV)
    # pvcreate /dev/sda2
  2. Проверяем, что PV появился:
    # pvdisplay
  3. Создаем Volume Group (VG) с понятным именем (например, Storage1) на только что созданном PV:
    # vgcreate Storage1 /dev/sda2
    Если сопоставить LVM с классическим способом разметки, то VG представляется неким жестким диском. Я предпочитаю использовать термин «Storage» — хранилище, если по-русски.
  4. Создаем Logical Volume (LV) с именем rootvol и емкостью 6G для корневого раздела на VG Storage1:
    # lvcreate –L 6G Storage1 –n rootvol
  5. Создаем Logical Volume (LV) с именем swapvol и емкостью 512M для swap на VG Storage1:
    # lvcreate –C y –L 512M Storage1 –n swapvol
    Здесь используется дополнительный параметр –C y, который создает непрерывный LV.
  6. Создаем Logical Volume (LV) с именем homevol для home на VG Storage1, отдаем под него все оставшееся свободное место:
    # lvcreate –l +100%FREE Storage1 –n homevol
  7. Проверяем результат:
    # lvdisplay
    lvdisplay

    lvdisplay

  8. Активируем LVM:
    # modprobe dm-mod
    # vgscan
    # vgchange –ay

Файловые системы

  1. Создаем файловые системы (форматируем разделы). Для /boot журналирование не требуется, поэтому ext2 достаточно, для всех остальных — ext4, ну и swap
    # mkfs.ext4 /dev/Storage1/rootvol
    # mkfs.ext2 /dev/sda1
    # mkfs.ext4 /dev/Storage1/homevol
    # mkswap /dev/Storage1/swapvol
  2. Монтируем файловые системы в каталог /mnt загруженной live-системы. Включаем swap.
    # mount /dev/Storage1/rootvol /mnt
    # mkdir /mnt/boot && mount /dev/sda1 /mnt/boot
    # mkdir /mnt/home && mount /dev/Storage1/homevol /mnt/home
    # swapon /dev/Storage1/swap
  3. Проверяем, что все хорошо:
    # mount | grep \/mnt

В LVM запись /dev/mapper/Storage1-rootvol равнозначна записи /dev/Storage1/rootvol.

Базовая система

Установка пакетов

Все предельно просто:
# pacstrap /mnt base base-devel
Лицезрим бегущие проценты и ждем. Чтобы не впасть в транс, самое время пойти выпить чайку, например.

Установка

Установка

Начальная конфигурация системы

  1. Генерируем fstab для установленной системы на основе смонтированных разделов:
    # genfstab -p /mnt >> /mnt/etc/fstab
  2. Изменяем корневой каталог для установленной системы:
    # arch-chroot /mnt
  3. Настройки локализации времени:
    # ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
  4. Для настройки локали раскомментируем строчки en_US.UTF-8 и ru_RU.UTF-8 в /etc/locale.gen и сгенерируем командой:
    # locale-gen
  5. Включаем поддержку русского языка в консоли, подключив желаемый шрифт из /usr/share/kbd/consolefonts/
    # echo FONT=cyr-sun16 > /etc/vconsole.conf
    и задаем смену раскладки Ctrl+Alt, определив параметр KEYMAP из /usr/share/kbd/keymaps/i386/qwerty/ru/
    # echo KEYMAP=ru >> /etc/vconsole.conf
    или по Caps Lock (люто удобно, гарантирую это):
    # echo KEYMAP=ruwin_cplk-UTF-8 >> /etc/vconsole.conf

    Notabene: Если в дальнейшем после перезагрузки установленной системы при попытке смены раскладки вместо русских букв отображаются геометрические фигуры в виде равносторонних прямоугольников/равнодиагональных ромбов или фракталов, то необходимо провести дополнительный Сеанс Укрощения Консоли. А так же попробовать задать вопросы бывалым укротителям, обитающим в этой ветке.

  6. Включаем поддержку LVM в /etc/mkinitcpio.conf и до кучи нормальное выключение
    было:
    HOOKS="base udev autodetect pata scsi sata filesystems usbinput fsck"
    стало:
    HOOKS="base udev autodetect pata scsi sata filesystems usbinput fsck lvm2 shutdown"
    Создаем RAM-диск для загрузки
    # mkinitcpio -p linux
  7. Настраиваем загрузчик. В нашем случае раздел /boot не использует LVM, поэтому по идее можно использовать абсолютно любой загрузчик. Если /boot лежит на разделе LVM, то допустимо использование только grub2. В виду геморройности универсальности grub2 пусть будет он:
    # arch-chroot /mnt pacman -S grub-bios
    # grub-install --target=i386-pc --recheck --debug /dev/sda
    # mkdir -p /boot/grub/locale
    # cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo
  8. Устанавливаем пароль root
    # passwd
  9. Переходим к сетевым делам. Назначаем имя хоста установленной системы:
    # echo archlinux > /etc/hostname
    или так по-модному:
    # hostnamectl set-hostname archlinux
    Получение сетевых настроек от сервера dhcp, используя systemd:
    # systemctl start dhcpcd@eth0
    Автоматическое получение сетевых настроек от сервера dhcp при загрузке операционной системы, используя systemd:
    # systemctl enable dhcpcd@eth0
    Проверка:
    # ifconfig eth0
    Дивимся, что «ifconfig command not found», но это и к лучшему, ибо iproute2 удобнее, гарантирую это:
    # ip addr show dev eth0

    Ностальгирующим по ifconfig не паниковать и срочно ставить пакет net-tools
    А за примером настройки статического адреса через systemd отправляю к Вике

  10. Выходим из chroot-окружения обратно в live-систему
    # exit
  11. Демонтируем файловые системы и перезагружаемся
  12. # umount /mnt/{boot,home,} && reboot

  13. Радуемся, излучаем позитивные эмоции

Результаты и выводы

  1. Установлена базовая система Arch Linux, манящая напильником зияющей чернотой консоли, готовая для прикручивания плюшек и превращения в эту вашу Убунту;
  2. RIP rc.conf 😥
  3. systemd неведом, но быстр. Загрузка реактивная. Шайтан.
  4. UPD: словил нечто странное при использовании halt, poweroff работает корректно. Обсуждение тут
  5. UPD: ппц, я все равно нежно и трепетно люблю арч

From → Linux

6 комментариев
  1. Алексей permalink

    эх
    а может выложите архив с образом виртуалки?)

    • Не вопрос. Какое-то время полежит https://dl.dropbox.com/u/1699816/Arch%20Linux.7z
      Логин/пароль: root/root
      В initram включен модуль vmwgfx, поэтому если требуется использовать этот образ на физ.машине или на флешке, то в /etc/mkinitcpio.conf в строке Modules нужно убрать vmwgfx. И снова пересобрать mkinitcpio -p linux

      • Алексей permalink

        спасибо большое

  2. Юрий permalink

    «# swapon /dev/Storage1/swap» — в смысле «swapvol», а не «swap», я так понимаю?
    «# arch-chroot /mnt pacman -S grub-bios» — не понял, зачем «arch-chroot /mnt», мы ведь уже в «домике».
    «# umount /mnt/{boot,home,} && reboot» — а запятая после home зачем нужна?
    Ну а вообщем… Ниче так. 🙂

  3. Ruslan permalink

    Довольно внятно, спасибо )
    З.Ы. наверно localetime>localtime «ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime»

Оставьте комментарий