Установка Arch Linux - igancev blog

Установка Arch Linux

Статья для тех, кто устанавливает Arch на виртуалку, стационарный ПК или, ноутбук. Кто точно знает что делает, и кому хотя бы частично статья может помочь. Будет не лишним какое - то знакомство за плечами с linux системами.

На кого рассчитана эта статья?

Статья конечно предназначена больше новичков в linux. Но даже имея некоторый опыт в виде нескольких лет с Ubuntu, в начале знакомства с arch у меня были трудности с установкой, по разным причинам. Затем и с настройкой.

Кто - то скажет, что есть arch wiki, в которой все подробно описано. Но верьте или нет, не получается просто так взять, открыть арч вики, и установить по ней систему. Всякий раз когда ее открываешь - зависаешь на часы, пытаясь восполнить пробелы в знаниях, проходя по бесконечным ссылкам все глубже и глубже. А простой рабочей инструкции в ней нет. Вики хороша как общий справочник. В ней есть много информации “на все случаи жизни”, т.е. под разное оборудование, разную подготовку пользователя, и потребности. Поэтому зачастую статьи из нее избыточны. А на начальных этапах хочется простой рабочей пошаговой инструкции. Особенно тогда, когда просто хочешь пощупать систему, приглядеться к ней, и не хочешь сильно углубляться в детали.

В интернете уже есть куча статей по установке arch. Можно считать эту “еще одной статьей”, отличие которой лишь в том, что она покрывает все проблемы, с которыми столкнулся я, и которые решил при помощи многих статей, arch wiki, где - то и своего багажа знаний. Сконсолидировав эти знания по этой теме, я сам закреплю их понадежнее в своей голове. А если и что - то забуду, то смогу обратиться сюда снова. Поэтому статья еще и для меня :-)

Если Вам в процессе установки пока не понятно зачем выполнять тот или иной пункт, не отчаивайтесь. В любое время вы сможете наверстать эту информацию, в той же arch wiki, или где угодно. На начальных этапах невозможно все знать. Что - то приходит только с опытом, который никому не дается с рождения. Если у Вас есть интерес к тематике, то постепенно вы обязательно все догоните.

Начало

Процесс установки можно разделить на несколько этапов:

  • скачивание образа .iso с официального сайта, страницы загрузки
  • создание на его основе загрузочной флешки
  • загрузка с флешки в live окружение, установка системы

Этап создания загрузочной флешки пропускается, если Вы устанавливаете систему на виртуальную машину. Далее скриншоты в статье я буду показывать именно с виртуальной машины. Но все шаги проверены неоднократно и на физических устройствах.

Arch linux не имеет графического инсталлятора. Но пугаться не стоит, ничего страшного в установке через командную строку нет. Напротив, это способ даже немного прокачаться.

Создание загрузочной флешки

Для создания загрузочной флешки в последнее время я использую кросплатформенную утилиту balena-etcher, с которой эта процедура сводится к нажатию одной кнопки.

Скриншот утилиты balena-etcher

После загрузки с флешки вся установка сводится к поэтапному вводу команд для настройки базовых вещей, разметки диска, установки системы, и установки загрузчика. На этом установка заканчивается, и начинается настройка системы, где скорее всего одним из первых дел будет установка DE (Desktop Environment), т.е. графического окружения.

Установка

Интернет соединение

Когда мы загрузились с загрузочной флешки, мы оказались наедине с командной строкой live окружения, из которого мы и будем осуществлять установку. И первым делом проверим интернет соединение:

ping archlinux.org

т.к. установка arch без интернета если и возможна, то довольна проблематична.

Скриншот терминала с командой ping archlinux.org

На виртуальной машине соединение скорее всего будет сразу. На железе с ethernet кабелем возможно тоже, но если нет, или если вы будете раздавать интернет по кабелю с телефона, то выполним следующие действия:

ip link

выведет доступные сетевые интерфейсы. Наряду со стандартным интерфейсом lo вы обнаружите еще один, с примерно таким именем enp0s25. И так как у нас в live образе установлена и запущена служба dhcpcd, мы легко можем подключиться к интернету:

