Статья для тех, кто устанавливает Arch на виртуалку, стационарный ПК или, ноутбук. Кто точно знает что делает, и кому хотя бы частично статья может помочь. Будет не лишним какое - то знакомство за плечами с linux системами.
На кого рассчитана эта статья?
Статья конечно предназначена больше новичков в linux. Но даже имея некоторый опыт в виде нескольких лет с Ubuntu, в начале знакомства с arch у меня были трудности с установкой, по разным причинам. Затем и с настройкой.
Кто - то скажет, что есть arch wiki, в которой все подробно описано. Но верьте или нет, не получается просто так взять, открыть арч вики, и установить по ней систему. Всякий раз когда ее открываешь - зависаешь на часы, пытаясь восполнить пробелы в знаниях, проходя по бесконечным ссылкам все глубже и глубже. А простой рабочей инструкции в ней нет. Вики хороша как общий справочник. В ней есть много информации “на все случаи жизни”, т.е. под разное оборудование, разную подготовку пользователя, и потребности. Поэтому зачастую статьи из нее избыточны. А на начальных этапах хочется простой рабочей пошаговой инструкции. Особенно тогда, когда просто хочешь пощупать систему, приглядеться к ней, и не хочешь сильно углубляться в детали.
В интернете уже есть куча статей по установке arch. Можно считать эту “еще одной статьей”, отличие которой лишь в том, что она покрывает все проблемы, с которыми столкнулся я, и которые решил при помощи многих статей, arch wiki, где - то и своего багажа знаний. Сконсолидировав эти знания по этой теме, я сам закреплю их понадежнее в своей голове. А если и что - то забуду, то смогу обратиться сюда снова. Поэтому статья еще и для меня :-)
Если Вам в процессе установки пока не понятно зачем выполнять тот или иной пункт, не отчаивайтесь. В любое время вы сможете наверстать эту информацию, в той же arch wiki, или где угодно. На начальных этапах невозможно все знать. Что - то приходит только с опытом, который никому не дается с рождения. Если у Вас есть интерес к тематике, то постепенно вы обязательно все догоните.
Начало
Процесс установки можно разделить на несколько этапов:
- скачивание образа .iso с официального сайта, страницы загрузки
- создание на его основе загрузочной флешки
- загрузка с флешки в live окружение, установка системы
Этап создания загрузочной флешки пропускается, если Вы устанавливаете систему на виртуальную машину. Далее скриншоты в статье я буду показывать именно с виртуальной машины. Но все шаги проверены неоднократно и на физических устройствах.
Arch linux не имеет графического инсталлятора. Но пугаться не стоит, ничего страшного в установке через командную строку нет. Напротив, это способ даже немного прокачаться.
Создание загрузочной флешки
Для создания загрузочной флешки в последнее время я использую кросплатформенную утилиту balena-etcher, с которой эта процедура сводится к нажатию одной кнопки.
После загрузки с флешки вся установка сводится к поэтапному вводу команд для настройки базовых вещей, разметки диска, установки системы, и установки загрузчика. На этом установка заканчивается, и начинается настройка системы, где скорее всего одним из первых дел будет установка DE (Desktop Environment), т.е. графического окружения.
Установка
Интернет соединение
Когда мы загрузились с загрузочной флешки, мы оказались наедине с командной строкой live окружения, из которого мы и будем осуществлять установку. И первым делом проверим интернет соединение:
ping archlinux.org
т.к. установка arch без интернета если и возможна, то довольна проблематична.
На виртуальной машине соединение скорее всего будет сразу. На железе с ethernet кабелем возможно тоже, но если нет, или если вы будете раздавать интернет по кабелю с телефона, то выполним следующие действия:
ip link
выведет доступные сетевые интерфейсы. Наряду со стандартным интерфейсом lo
вы обнаружите еще один, с примерно таким именем enp0s25
. И так как у нас в
live образе установлена и запущена служба dhcpcd
, мы легко можем подключиться
к интернету:
dhcpcd enp0s25
После чего пингуем еще раз, и убеждаемся, что подключение появилось.
Если вы хотите подключиться к интернету через 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
Увидим список жестких дисков и существующих разделов. У меня диск называется /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.
После создания таблицы разделов, разбиваем диск на разделы. Процедура мало чем отличается от подобных шагов в графических установщиках других дистрибутивов. Коротко о том, что вообще может понадобиться:
Загрузочный раздел
Если у вас BIOS, то нужно создать раздел размером 200M,
с типом по умолчанию Linux filesystem
.
New
-> 200M
-> primary
Если у Вас UEFI, то нужно создать EFI System
диск размером 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 для примера, и корневой раздел. Домашнюю директорию я опустил.
Перед выходом не забудем записать изменения, выбрав пункт Write
. Утилита
уточнит, уверены ли вы в том, что хотите записать изменения. Нужно ввести yes
,
и нажать Enter
, тем самым согласиться. На этом этап разметки завершен.
Необходимо выйти из утилиты cfdisk
, выбрав пункт Quit
.
Форматирование разделов
Теперь отформатируем созданные разделы. В этом нам поможет утилита mkfs
.
Смотрите на свои номера дисков, они могут не совпадать с теми, что я привожу в примерах.
Чтобы посмотреть наименования размеченных дисков, выполните команду 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
проверим, что файл на месте,
и что он содержит описание наших дисков.
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
Объявим переменную 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
.
Установка загрузчика
Мы будем устанавливать 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
, если у вас wifidhcpcd
- 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, после которого будет приглашение ввода имени пользователя, созданного нами ранее.
Чтобы появился интернет, вернемся к началу статьи, и сделаем ровно те же шаги.
На данном этапе у нас установленный Arch linux с созданным пользователем, и настроенным интернет соединением, без какой - либо графической оболочки.
Если что - то пошло не так
Если вы поняли, что на этапе установки пропустили установку
какого - то пакета - не беда, можете снова загрузиться в live iso с флешки,
настроить соединение с интернетом, заново примонтировать разделы,
провалиться в /mnt
через arch-chroot
, и доустановить все, что требуется.
Переустанавливать систему из - за этого не нужно.
Послесловие
Мы получили свежеустановленный Arch Linux без графического окружения. Далее в принципе настройка - дело вкуса. В этом и весь arch, что он для тех, кто точно знает, что хочет. Практически ничего нет из коробки. И это прекрасно! Вы строете свой конструктор, как Вам хочется. Полная свобода действий. И не на кого спихнуть, что система неудобная, или напихали ненужного софта. Единственный, кто тут может что - то запачкать - это Вы сами. Более не на кого свалить вину. Ломать и чинить систему тут нужно тоже самостоятельно.
Arch Linux не для всех, и в первую очередь не для тех, кто привык “требовать” функционал, фичи, и кормление с ложки из коробки. Тут всегда есть выбор: вкладывать время в саморазвитие через обучение и самостоятельное погружение в систему, или возвращаться к Ubuntu, которая делает все за тебя. Но у такого подхода есть большой плюс в том, что при четком понимании того, что хочешь от системы, ты строишь ее по кирпичикам без лишних запчастей, под себя, под свои персональные нужды и прихоти.