dhcpcd enp0s25

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

Скриншот терминала с удачным пингом после команды dhcpcd command

Если вы хотите подключиться к интернету через wifi на этапе установки, то для этого в установочном live образе есть утилита wifi-menu. При запуске команды wifi-menu появится псевдо-графический интерфейс, где можно будет выбрать wifi сеть и ввести пароль от нее. Но это возможно только если для используемой сетевой карты wifi в линуксе есть драйвер. В случае же с macbook используется broadcom адаптер, на который есть только проприетарные драйвера. Мой мак также отказался видеть сетевой интерфейс подключенного по USB Iphone, поэтому для установки arch мне пришлось купить USB wifi адаптер, драйвер на который есть в ядре linux (конкретно tp-link TL-WN725N).

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

Далее нужно разбить жесткий диск на разделы. Для этого есть несколько утилит: fdisk, cfdisk, cgdisk. Последнюю я не пробовал, пользовался первыми двумя. Разницы на выходе нет, но я предпочитаю вторую, интерфейс у нее поприятнее.

Будьте осторожны! Если Вы не понимаете, что Вы делаете, то лучше не делайте ничего. Можно потерять данные, если таковые есть на существующих дисках. Как вариант, заблаговременно сохраните их на другом носителе, на всякий случай.

Выведем список дисков:

fdisk -l

Скриншот терминала с результатом команды fdisk -l

Увидим список жестких дисков и существующих разделов. У меня диск называется /dev/sda, у Вас наименование может отличаться. Перейдем непосредственно к разбиению:

cfdisk /dev/sda

Нам понадобится создать таблицу разделов, если она не создана. Необходимо выбрать между MBR и GPT. Коротко о выборе: если у Вас UEFI, то выбираем однозначно GPT. Если у Вас старое железо, то возможно следует выбрать MBR, потому что Ваш BIOS может не поддерживать GPT. О разнице между GPT и MBR, и когда что выбирать, можно почитать на arch wiki .

Если Вы не знаете BIOS у Вас или UEFI, то можете посмотреть содержимое раздела

ls /sys/firmware/efi/efivars

Если такого каталога не существует, то скорее всего, система загружена в режиме BIOS.

Я же при установке на железо выбирал GPT, т.к. на macbook у меня UEFI. При установке на виртуальную машину я выбираю MBR, т.е. пункт dos.

Скриншот утилиты cfdisk с выбором вариантов таблиц разделов из списка gpt, dos, sgi, sun

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

Загрузочный раздел

Если у вас BIOS, то нужно создать раздел размером 200M, с типом по умолчанию Linux filesystem.

New -> 200M -> primary

Скриншот утилиты cfdisk с созданным разделом boot BIOS 200M

Если у Вас UEFI, то нужно создать EFI System диск размером 512M.

Скриншот утилиты cfdisk с созданным разделом boot EFI 512M

New -> 512M -> primary -> Type -> EFI (FAT-12/16/32)

Если вы выбрали таблицу разделов GPT, и у Вас BIOS, то нужно дополнительно создать логический раздел для хранения образа загрузчика размером 1М с типом BIOS boot

Раздел подкачки (swap)

Swap раздел с типом Linux swap. Этот раздел можно вовсе не создавать, а уже на рабочей системе позже настроить swap на хранение в файле. Если же вы привыкли его выносить на отдельный раздел, то необходимо создать раздел необходимого размера (обычно превышающий общий объем оперативной памяти) с типом Linux swap / Solaris. В примере ниже создадим раздел swap размером 1GB (столько оперативной памяти я выделил виртуальной машине)

New -> 1G -> primary -> Type -> Linux swap / Solaris

Корневой раздел

Корневой раздел /. Сюда будет установлен дистрибутив. Если Вы не желаете выносить домашний каталог пользователя на отдельный раздел, то можете выделить все оставшееся место под него. Минимально рекомендуется выделить под него 20 ГБ. Тип Linux filesystem.

Если вы планируете активно использовать docker, то будьте внимательны, по умолчанию docker image и volume хранятся в папке /var/lib/docker. И необходимо сейчас позаботиться о достаточном дисковом пространстве для них.

Домашняя директория и другие разделы

Вынос домашнего каталога /home на отдельный раздел имеет свои преимущества. При переустановке системы домашний каталог останется нетронутым, в нем сохранятся настройки и остальная информация. Устанавливаем тип по умолчанию Linux filesystem.

Конечно же, можно вынести и /var, и другие директории на отдельные разделы, по желанию.

При установке на виртуальную машину я создал загрузочный раздел, swap для примера, и корневой раздел. Домашнюю директорию я опустил.

Скриншот утилиты cfdisk с созданными разделами boot, swap, root

Перед выходом не забудем записать изменения, выбрав пункт Write. Утилита уточнит, уверены ли вы в том, что хотите записать изменения. Нужно ввести yes, и нажать Enter, тем самым согласиться. На этом этап разметки завершен. Необходимо выйти из утилиты cfdisk, выбрав пункт Quit.

Форматирование разделов

Теперь отформатируем созданные разделы. В этом нам поможет утилита mkfs.

Смотрите на свои номера дисков, они могут не совпадать с теми, что я привожу в примерах.

Чтобы посмотреть наименования размеченных дисков, выполните команду fdisk -l

Скриншот терминала с результатом команды fdisk -l после разбиения разделов

Если у вас загрузочный диск EFI, то форматируем его в FAT32.

mkfs.vfat -F32 /dev/sda1

Если BIOS, то вместо FAT32 форматируем в ext2:

mkfs.ext2 /dev/sda1

Если вы создавали раздел для хранения образа загрузчика размером 1М с типом BIOS boot, то его форматировать не нужно.

Раздел подкачки необходимо инициализировать. Для этого введем следующие команды:

mkswap /dev/sda2
swapon /dev/sda2

Корневой раздел и домашний раздел форматируются в ext4

mkfs.ext4 /dev/sda3

Монтирование разделов

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

Необходимо сначала примонтировать корневой раздел в директорию /mnt. Далее создать директории монтирования для остальных разделов. Затем по очереди примонтировать разделы в созданные каталоги:

# монтируем, сначала корневой раздел
mount /dev/sda3 /mnt

# создаем директорию boot
mkdir -p /mnt/boot

# если у вас есть отдельный раздел под /home, то создадим директорию для него
mkdir -p /mnt/home

# затем монтируем boot
mount /dev/sda1 /mnt/boot

# затем монтируем home при наличии
mount /dev/sda4 /mnt/home

Запуск установки

Можно запускать процесс инсталляции, но желательно перед этим отсортировать (вручную или автоматически) зеркала репозиториев, чтобы скачивание пакетов происходило быстрее. Я где - то на хабре вычитал про утилиту reflector, которая отсортирует зеркала по пингу и запишет первые 200 из них в mirrorlist.

# обновление кэша репозиториев
pacman -Sy

# установка утилиты reflector
pacman -S reflector

# сортировка утилитой списка зеркал
reflector --verbose -l 200 --sort rate --save /etc/pacman.d/mirrorlist

Можно обойтись ручным редактированием файла /etc/pacman.d/mirrorlist, или вовсе пропустить этот шаг.

Установка системы в примонтированный раздел:

pacstrap /mnt base base-devel linux linux-firmware

Скриншот терминала, процесс установки. Скачивание пакетов

Дождемся завершения процесса установки

Хочется отметить, что на текущий момент (ноябрь 2019) я не встретил ни одной статьи, где добавляли бы в данной строке помимо base и base-devel еще и linux linux-firmware. И это для меня остается загадкой. Этого нет ни в официальной хваленой wiki, и ни на одном гугленом мною ресурсе. Нашел я это случайно в комментариях к одной из тех сотен статей, что я перечитал, ч тобы установить arch на виртуалку. Без этих пакетов вы в систему не попадете, т.к. как стоит догадаться, они ставят ядро. Если я не прав - поправьте меня. Я лишь догадываюсь, что раньше все работало и без них.

Все пакеты скачались и установились, большая часть мучений позади. Осталось совсем немножко :-)

Первичная настройка системы

fstab

Сгенерируем файл fstab, в котором будут описываться примонтированные диски новой системы:

genfstab -U /mnt >> /mnt/etc/fstab

Результат команды cat /mnt/etc/fstab с содержимым этого файла (сгенерированное описание разделов)

Командой cat /mnt/etc/fstab проверим, что файл на месте, и что он содержит описание наших дисков.

arch-chroot

Сменим корневой каталог на /mnt с помощью утилиты arch-chroot

arch-chroot /mnt

Временная зона и системное время

Установим симлинк временной зоны

ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Настроим способ синхронизации системного времени путем генерации файла /etc/adjtime. Windows я устанавливать не планирую, поэтому выбираю UTC:

hwclock --systohc --utc

Локаль

Сгенерируем локали. Для этого необходимо отредактировать файл /etc/locale.gen, в котором нужно раскомментировать все интересующие Вас локали. К слову редактировать можно редактором nano, но я предпочитаю vim, который нужно сначала предварительно установить командой pacman -Sy vim. Далее открываем файл на редактирование:

vim /etc/locale.gen

Я раскомментирую следующие локали:

en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8

На случай, если вы слепо последовали моему совету не зная базовых основ vim, то у вас могут возникнуть проблемы с тем, чтобы сохранить файл, и покинуть редактор. На этот случай скажу, чтобы выйти, нажмите двоеточие для входа в режим ввода команд :, а затем наберите wq, и нажмите Enter. w - write, запись. q - quit, выход.

после чего запустим команду генерации тех локалей, которые мы раскомментировали:

locale-gen

Результат команды locale-gen, список сгенерированных локалей

Объявим переменную LANG в /etc/locale.conf файле.

echo 'en_US.UTF-8' >> /etc/locale.conf

Я ставлю английский язык т.к. мне комфортнее, когда операционка на нем. Легче ошибки гуглить, и меньше проблем с кириллицей. Но поддержка русского в консоли не помешает.

Шрифты

Для поддержки русского языка в консоли необходимо сменить шрифт. Без этого вместо русского языка будут отображаться квадраты. Список доступных шрифтов можно посмотреть тут:

ls /usr/share/kbd/consolefonts

из проверенного мною - cyr-sun16. Его и установим.

Заодно поставим и смену раскладки клавиатуры (KEYMAP) на Alt + Shift. Откроем на редактирование файл /etc/vconsole.conf

vim /etc/vconsole.conf

Данный файл нужен для автоматической установки заданного шрифта при загрузки системы. Попробовать тот или иной шрифт не перезагружаясь можно с помощью команды setfont ИМЯ_ШРИФТА.

и запишем туда 2 строки

FONT=cyr-sun16
KEYMAP=ruwin_alt_sh-UTF-8

Если очень хочется шрифт покрасивее, то можно сначала установить любой подходящий шрифт в систему, и применить именно его. Например установим один из шрифтов из пакета terminus-font

pacman -S terminus-font

После установки в /usr/share/kbd/consolefonts увидим кучу новых шрифтов вида ter-v20n, где 20 - размер кегля, b - обозначает bold, т.е. жирный. n - normal. Мне подошел больше ter-v20n.

hostname и hosts

Запишем имя компьютера в файл /etc/hostname (замените myArchHostName на желаемый)

echo 'myArchHostName' >> /etc/hostname

после чего создадим файл /etc/hosts

127.0.0.1	localhost
::1		localhost
127.0.1.1	myArchHostName.localdomain	myArchHostName

Пользователь

Зададим пароль root пользователю:

passwd

Создадим себе пользователя, из под которого вы будете пользоваться системой (замените archuser на имя вашего пользователя):

useradd -m -g users -G wheel -s /bin/bash archuser

Зададим пароль Вашему пользователю:

passwd archuser

Теперь наградим пользователя (если быть точнее, то всех пользователей группы wheel, в которую мы включили выше нашего пользователя) правом использовать sudo. Для этого отредактируем файл /etc/sudoers

vim /etc/sudoers

раскомментировав строку

%wheel ALL=(ALL) ALL

а также по желанию, чтобы постоянно не вводить пароль при вызове команд через sudo (внимание, потенциально опасно), можно раскомментировать строку:

%wheel ALL=(ALL) NOPASSWD: ALL

Если после редактирования vim вас снова не выпускает, то это потому, что мы отредактировали файл, открытый только для чтения. Сохранение файла необходимо выполнить командой :w!, и затем выйти :q.

Открытое в vim cодержимое файла /etc/sudoers

Установка загрузчика

Мы будем устанавливать grub. Для этого установим сам пакет grub. Если у вас UEFI, то установим еще efibootmgr и os-prober.

pacman -S grub efibootmgr os-prober

Далее необходимо выполнить установку загрузчика. Для BIOS или UEFI параметры установщика отличаются.

Grub для BIOS:

grub-install /dev/sda

Grub для UEFI:

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub

Не забываем сгенерировать конфиг GRUB

grub-mkconfig -o /boot/grub/grub.cfg

Интернет

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

  • netctl - пакет, в состав которого входит утилита wifi-menu, если у вас wifi
  • dhcpcd - DHCP клиент
  • networkmanager - утилита для обнаружения и настройки автоматического подключения к интернету
  • network-manager-applet - понадобится в дальнейшем, когда у нас будет установлена графическая оболочка. Представляет собой значек сети в трее, показывая статус подключения к сети, уровень wifi сигнала, и прочее.
pacman -S netctl dhcpcd networkmanager network-manager-applet

Если у Вас wifi, то установите еще и dialog. Зависимость для wifi-menu.

pacman -S dialog

Нужно установить их сейчас, ибо потом у нас не будет интернета. После их установки выходим из arch-chroot, отмонтируем наши диски, и перезагрузимся. Отсоединим загрузочную флешку, и загрузимся с основного дискового накопителя.

# выходим из arch-chroot
exit

# рекурсивно отмонтируем все примонтированные диски в /mnt
umount -R /mnt

reboot

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

Загрузчик GRUB, первая доступная ОС в списке - Arch Linux

Arch Linux вход в систему, терминал, приглашение к вводу логина и пароля

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

На данном этапе у нас установленный Arch linux с созданным пользователем, и настроенным интернет соединением, без какой - либо графической оболочки.

Если что - то пошло не так

Если вы поняли, что на этапе установки пропустили установку какого - то пакета - не беда, можете снова загрузиться в live iso с флешки, настроить соединение с интернетом, заново примонтировать разделы, провалиться в /mnt через arch-chroot, и доустановить все, что требуется. Переустанавливать систему из - за этого не нужно.

Послесловие

Мы получили свежеустановленный Arch Linux без графического окружения. Далее в принципе настройка - дело вкуса. В этом и весь arch, что он для тех, кто точно знает, что хочет. Практически ничего нет из коробки. И это прекрасно! Вы строете свой конструктор, как Вам хочется. Полная свобода действий. И не на кого спихнуть, что система неудобная, или напихали ненужного софта. Единственный, кто тут может что - то запачкать - это Вы сами. Более не на кого свалить вину. Ломать и чинить систему тут нужно тоже самостоятельно.

Arch Linux не для всех, и в первую очередь не для тех, кто привык “требовать” функционал, фичи, и кормление с ложки из коробки. Тут всегда есть выбор: вкладывать время в саморазвитие через обучение и самостоятельное погружение в систему, или возвращаться к Ubuntu, которая делает все за тебя. Но у такого подхода есть большой плюс в том, что при четком понимании того, что хочешь от системы, ты строишь ее по кирпичикам без лишних запчастей, под себя, под свои персональные нужды и прихоти.