Установка archlinux. Разбираемся с установкой и загрузкой Linux на примере ArchLinux. Установка графической среды


Для начала я хотел бы ответить на стандартный вопрос всех тех, кто ни разу не встречался с данным дистрибутивом: «Зачем?». Действительно, зачем нужен Arch Linux, когда полно других юзерфрендли дистрибутивов, типа божеупаси Ubuntu, Debian, Linux Mate и т.д. А ответ очень прост: Арч - это один из самых легких и компактных дистрибутивов, который не несет в себе даже окружение рабочего стола , из коробки нам дают только консоль и несколько стоковых утилит (например fdisk). Если вы когда-нибудь хотели поиграть в игру «Собери систему сам», то этот дистрибутив для вас.

Итак, подготовим наш «тестовый стенд». В моем случае я использую Parallels Desktop 12, однако ровно неделю назад я ставил арч на ноутбук Sony Vaio-чтототам, так что процесс установки мало чем будет отличаться.

Если у вас Wi-Fi

Как я уже сказал, арч поставляется голым, но установщик оснащен утилитой Wifi-Menu, позволяющую подключаться к сетям WiFi.

1. Начало

Для начала скачаем дистрибутив . Релиз на момент написания статьи: 2017.05.01. Весит образ 400 мегабайт. Ядро 4.10.13. Если вы устанавливаете дистрибутив на виртуальную машину, первый шаг можно пропустить.

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

Есть несколько способов создания загрузочной флешки. Рассмотрим два из них:

Windows:

UNetBootIN - бесплатная интуитивно-понятная утилита. Выбираете флешку и дистрибутив и нажимаете «Продолжить», она все сделает сама (так же работает на Mac и Linux). Ссылка .

Win32 Disk Imager - бесплатная утилита для Windows. Все так же: выбираете флешку, дистрибутив и нажимаете Write. .

Linux/Mac:

Для *nix подобных систем скачивать дополнительные утилиты необходимости нет. Все что нужно - наличие терминала под рукой. Для начала найдем флешку:

Mac OS: пишем diskutil list, получаем список всек замонтированных ус-в.

Linux: пишем lsblk, получаем список ус-в. По сути получим то же самое, только ответ будет типа /dev/sdX (X - буква, например /dev/sdb1)

Теперь, когда мы определились с флешкой, давайте запишем на нее образ. Делать мы это будем с помощью утилиты dd. Открываем терминал (если вы его закрыли) и вводим туда следующее
dd if=path/to/archiso.iso of=path/to/flash status=progress
Готово. Переходим к следующему шагу.

2. Установка базовой системы

Итак, перезагружаем компьютер, и загружаемся с флешки. Сначала мы попадаем в меню SysLinux, где выбираемм «Boot Arch Linux x86_64». Итак, мы в окружении zSH (замена bash).

Сначала проверим наше интернет-соединение. Если вы используете ethernet, то никаких дополнительных манипуляций делать не нужно, арч подцепит все сам. Если вы используете wifi, то введите wifi-menu и вам откроется список доступных для подключения wifi-сетей. К слову, если у вас несколько адаптеров, то введите iw dev , чтобы увидеть все доступные адаптеры (обычно название начинается с буквы w), а затем введите wifi-menu (вместо - ваш адаптер). Теперь проверим соединение, пинганув, например, Яндекс.

# ping -c 3 ya.ru PING ya.ru (93.158.134.203) 56(84) bytes of data. 64 bytes from www.yandex.ru (93.158.134.203): icmp_req=1 ttl=54 time=62.4 ms 64 bytes from www.yandex.ru (93.158.134.203): icmp_req=2 ttl=54 time=63.0 ms 64 bytes from www.yandex.ru (93.158.134.203): icmp_req=3 ttl=54 time=62.4 ms --- ya.ru ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 62.423/62.623/63.009/0.273 ms
С интернетом готово. Теперь проверим наши диски. Вбиваем lsblk , чтобы посмотреть, где у нас что. Итак, у меня основной диск, на котором будет находится система находится на /dev/sda, флешка - на /dev/sdb (sdb1).

Как вы можете заметить, диск не разбит на разделы. Сейчас мы сделаем два раздела для /системы и /home каталога (где будет находится все доступное пользователю окружение).

Мы будем пользоваться утилитой fdisk, т.к она имеет графический интерфейс и с ней более удобно (для меня) работать.

Вводим fdisk в консоль. Он может спросить нас, что нам нужно: gpt или dos(MBR). Для систем с UEFI/GPT выбирайте gpt, для LegacyBIOS/MBR систем - dos. В моем случае мы создадим GPT разметку. Появится более-менее привычный нам гуй.

Нажимаем «New», вводим желаемое значение типа РАЗМЕР, где G гигабайты, MB - мегабайты, KB - килобайты, B - байты. В моем случае я создам раздел /dev/sda1, который будет сжирать 20 гигабайт для системы, dev/sda2, который будет сжирать 44 гигабайта для /home и раздел размером в 1023 мегабайта для свапа.

Нажимаем кнопку Write для записи таблицы разделом на диск и Quit для выхода из утилиты.
Проверим разделы, снова введя lsblk:

Теперь создадим файловую систему для каждого раздела. Для системы и /home каталога будем использовать ext4, а для свапа - swap.

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

# mkfs.ext4 /dev/sda1 # mkfs.ext4 /dev/sda2 # mkswap /dev/sda3 # swapon /dev/sda3
Снова проверим конфигурацию разделов. Как видите, mountpoint у /dev/sda3 сменился на , что означает, что мы все сделали правильно.

Теперь примонтируем диски.

# mount /dev/sda1 /mnt # mkdir -p /mnt/home # mount /dev/sda2 /mnt/home
Можете ввести lsblk для проверки точек монтирования. Я это сделал, у меня не было ошибок. Переходим к установке базовой системы. Для этого вводим в терминал следующее:

# pacstrap /mnt base base-devel

Важно

Отредактируйте файл /etc/pacman.d/mirrorlist с помощью nano. Перед всем содержимым файла добавьте строку:

Server = http://mirror.yandex.ru/archlinux/$repo/os/$arch
Тем самым мы добавим зеркало Яндекса и дальнейшие закачки будут идти с него. Это очень важно, так как по-умолчанию там установлен какой-то далекий сервер закачек. Например, у меня во время написания этой статьи закачки оттуда не шли вообще.


Процесс скачивания и установки займет какое-то время, так что смело можете отправится пить пиво/чай/etc.

Для тех, у кого Wi-Fi

В базовой системе ОТСУТСТВУЕТ возможность работы с wi-fi, поэтому установите туда dialog и wpa_supplicant для работы с беспроводными сетями с помощью пакстрап:

# pacstrap /mnt wpa_supplicant dialog

3. Настройка базовой системы

Итак, мы установили систему. Теперь зайдем в нее и настроим изнутри, введя команду:

# arch-chroot /mnt
Сейчас мы вышли из live-окружения и уже работает непосредственно с системой. Демон dhcpcd автоматически подцепит ethernet-соединение, для wifi используйте wifi-menu.

Установим локаль (язык) для нашей системы. Откроем файл /etc/locale.gen с помощью nano, найдем и расскоментируем следующие строки:

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

После чего вводим:

# locale-gen
для генерации локалей.

Создадим файл locale.conf, где будет содержаться переменная текущей локали и запишем в него переменную LANG=ru_RU.UTF-8 или LANG=ru_RU для установки русского языка:

# export LANG=ru_RU.UTF // установим язык для текущей сессии # echo LANG=ru_RU.UTF-8 > /etc/locale.conf # loadkeys ru // загрузим русскую раскладку
Так же можем вместо echo LANG… прописать locale > /etc/locale.conf при условии того, что нас устраивает вывод locale:

Теперь установим консольный шрифт для работы. Выполним следующие команды:

# setfont cyr-sun16 # nano /etc/vconsole.conf
В файл vconsole.conf добавим следующие строки

KEYMAP=ru
FONT=cyr-sun16

Настроим часы. Введем:

Ln -s /usr/share/zoneinfo/Зона/Субзона /etc/localtime
Например, для Новосибирска я введу следующее:

Ln -s /usr/share/zoneinfo/Asia/Novosibirsk /etc/localtime

Если ошибка

Вы можете встретить ошибку типа «файл уже существует». Не волнуйтесь просто добавьте ключ -f после -s, что перезапишет файл.


Обеспечим точность аппаратных часов командой timedatectl set-ntp true , а затем введем hwclock --systohc --utc для установки часов.

Установим имя нашего узла/домена командой echo localdomain > /etc/hostname , где localdomain - ваше имя (может быть любым, в моем случае это будет furrypaws).

Теперь зададим пароль для суперпользователя командой passwd .
И генерируем ядро командой:

Mkinitcpio -p linux
Сгенерируем таблицу разделов. Для этого вернемся в live-окруджение командой exit и выполним

# genfstab -U /mnt >> /mnt/etc/fstab
Не забудьте проверить файл /mnt/etc/fstab через nano. Вернемся в chroot, чтобы завершить настройку через arch-chroot /mnt.

Установим загрузчик (т.е GRUB). Вводим следующее:

# pacman -S grub // pacman -S os-prober, пропишите это дополнительно, если у вас стоят еще системы, помимо Арч. # grub-install --recheck /dev/sda # grub-mkconfig -o /boot/grub/grub.cfg
Выходим из окружения командой exit и перезагружаемся командой reboot. После перезагрузки, если мы сделали все правильно, мы попадем в меню Grub, а оттуда - в Арч. Логин для входа - root, пароль тот, который мы указали. Установить интернет-соеденение через провод:

Вводим

# ip link
Находим там наш интерфейс. Затем вбиваем:

# systemctl enable dhcpcd@интерфейс.service


Wi-Fi
Вбиваем:

# wifi-menu
Устанавливаем соединение, затем вбиваем:

# cd /etc/netctl # ls
Имя профиля будет начинаться на wlp.

Теперь вбиваем:

# netctl enable имя_профиля
и наслаждаемся автоматическим подключением.


Для справки: сейчас наша система занимает всего 1,5 гигабайта. Неплохо, да?

4. Установка графического окружения

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

Установим xorg (X Window Manager).

# pacman -S xorg xorg-xinit xorg-twm xterm
Если вам интересно, мы можем запустить окружение командой startx или xinit и посмотреть, что будет:

Это только «фундамент» нашел будущего всего.

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

# useradd -m -g users -G wheel,games my_user
Настроим доступ к sudo для пользователей. Введем команду visudo, найдем закоментированную строку


Раскомментируем ее, нажмем esc, затем ":wq" и нажмем Enter. Теперь перейдем в наше окружение пользователя командой su my_user и далее будем работать из-под него.

Я буду использовать Plasma для работы, вы можете выбрать любой DE, который вам понравится.
Установлю его командой:

# sudo pacman -S plasma-desktop plasma-meta sddm # sudo pacman -S breeze-gtk breeze-kde4 kde-gtk-config # sudo pacman -S kde-applications networkmanager plasma-nm powerdevil
Последний будет устанавливаться очень долго (он скачает 700 мегабайт пакетов и установит примерно 2 гигабайта), так что можете отправится пить чай.

Важно

Если вам нужно легкое рабочее окружение, то установите lxde и lxdm.


После установки пропишем следующее:

# echo "exec startkde" > ~/.xinitrc # systemctl enable sddm # systemct disable dhcpcd # sudo reboot
После перезагрузки нам откроется окно входа SDDM, введя пароль попадем в наше рабочее окружение.

# systemctl enable NetworkManager # systemctl start NetworkManager
На этом все. The end.

Это статья о том, как установить Arch Linux. Если вы уже достаточно знаете об Arch Linux и хотите перейти к пошаговому описанию процесса установки, то кликните . Далее небольшое вступление о самой системе.

Что такое Arch Linux

Arch Linux - это дистрибутив, который стоит особняком от многих известных Linux. Например, чаще всего на слуху Ubuntu, Linux Mint, Kali Linux, Debian. Все эти дистрибутивы довольно близки друг к другу. У Ubuntu и Kali Linux за основу взят Debian. А у Linux Mint базовой платформой выступает Ubuntu. Их базой является огромный набор пакетов Debian, но при этом каждый из перечисленных дистрибутивов имеет и свои пакеты. Это хорошие операционные системы, в них вложено много труда, и они получили свою заслуженную популярность.

Аналогично с Red Hat Enterprise Linux, к которой очень близки CentOS и Fedora - у них также есть своя специфика, но одна базовая платформа пакетов (программ).

Дистрибутив Arch Linux не основывается ни на Debian, ни на Red Hat Linux. Это отдельный дистрибутив. Хотя у него свой собственный репозиторий и другой менеджер пакетов, в целом, там есть все популярные библиотеки и программы, имеющиеся на других дистрибутивах.

Одной из особенностей Arch Linux является то, что в нём очень быстро обновляются пакеты и нет разбития на версии, как это есть, к примеру, у Ubuntu и в след за ней у Linux Mint. Это может быть важно, если вы используете сравнительно новое оборудование, например, на сегодняшний день пакет firmware (прошивки - фактически, драйверы некоторых устройств) у Kali Linux не обновлялись больше года.

В результате при установке на новый ноутбук пришлось отдельно устанавливать драйверы и для Wi-Fi, и для Bluetooth, и для графического ядра центрального процессора. На Arch Linux всё это заработало сразу.

Это официальный сайт, сам Arch является бесплатным, точно также как AUR и репозитории BlackArch.

В Windows загрузочную флешку можно сделать с помощью .

В Linux с созданием загрузочной флешки отлично справится утилита dd .

Установка Arch Linux

Нужно загрузиться с флешки. Для этого при запуске компьютера много раз нажимайте кнопку Esc (на некоторых системах Delete ), если появится подобное меню, то выберите флешку:

Либо перейдите в BIOS и там вы берите загрузку с флешки.

Примечание : в настройках BIOS Secure boot (Безопасная загрузка) и Fast boot (Быстрая загрузка) должны быть отключены.

Выберите первый вариант:

И… добро пожаловать в Arch Linux!

Arch Linux распространяется с минимальным набором программ без графического интерфейса - примерно как Debian minimal.

Подключение к Интернету

Необходимо настроить интернет, поскольку всё остальное бессмысленно, если отсутствует интернет подключение.

Если у вашего компьютера проводное интернет подключение, то всё достаточно просто - Arch сам попытается настроить Интернет-подключение и получить IP адрес, если роутер поддерживает DHCP.

В любом случае, проверьте подключение к сети пингом:

Ping ya.ru

Если на роутере отключена эта служба, то вам нужно вручную настроить ваш сетевой интерфейс. Пример как это сделать (в этой инструкции я настраивал подключение, когда устанавливал на VPS)

Допустим, у меня нет проводного соединения, поэтому я покажу как подключиться к Wi-Fi в командной строке.

Начинаем с того, что смотрим имя беспроводного сетевого интерфейса:

Также можно посмотреть командой

Видно, что имя моего беспроводного интерфейса wlo1 . Прежде чем подключиться к какой-нибудь Wi-Fi сети, нам нужно узнать, какие точки доступа вообще доступны. Для этого мы просканируем Wi-Fi сети в командной строке.

Поскольку никакого NetworkManager пока нет, то нужно начать с активации сетевого интерфейса:

Ip link set wlo1 up

Вместо wlo1 здесь и во всех последующих командах вставьте имя вашего беспроводного адаптера.

Сканируем сети:

Iw dev wlo1 scan | grep SSID

В результате выполнения этой команды будут выведены имена беспроводных сетей. У меня две сети с одинаковым именем MiAl поскольку роутер работает на двух частотах и обе сети называются одинаково.

Нам нужно сформировать конфигурационный файл. Делается это командой:

Wpa_passphrase название_ТД пароль > конфигурационный_файл

К примеру, для ТД MiAl пароль здесь_пароль_wifi и конфигурационный файл я хочу назвать wpa_MiAl.conf , тогда команда имеет следующий вид:

Wpa_passphrase MiAl здесь_пароль_wifi > wpa_MiAl.conf

Подключаемся к точке доступа:

Wpa_supplicant -B -i wlo1 -c wpa_MiAl.conf

В предыдущей команде укажмте свой беспроводной интерфейс (wlo1) и свой файл с настройками (wpa_MiAl.conf).

Для получения автоматических настроек по протоколу DHCP (присвоенный IP адрес, IP адрес шлюза и IP адреса DNS серверов) выполните команду:

Dhclient wlo1

Очистка диска

Я уже предупреждал, но повторю ещё раз - если что-то напутаете при разметке дисков, то можете случайно удалить важные для вас данные.

Смотрим доступные диски:

Fdisk -l

Вряд ли вам о чём-то скажут идентификаторы дисков, поэтому ориентируйтесь на производителя, объём и количество разделов.

Например, на скриншоте выше виден диск /dev/nvme0n1, который система Windows покромсала на четыре диска, а на пятый я в устанавливал Kali Linux.

У него такое странное название, потому что это SSD диск, который подключён не к SATA разъёму, а NVM Express .

Диск /dev/sdb на 7.5 Гигабайт - это сама флешка.

Я хочу снести всё, что есть на диске /dev/nvme0n1 - все разделы и все данные - и на него установить Arch. Поэтому в дальнейших командах я буду использовать /dev/nvme0n1, а также /dev/nvme0n1p1 и /dev/nvme0n1p2 обращаясь к его подразделам. Заменяйте в последующих командах эти имена на имена своих дисков, например, /dev/sda, /dev/sda1, /dev/sda2 и тому подобное.

Начинаем с полной очистки диска /dev/nvme0n1.

Открываем его программой gdisk:

Gdisk /dev/nvme0n1

Для перехода в экспертный режим там введите

Затем для удаления GPT введите

Дважды согласитесь, чтобы полностью очистить диск.

Покидаем программу.

Fdisk -l

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

Ах да, в этой инструкции мы устанавливаем систему на компьютер с UEFI . Этот аналог БИОСа активно используется уже лет 6-7, поэтому это должно работать для большинства. Если у вас более старая система с обычным БИОСом, то напишите в комментариях - я дам ссылки на свои предыдущие инструкции, где я объяснял, как делать для БИОСа.

Теперь открываем наш диск в программе cfdisk .

Cfdisk /dev/nvme0n1

Нам вручную нужно создать два или три раздела. Два обязательных раздела это:

  • загрузочная область
  • основной раздел с системой (рут / )

В качестве дополнительного третьего раздела можно создать раздел подкачки - он нужен на тот случай, если операционной системе не хватит оперативной памяти. У меня 16 Гигабайт ОЗУ уже предустановлено и имеется разъем для ещё 16 Гб. Поэтому я не буду делать раздел подкачки. Но если он вам нужен, то в этой инструкции я делаю с разделом подкачки (кстати, там больше скриншотов).

Выбираем gpt :

Теперь нажимаем New .

Устанавливаем размер (для загрузочного раздела 200 Мегабайт хватит за глаза - обычно он заполнен мегабайт на 50):

Указываем тип:

Нам нужно выбрать EFI System :

Переходим к оставшейся свободной области (стрелочка вниз), опять нажимаем New , выбираем весь незанятый размер, в качестве типа ставим Linux root (x86-64) - или другой, который соответствует архитектуре вашего процессора:

Теперь выбираем Write , чтобы записать сделанные изменения.

Пишем yes :

Покидаем программу.

Можно ещё раз проверить вывод команды, чтобы убедиться, что изменения сохранены:

Fdisk -l

Форматируем наши разделы:

Mkfs.fat -F32 /dev/nvme0n1p1 mkfs.ext4 /dev/nvme0n1p2

Установка базовой системы Arch

Теперь нам нужно смонтировать созданные разделы жёсткого диска. Для этого выполните в следующей последовательности команды:

Mount /dev/nvme0n1p2 /mnt mkdir /mnt/boot mount /dev/nvme0n1p1 /mnt/boot

Начинаем саму установку:

Pacstrap -i /mnt base base-devel

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

Создаём файл fstab :

Genfstab -U -p /mnt >> /mnt/etc/fstab

Настройка системы

Выполним следующую команду:

Arch-chroot /mnt

Устанавливаем Vim :

Pacman -Sy pacman -S vim

Если вы привыкли к консольному текстовому редактору nano , то установите его.

Теперь в файле locale.gen нам нужно раскомментировать две строки, для этого

Vim /etc/locale.gen

Ищем там и раскомментируем строки:

En_US.UTF-8 UTF-8 ru_RU.UTF-8 UTF-8

Совсем кратко про vim - у него есть два режима: режим редактирования и режим команд. Режим редактирования включается при нажатии на кнопку Insert , режим команд включается кнопкой Esc . В режиме редактирования как в обычном текстовом редакторе — нажимаете букву, получаете букву на экране. В режиме команд клавиши имеют особое значение. Например, для поиска строки нажмите / (слэш) и начните набирать строку. Нажмите n для перехода к следующему вхождению искомой строки.

Для сохранения и выхода из документа, перейдите в режим команд (нажмите Esc ), затем последовательно нажмите :wq и Enter (то есть двоеточие, w , q и Enter ).

После этого выполняем:

Locale-gen

Создадим locale.conf и экспортируем локаль:

Echo LANG=en_US.UTF-8 > /etc/locale.conf export LANG=en_US.UTF-8

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

Установим Time Zone, связав информацию о временной зоне с localtime. Чтобы увидеть все временные зоны:

Ls /usr/share/zoneinfo

Ls /usr/share/zoneinfo/Europe

Ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Устанавливаем аппаратные часы на UTC:

Hwclock --systohc --utc

Устанавливаем имя хоста (можно выбрать любое):

Echo HackWare > /etc/hostname

Настраиваем сеть. Если у вас проводное соединение, то включите автоматическое получение IP адреса:

Systemctl enable dhcpcd.service

Если у вас Wi-Fi соединение, то при первой перезагрузке нужно будет настроить его вручную.

Внимание тем, у кого подключение по Wi-Fi : обязательно установите пакеты:

Pacman -S wpa_supplicant dhclient iw

Устанавливаем пароль рута:

Создаём нового пользователя с sudo (замените <имя пользователя> на настоящее имя):

Useradd -m -g users -G wheel,video -s /bin/bash <имя пользователя>

Установка sudo:

Pacman -S sudo

В файле /etc/sudoers найдите и раскомментируйте строку %wheel ALL=(ALL) , чтобы пользователи сразу после создания могли sudo :

Vim /etc/sudoers

Установите пароль для созданного пользователя:

Passwd <имя пользователя>

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

Bootctl install

Редактируем содержимое файла:

Vim /boot/loader/loader.conf

Удалите то, что там есть и впишите туда:

Default arch

Создайте конфигурационный файл для добавления пункта Arch Linux в менеджер systemd-boot:

Vim /boot/loader/entries/arch.conf

Содержимое файла должно быть следующим:

Title  BlackArch linux  /vmlinuz-linux initrd  /initramfs-linux.img options  root=/dev/nvme0n1p2 rw

Обратите внимание на /dev/nvme0n1p2 — это путь до моего диска с системой, замените на свой.

Выйдем из chroot, размонтируем смонтированные разделы и перезагрузимся:

Exit umount -R /mnt/boot umount -R /mnt reboot

Можно вынимать установочный диск.

Установка сервера Xorg и видеодрайверов

После входа в систему, нам нужно сделать полное её обновление следующей командой:

Sudo pacman -Syu

Но перед этим нужно подключиться к Интернету. Если у вас провод, то всё должно заработать само, а если у вас Wi-Fi, то делайте так, как показано выше (в начале установки).

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

Sudo pacman -S bash-completion

Следующий шаг - это установка дефолтного X окружения, которое обеспечивает настройки по умолчанию Xorg сервера и поддержку 3D.

Sudo pacman -S xorg-server xorg-apps xorg-xinit mesa

Для дополнительной функциональности Xorg также установите следующие пакеты.

Sudo pacman -S xorg-twm xterm xorg-xclock

Для ноутбуков и нетбуков также установите драйверы для поддержки тачпада.

Sudo pacman -S xf86-input-synaptics

Теперь нам нужно установить драйвер, специфичный для вашей системы VGA (видеокарты), но для начала нам нужно идентифицировать вашу системную графику. И нужно пройти небольшой ликбез.

Видео карты бывают:

  • NVidia
  • Intel

Графика Intel это встроенное в процессор видео ядро. Сейчас большинство процессоров имеют видео ядро. Поэтому на вашей системе может скорее всего будет два видеоадаптера: NVidia и Intel или AMD и Intel.

Для дополнительной путаницы существуют проприетарные (от производителя) и открытые драйвера для NVidia и AMD.

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

Наберите следующую команду, чтобы определить вашу видеокарту.

Lspci -k | grep -E "(VGA|3D)"

Пример вывода:

00:02.0 VGA compatible controller: Intel Corporation Device 3e9b 01:00.0 3D controller: NVIDIA Corporation GP107M (rev a1)

У меня Intel и NVIDIA.

Внимание , если вы устанавливаете в виртуальную машину VirtualBox, т.е. вы видите:

00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter

То вам не нужно устанавливать драйвер для вашей реальной видеокарты, поскольку ОС в виртуальном компьютере всё равно не может использовать реальную видеокарту. Поэтому пропустите установку видеодрайвера, а вместо этого выполните действия, описанные в статье «Установка Дополнений гостевой ОС VirtualBox для BlackArch (Arch) ».

Какой именно драйвер выбрать? Проприетарный драйвер NVIDIA обеспечивает наилучшую производительность. Если вы собираетесь использовать Hashcat и Pyrit, то вам нужен именно он.

Открытый драйвер NVIDIA (называется nouveau) умеет переключаться с видео карты Intel на NVIDIA и обратно. Но не умеет многого всего другого. Если установить одновременно проприетарный и открытый драйвер, то систему можно «повестить» так, что не получится даже переключиться на консоль и исправить… (Точнее говоря, во время загрузки нужно успеть нажать Cntr+Alt+F2 до того, как система полностью зависнет).

Для Intel неизвестен проприетарный драйвер (только открытый).

Побеждает в этом соревновании боли AMD. Конечно проприетарный драйвер не совместим с открытым и «вешает» систему почти наглухо.

Квест по установке проприетарного драйвера AMD/ATI Catalyst на в меру устаревшие карты . Для ещё более устаревших карт описание . Для более новых видеокарт они назвали драйвер то ли AMDGPU-Pro, то ли RadeonOpenCompute (ROCm), то ли как-то ещё; и как именно его устанавливать я не знаю.

Отдельное примечание по поводу AMD: вы можете установить Crimson для ряда видеокарт предыдущих поколений. НО: для Hashcat этот драйвер бесполезен. Разве что, можно использовать только с предыдущими версиями Hashcat. Поэтому если AMDGPU-Pro для вашей видеокарты недоступен, то ставьте драйвер от сообщества.

После того, как вы определили вашу графическую карту, теперь время установить соответствующие драйвера. По умолчанию, Arch предлагает дефолтный видео драйвер Vesa - xf86-video-vesa, который может работать с большим количеством графических чипсетов, но не обеспечивает поддержку 2D или 3D ускорения.

Для установки открытого драйвера AMD выполните команду:

Sudo pacman -S xf86-video-amdgpu

Для установки открытого драйвера nVidia выполните:

Sudo pacman -S xf86-video-nouveau

ИЛИ для установки проприетарногоо драйвера nVidia выполните:

Sudo pacman -S nvidia nvidia-utils

Для установки открытого драйвера Intel выполните:

Sudo pacman -S xf86-video-intel

После того, как соответствующий драйвер вашей видеокарты был установлен, настало время для тестирования Xorg сервера и видеодрайверов, сделайте это следующей командой.

Sudo startx

Если всё настроено правильно, то будет запущена X сессия как на скриншоте ниже. Отсюда можно выйти написав exit в самой большой консоли.

Примечание: у меня с картой nVidia и проприетарным драйвером изображение было больше похоже на чёрный экран, но менеджер дисплея всё равно заработал — видимо, это норм…

Установка окружения рабочего стола Cinnamon

Теперь время получить шикарный, инновационный, настраиваемый графический пользовательский интерфейс - полное окружение рабочего стола для нашей системы. Установим пакет Cinnamon. Запустите следующую команду для установки Cinnamon и другой зависимости из официального репозитория arch.

Sudo pacman -S cinnamon nemo-fileroller

Следующий шаг - это установка пакета менеджера отображения GDM, который помогает системе запустить X сервер и обеспечивает графический пользовательский интерфейс для пользователей при входе в окружение рабочего стола Cinnamon.

Sudo pacman -S gdm

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

Sudo mv /usr/share/xsessions/gnome.desktop ~/

Внимание , если вы установили проприетарный драйвер. Откройте файл /etc/gdm/custom.conf

Sudo vim /etc/gdm/custom.conf

Найдите там строчку

#WaylandEnable=false

и раскомментируйте её, чтобы получилось:

WaylandEnable=false

Следующий шаг - это включение и тестовый запуск GDM, для входа в Arch Linux используйте ваши учётные данные.

Sudo systemctl enable gdm sudo systemctl start gdm

После загрузки GDM появиться окно входа с приглашением для ввода учётных данных. Выберите вашего пользователя -> кликните на иконке слева от Sign In left (шестерёнка) и убедитесь, что у вас выбрана Cinnamon, затем введите свой пароль и нажмите кнопку Sign In или кнопку Enter.

Наше Интернет-подключение управляется через командную строку, но если вы хотите управлять вашими сетевыми соединениями из графического интерфейса, то вам нужно отключить службу dhcpd и установить и задействовать пакет Network Manager (сетевой менеджер). Также установите пакет net-tools для расширенных сетевых команд. Из графического интерфейса откройте шэлл UXterm и запустите следующие команды:

Sudo pacman -Syu sudo pacman -S net-tools network-manager-applet

Отключите службу dhcpcd (здесь enp0s3 - это название моего сетевого интерфейса.

Чтобы посмотреть ваши сетевые интерфейсы наберите:

У вас может быть другое название - подкорректируйте команды в соответствие с вашей системой).

Sudo systemctl stop [email protected] sudo systemctl disable [email protected] sudo systemctl stop dhcpcd.service sudo systemctl disable dhcpcd.service

Если вам нужна поддержка OpenVPN в Network Manager, то выполните команду:

Sudo pacman -S networkmanager-openvpn

Запустите и добавьтет в автозагрузку Network Manager:

Sudo systemctl start NetworkManager sudo systemctl enable NetworkManager

Теперь протестируйте интернет подключение снова, запустив команду ping в отношении какого-нибудь хоста.

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

Установка базового программного обеспечения

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

Sudo pacman -S gedit gnome-terminal pulseaudio pulseaudio-alsa pavucontrol firefox vlc eog eog-plugins chromium unzip unrar p7zip pidgin toxcore deluge smplayer audacious qmmp gimp xfburn thunderbird gnome-system-monitor doublecmd-gtk2 gnome-calculator pinta recoll deadbeef veracrypt bleachbit gnome-screenshot evince mlocate antiword catdoc unrtf djvulibre id3lib mutagen python2-pychm aspell-en git calibre ttf-freefont ttf-linux-libertine ntfs-3g libmtp

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

Установим русскую локаль:

Su - echo LANG=ru_RU.UTF-8 > /etc/locale.conf Ctrl+d

Если вам нужны офисные инструменты вроде Writer, Calc, Impress, Draw, Math и Base, то установите пакет LibreOffice следующей командой.

Sudo pacman -S libreoffice-fresh libreoffice-fresh-ru

Словари для проверки орфографии и стиля в LibreOffice:

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

Вы уже в курсе, BlackArch совместим с обычными установками Arch. Он выступает в роли неофициального репозитория.

Загрузите и запустите strap.sh как рут:

Curl -O https://blackarch.org/strap.sh sudo bash ./strap.sh

Обновим кэш:

Sudo pacman -Syyu

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

Теперь вы можете установить инструменты из репозитория blackarch.

1. Чтобы вывести список всех доступных инструментов запустите:

Pacman -Sgg | grep blackarch | cut -d " " -f2 | sort -u

2. Чтобы установить все инструменты запустите:

Pacman -S blackarch --force

Sudo pacman -S blackarch-mirrorlist

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

Sudo pacman -S blackarch-automation blackarch-cracker blackarch-database blackarch-exploitation blackarch-networking blackarch-recon blackarch-scanner blackarch-sniffer blackarch-social blackarch-spoof blackarch-webapp blackarch-wireless --needed --force

Как установить Hashcat в Arch Linux

Ускорение обновления

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

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

Для этого откройте файл /etc/pacman.d/mirrorlist :

Sudo gedit /etc/pacman.d/mirrorlist

И закомментируйте или удалите зеркала, которые не хотите использовать. Либо просто передвиньте в самый верх близкие и быстрые к вам зеркала.

В РФ очень быстрым зеркалом является зеркало Яндекса:

Как восстановить Arch Linux, если он не загружается

Если система не загружается, то переключитесь на другой терминал клавишами Ctrl+Alt+F2 или Ctrl+Alt+F3 . Залогинтесь и откатите изменения, привёдшие к фейлу.

Если даже это не помогает, то есть система зависает намертво и переключиться на другой терминал невозможно, то вы всё равно можете восстановить свой Arch!

Для этого нужна загрузочная флешка с Arch Linux. Загрузитесь с неё, затем смонтируйте раздел вашего жёсткого диска:

Mount /dev/nvme0n1p2 /mnt

Внимание, вместо /dev/nvme0n1p2 впишите ваш диск, например, /dev/sda2

Выполним следующую команду:

Arch-chroot /mnt

В результате вы будто бы окажетесь в вашей основной операционной системе (а не той, которая загрузилась с флешки). То есть вы можете откатить или сделать любые изменения на компьютере, который не загружается.

Чтобы вы поняли всю мощь этого способа: даже если повреждено ядро Linux или загрузчик, этот способ позволяет загрузиться и переключиться на поломанную систему и всё исправить!

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

Когда пользуешься другими сборками Linux, рано или поздно возникает тот момент, когда захочется ее поменять на что-то лучшее.

Так было и у меня. Наигравшись вдоволь с Ubuntu, Debian, Suse и прочими, я понял что они перегружены лишними пакетами и работают не так как хотелось.

Да и после установки приходилось постоянно что-то «допиливать» под себя. Тут и созрела мысль использовать Arch Linux.

И я ни разу не пожалел об этом. Система просто «летает», по сравнению с другими.

Единственный минус на мой взгляд - это обновления, которые могут убить систему наглухо. И что-бы обновиться без падений системы надо залезать на официальный сайт и читать там.

Сам инсталлятор системы позволят поставить только Arch, а среду рабочего стола вам придется выбирать и ставить самостоятельно. Это позволяет отсеять малоопытных и ленивых юзеров. Консоль рулит брат!

Запомнить все шаги не реально, поэтому решил сделать небольшую инструкцию.

После записи образа на съемный носитель, вам необходимо будет загрузиться с него.
Для вас это тоже не составит труда. Ибо, если вы решили поставить Arch linux, то знаете как загрузиться с внешнего носителя.

Если все-таки не знаете - пишите в комментариях, напишу отдельную статью.

После загрузки видим следующее окно с выбором вариантов установки.

Я выбираю самый первый вариант - x86_64. Все зависит от вашего железа. Второй вариант подойдет для слабых компов, если в него хотите вдохнуть «вторую жизнь».

После загрузки попадаем в консоль с правами рута. Остальное придется набирать руками.

Ставим русскую раскладку

# loadkeys ru

Добавим в консоль шрифт, поддерживающий кириллицу

# setfont cyr-sun16

Добавляем русскую локаль

# nano /etc/locale.gen

В этом файле нужно раскоментировать (удалить знак #) строку #ru_RU.UTF-8 UTF-8

После изменения просто жмем Ctrl + X и соглашаемся сохранить файл клавишей Y.

# locale-gen # export LANG=ru_RU.UTF-8

Проверка работы сети

Так как сейчас без интернет никуда, проверяем его наличие. Ведь пакеты для установки придется тянуть из сети.

Проверяем так:

Ping -c 3 google.com

Вы должны получить примерно такой отклик, как на скриншоте. Обратите внимание на надпись «0% packet loss». Это значит что все пакеты приходят без ошибок.

Не советую ставить через wi-fi (если не хотите плясок с настройкой вайфая), лучше подключите ваш ноутбук к стандартному сетевому порту с помощью кабеля.

Вайфай можно настроить и после установки.

Если же вы все-таки решили «плясать» с вайфаем - используйте программу wifi-menu.

Примечание: Если вы получаете сообщение, что интерфейс wlan0 не найден, то узнайте как называется ваш сетевой интерфейс с помощью ifconfig и введите wifi-menu <интерфейс>

Если Arch пишет, что нет такой команды ifconfig, поставьте пакет net-tools.

Если у вас соединение PPPoE: вы можете использовать для настройки pppoe-setup, а для запуска - pppoe-start
Я использую кабельное соединение (LAN) на стационарном компьютере, поэтому описывать настройку выйфая и PPPoE не буду.

Разбиваем жесткий диск

Для создания разделов на жестком диске используем программу cfdisk.

Создаем следующие разделы:

  • Загрузочный размером 100 мб
  • Раздел подкачки (swap), по рекомендациям - на 1 гигабайт больше оперативной памяти. Из личного опыта - если памяти больше 4 гб, то 3 гб подкачки мне хватает за глаза.
  • Для корневого раздела системы - 15 гигабайт. Если жесткий диск большого размера, можно задать 20 гигабайт
  • Для домашнего раздела задаем все оставшееся место на диске

В итоге у вас получится примерно так.


Выбираем запись и сохраняем изменения.

Для загрузочного раздела будем использовать файловую систему ext2

# mkfs.ext2 /dev/sda1 -L boot

Форматируем раздел под swap

# mkswap /dev/sda2 -L swap

Используем ext4 для корневого раздела

# mkfs.ext4 /dev/sda3 -L root

Используем ext4 для домашнего (home) раздела

# mount /dev/sda3 /mnt # mkdir /mnt/{boot,home} # mount /dev/sda1 /mnt/boot # mount /dev/sda4 /mnt/home # swapon /dev/sda2

Выбираем ближайшее зеркало для pacman

Чтобы pacman быстрее загружал пакеты прописываем самый ближний сервер в верху списка.
В нашем случае российский сервер. Действие не обязательное, можно оставить как есть.

# nano /etc/pacman.d/mirrorlist

Вписываем эту строку вверху списка

Server = http://mirror.yandex.ru/archlinux/$repo/os/$arch


Установим базовые пакеты системы.

# pacstrap -i /mnt base base-devel

После закачки и установки всех выбранных пакетов (около 150 мегабайт), мы можем приступить к установке загрузчика.

Для тех, кто устанавливает систему через Wi-Fi необходимо также установить пакеты netctl, dialog и wpa_supplicant

# pacstrap -i /mnt netctl dialog wpa_supplicant

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

# arch-chroot /mnt pacman -S grub-bios

# arch-chroot /mnt pacman -S grub-efi-x86_64

Если вы ставите 32-х битную систему c EFI, то вам нужно использовать пакет grub-efi-i386.

Дальнейшая настройка системы

Генерируем fstab, используя следующую команду:

# genfstab -p /mnt >> /mnt/etc/fstab

Переходим в свежеустановленную систему:

# arch-chroot /mnt /bin/bash

Добавляем в систему русскую локаль:
В файле /etc/locale.gen раскомментируем следующие строки (убираем #)
#en_US.UTF-8 UTF-8
#ru_RU.UTF-8 UTF-8

# nano /etc/locale.gen

Закрываем файл командой Ctrl + X и соглашаемся сохранить изменения.

Обновляем локаль:

# locale-gen

Добавим русскую локаль в консоль:

Открываем файл mkinitcpio.conf (# nano /etc/mkinitcpio.conf) и прописываем хук keymap в разделе HOOKS. В разделе MODULES прописываем драйвер видеокарты:

  • Для Nvidia – nouveau
  • Для Intel – i915
  • Для AMD – radeon

Создадаем RAM диск следующей командой:

# mkinitcpio -p linux

Установливаем загрузчик:

# grub-install /dev/sda

Обновляем grub.cfg:

Внимание: если у вас возникли ошибки при создании grub.cfg, добавьте в файл /etc/default/grub строку GRUB_DISABLE_SUBMENU=y

Устанавливаем пароль для root:

# passwd

# umount /mnt/{boot,home,}

Делаем перезагрузку системы.

# reboot

Заходим под root и изменяем следующие данные в системе на свои.
Меняем имя компьютера (myhostname меняем на ваше):

# hostnamectl set-hostname myhostname

Настраиваем временную зону:

# timedatectl set-timezone Europe/Moscow

Русифицируем нашу систему:

# localectl set-keymap ru # setfont cyr-sun16 # localectl set-locale LANG="ru_RU.UTF-8" # export LANG=ru_RU.UTF-8 #

Добавляем строку FONT=cyr-sun16 в файл /etc/vconsole.conf.

# nano /etc/vconsole.conf

Обновляем загрузочный диск RAM:

# mkinitcpio -p linux

Обновляем grub.cfg:

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

Настроим pacman (только для x86_64):

# nano /etc/pacman.conf

Для того чтобы у вас работали 32 битные программы - раскомментруем (убираем #) две строки, чтобы был доступен репозиторий multilib:

# #Include = /etc/pacman.d/mirrorlist

Внимание: если не загружается ни один пакет, создайте файл /etc/sysctl.d/40-ipv6.conf и запишите в него: net.ipv6.conf.all.disable_ipv6 = 1

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

Добавим своего пользователя (меняем username на свое) и добавляем его в нужные группы:

# useradd -m -g users -G audio,games,lp,optical,power,scanner,storage,video,wheel -s /bin/bash username

Установим пароль для нашего юзера:

# passwd username

Добавим ему информацию GECOS:

# chfn username

Настраиваем сеть

Если у вас проводное подключение

# systemctl enable dhcpcd # systemctl start dhcpcd

Если у вас беспроводное подключение

# wifi-menu

Обновляем все пакеты в системе

# pacman -Syy # pacman -Su

Устанавливаем и настраиваем sudo

# pacman -S sudo

В файле /etc/sudoers снимаем комментарий со строки # %wheel ALL=(ALL) ALL

# EDITOR=nano visudo

Это позволит обычному пользователю использовать команду sudo.
Выходим из сеанса root следующей командой

И заходим под обычным пользователем, которого мы создали.

Установка графической среды.

$ sudo pacman -S xorg-server xorg-xinit xorg-server-utils mesa xterm

Для тачпада или тачскрина установите дополнительно xf86-input-synaptics

Установка драйверов для видеокарты

Пакеты lib32-* устанавливаем только на x86_64 системы.

Sudo pacman -S xf86-video-nouveau lib32-nouveau-dri

Sudo pacman -S xf86-video-intel lib32-intel-dri

Sudo pacman -S xf86-video-ati lib32-ati-dri

Для виртуальной машины:

Sudo pacman -S xf86-video-vesa

Xfce + SLiM

Устанавливаем менеджер входа - Slim и графическое окружение XFCE.
XFCE очень легкий и шустрый, по сравнению с GNOME 3 или KDE.

Sudo pacman -S xfce4 xfce4-goodies slim archlinux-themes-slim

Теперь нужно сделать так, чтобы по команде startx запускался не устаревший twm, а Xfce.

Cp /etc/X11/xinit/xinitrc ~/.xinitrc

Этой командой мы копируем файл.xinitrc если его нет. У меня его никогда не было.
Следующей командой открываем его и редактируем так как на скриншоте.

Nano ~/.xinitrc

Просто находим конец файла, комментируем 5 строк и добавляем в конце строку

Exec startxfce4

Добавим slim в демоны:

Sudo systemctl enable slim.service

Меняем тему входа для Slim (можно не менять).

Sudo nano /etc/slim.conf

Находим там – current_theme default
Меняем на – current_theme archlinux-simplyblack

Для удобства использования системы установим шрифты (по желанию).

Sudo pacman -S ttf-liberation opendesktop-fonts ttf-dejavu ttf-arphic-ukai ttf-arphic-uming ttf-bitstream-vera

Перезагружаем систему командой

Sudo systemctl reboot

Важная информация: При входе требуется одновременно нажать левый и правый Shift для переключения раскладки на английский язык. Только тогда вы сможете ввести логин и пароль и авторизоваться в системе. Дополнительная защита «от дурака», на мой взгляд.

Если вы не хотите каждый раз при входе жать на шифты, то проделайте следующее в терминале:

Sudo nano /etc/X11/xorg.conf.d/00-keyboard.conf

меняете в строке Option “XkbLayout” “ru,us” на
Option “XkbLayout” “us,ru”


Далее ставите программы которые вам нужны в системе.
У меня такой набор:

  • gpm (мышь в терминале)
  • skype
  • pidgin (мессенгер - icq, jabber и др.)
  • opera, firefox, chromium (Браузеры)
  • easystroke (включение дополнительных кнопок и жестов мыши)
  • transmission (торрент-клиент)
  • evince (pdf читалка)
  • gimp (графический редактор)
  • libreoffice (офисный пакет)
  • audacity (обработка звука)
  • filezilla (ftp-клиент)
  • gparted (работа с разделами дисков)
  • unetbootin (создание загрузочных флешек)
  • keepassx (менеджер паролей)
  • thunderbird (почтовый клиент)
  • p7zip, unrar (архиваторы)
  • bash-completion (автодополнение в консоли)
  • file-roller (удобный gui для архиваторов)
  • vlc (плеер для просмотра видео)
  • yaourt (дополнение к pacman для работы с репозиториями AUR)
  • yandex-disk (облако на яндексе)
  • dropbox (облако на dropbox)
  • virtualbox (виртуальная машина)
  • gvfs (нужна для монтирования флешек и съемных накопителей)

После установки gvfs войти в свойства системы и поставить следующие галочки:

Установка всего сразу, кроме yaourt,yandex-disk,dropbox и virtualbox

Sudo pacman -S gpm skype pidgin opera firefox firefox-i18n-ru chromium easystroke transmission-gtk transmission-cli gimp evince libreoffice libreoffice-ru audacity filezilla gparted unetbootin keepassx thunderbird p7zip unrar bash-completion file-roller vlc wget gvfs

В следующей статье читайте, . Он нам понадобится для установки yandex-disk,dropbox и virtualbox.

Сначала мы установим Archlinux и превратим его в загрузочный сервер. Прямо оттуда подготовим новую компактную систему, в которую добавим минимальное графическое окружение и самый необходимый функционал (на примере Firefox). Научим нашу систему загружаться по сети даже на компьютерах с UEFI. Затем полностью переведём её в режим «только для чтения» (сделаем «живой»), что позволит нам использовать систему одновременно хоть на пол сотне разномастных компьютеров с одним единственным загрузочным сервером. Это всё будет работать даже внутри дешёвой 100-Мб сети, которую мы дополнительно «разгоним» в пару раз.

Никакие закладки в жестких дисках будут вам не страшны, потому что дисков у нас не будет. Никакие очумелые ручки пользователей ничего не сломают, т. к. после перезагрузки система вернется в первозданное лично вами состояние. Конечно же, вы научитесь и сможете самостоятельно изменять загружаемую систему таким образом, чтобы в ней содержался только нужный вам функционал и ничего лишнего. Между делом мы выясним, как и в каком порядке загружается Linux, а также из чего он состоит. Знания, как известно, - бесценны, поэтому я делюсь ими даром.

Постараюсь без долгих рассуждений пояснять происходящее, иногда забегая немного вперёд, но впоследствии обязательно раскладывая всё по полочкам. Чтобы у вас вообще не возникало проблем с пониманием, предполагаю, что вы уже работали с каким-нибудь готовым дистрибутивом Linux, пробовали писать простые скрипты с помощью nano или другого текстового редактора. Если вы новичок в ArchLinux, то узнаете много нового, а если «старичок», то узнаете поменьше, но, надеюсь, что в любом случае вы ещё сильнее полюбите Linux.

Информации оказалось очень много. И по устоявшейся голливудской традиции впереди вас ждёт сериал в нескольких частях:
продолжение ;
окончание .

Сейчас мы установим Archlinux в VirtualBox, который можно будет клонировать и запускать практически на любом компьютере с legacy BIOS без каких-либо дополнительных настроек. Между делом мы познакомимся с основными приёмами работы с systemd, а также узнаем как его использовать для запуска произвольных служб и программ во время загрузки. Ещё мы увидим, какие этапы проходит Linux при загрузке, и напишем собственный обработчик (hook), который поместим в initramfs. Не знаете что такое initramfs? Тогда заходите под кат.

Есть много причин, по которым выбор пал именно на Archlinux. Первая причина: он мой давний изворотливый приятель и верный помощник. Gentoo, как пишут на просторах Интернета, ещё более изворотлив, но собирать систему из исходников не хочется. Вторая причина: в готовых сборках всегда содержится много лишнего, а перекачивание больших объемов данных может критично сказаться на производительности сети, да и ничего не видно за широкой спиной «автоматического инсталлятора» - это третья причина. Четвертая: systemd постепенно проникает во все дистрибутивы и даже в Debian , так что мы сможем хорошенько покопаться в грядущем готовых дистрибутивов на примере Archlinux. При всём при этом, систему, которую мы позднее подготовим, можно будет загружать по сети не только сервера, работающего в виртуальной машине, но и с обычного компьютера, например, с Raspberry Pi, и даже с Western Digital My Cloud (проверено), который работает под Debian.

Подготовительные работы

Скачиваем свежий образ по ссылке с официального сайта . В Москве с серверов Яндекса, например, загрузка происходит очень быстро, и если у вас процесс затянулся - просто попробуйте качать в другом месте. Рекомендую запомнить в каком, т. к. эта информация нам ещё пригодится.

В VirtualBox создаем новую виртуальную машину (например, с 1 Гб оперативной памяти и 8 Гб накопителем). В настройках сети необходимо выбрать тип подключения «сетевой мост» и подходящий сетевой адаптер с доступом к сети Интернет. Подключаем скаченный образ к CD-ROM"у. Если не терпится начать работать с железом, то берите флешку и записывайте образ с помощью (если работаете под Windows), а потом загружайте будущий сервер прямо с неё.

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

Passwd
Запускаем сервер SSH командой:

Systemctl start sshd
Остается узнать IP адрес машины, изучив вывод команды:

Ip addr | grep "scope global"
Адрес будет указан сразу после «inet».

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

Базовая установка

Дальше максимально коротко опишу стандартную установку Archlinux. Если появятся вопросы, то ответы на них вы, вероятно, найдете в . Wiki просто замечательная, а англоязычная wiki даже актуальная, так что старайтесь пользоваться именно ей.

Подготавливаем носитель с помощью cfdisk (это консольная утилита с простым и понятным интерфейсом). Нам достаточно одного раздела, только не забудьте пометить его как загрузочный:

Cfdisk /dev/sda
Форматируем в ext4 и устанавливаем метку, например HABR:

Mkfs.ext4 /dev/sda1 -L "HABR"
Будущий корневой раздел монтируем в /mnt:

Export root=/mnt mount /dev/sda1 $root
Archlinux обычно устанавливается через интернет, поэтому сразу после установки у вас будет самая новая и актуальная версия. Список репозиториев находится в файле /etc/pacman.d/mirrorlist. Постарайтесь вспомнить, откуда скачивали дистрибутив и перенесите эти серверы в самое начало списка - так вы серьезно сэкономите время на следующем шаге. Обычно это серверы, географически расположенные там же, где вы сейчас находитесь.

Nano /etc/pacman.d/mirrorlist
Устанавливаем базовый набор пакетов и набор для разработчиков:

Pacstrap -i $root base base-devel
Теперь воспользуемся командой arch-chroot, которая позволяет временно подменить корневой каталог на любой другой, в котором есть структура корневой файловой системы Linux. При этом программы, которые мы оттуда запустим, не будут знать о том, что снаружи ещё что-то существует. Мы практически окажемся в нашей новой системе с правами администратора:

Arch-chroot $root
Обратите внимание, как поменялось приглашение командной строки.

Выбираем языки, которые планируем использовать. Предлагаю оставить en_US.UTF-8 UTF-8 и ru_RU.UTF-8 UTF-8. В текстовом редакторе нужно просто снять комментарии напротив них:

Nano /etc/locale.gen
Теперь генерируем выбранные локализации:

Если всё прошло хорошо, то вы увидите примерно такой текст:

Generating locales... en_US.UTF-8... done ru_RU.UTF-8... done Generation complete.
Устанавливаем язык, который будет использоваться по-умолчанию:

Echo LANG=ru_RU.UTF-8 > /etc/locale.conf
А также раскладку и шрифт в консоли:

Echo -e "KEYMAP=ru\nFONT=cyr-sun16\nFONT_MAP=" > /etc/vconsole.conf

Указываем часовой пояс (я использую московское время):

Ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Придумываем название для нашего будущего сервера:

Echo "HabraBoot" > /etc/hostname
Теперь установим пароль администратора. Делаем мы это в первую очередь из-за того, что SSH не позволит нам подключиться к системе без пароля. Тему неразумности использования системы, незащищенной паролем, здесь мы развивать не будем.

Passwd
Дважды вводим пароль и убеждаемся, что password updated successfully .

Добавим нового пользователя с именем username (можете выбрать любое), наделим его правами администратора и зададим ему пароль из тех же соображений, а ещё и из-за того, что под root в текущей версии Arch мы не сможем собирать пакеты из AUR (Arch User Repository - это репозиторий от сообщества пользователей Arch Linux с программами, которые не вошли в основной репозиторий):

Useradd -m username
Редактируем файл настроек /etc/sudoers с помощью nano:

EDITOR=nano visudo
Добавив в него сразу после строки «root ALL=(ALL) ALL» ещё одну строчку:

Username ALL=(ALL) ALL
И задаём пароль для пользователя username:

Passwd username
Теперь нужно установить загрузчик на внутренний накопитель, чтобы система смогла самостоятельно с него загрузиться. В качестве загрузчика предлагаю использовать GRUB, потому что позже он нам снова пригодится. Устанавливаем пакеты с помощью стандартного для Archlinux менеджера пакетов pacman:

Pacman -S grub
Записываем загрузчик в MBR (Master Boot Record) нашего внутреннего накопителя.

Grub-install --target=i386-pc --force --recheck /dev/sda
Если всё прошло нормально, то вы увидите Installation finished. No error reported .

Выходим из chroot:

Exit
И замечаем, как поменялось приглашение командной строки.

Мы будем использовать метки дисков, подробное объяснение этого утверждения последует позже.

Снимите комментарий со строки GRUB_DISABLE_LINUX_UUID=true , чтобы не использовались UUID накопителей:

Nano $root/etc/default/grub
Генерируем файл конфигурации загрузчика, снова используя arch-chroot. Будет произведён вход, выполнение одной единственной команды, и последует автоматический выход:

Arch-chroot $root grub-mkconfig --output=/boot/grub/grub.cfg
Нам нужно заменить все упоминания /dev/sda1 на LABEL=HABR в файле конфигурации:

Mv $root/boot/grub/grub.cfg $root/boot/grub/grub.cfg.autoconf && cat $root/boot/grub/grub.cfg.autoconf | sed "s/\(root=\)\/dev\/sda1/\1LABEL=HABR/g" > $root/boot/grub/grub.cfg
Если поменять в этом же файле строку set lang=en_US на set lang=ru_RU , то загрузчик будет общаться с нами на великом и могучем.

Генерируем файл fstab с ключом -L, который заставит генератор использовать метки дисков:

Genfstab -p -L $root > $root/etc/fstab
На этом базовая установка ArchLinux закончена. Система будет загружаться самостоятельно и встретит вас приветливым русскоязычным интерфейсом командной строки. Если после этого мы введем команду dhcpcd, то скорее всего даже Интернет заработает. Но мы пока не будем торопиться с перезагрузкой.

Запуск при загрузке с помощью systemd на примере NTP и SSH

Поскольку наша система будет общаться с другими компьютерами, нам потребуется синхронизировать время. Если время на сервере и клиенте будет отличаться, то существует большая вероятность того, что они вообще не смогут соединиться друг с другом. В свою очередь sudo может начать просить пароль после каждого действия, думая, что таймаут авторизации давно истёк. И кто знает, с чем нам ещё предстоит столкнуться? Перестрахуемся.

Чтобы синхронизировать время с серверами через Интернет по протоколу NTP, нам нужно установить недостающие пакеты. Можно воспользоваться arch-root, но но мы обойдёмся ключами, которые сообщат новое место для установки менеджеру пакетов:

Pacman --root $root --dbpath $root/var/lib/pacman -S ntp
Настроим получение точного времени с российских серверов:

Mv $root/etc/ntp.conf $root/etc/ntp.conf.old && cat $root/etc/ntp.conf.old | sed "s/\(\).*\(.pool.ntp.org\)/\1.ru\2/g" | tee $root/etc/ntp.conf

Нам достаточно синхронизировать время один раз при загрузке. Раньше мы бы записали запуск службы точного времени в файл rc.local, но сейчас появился менеджер системы и служб systemd, который старается запускать службы (в оригинале они называются unit) параллельно для уменьшения времени загрузки системы. Естественно, что работоспособность одной службы может зависеть от функционирования другой. Например, нам бесполезно пытаться синхронизировать время через Интернет до того, как у нас на компьютере заработает сеть. Чтобы описать все эти взаимосвязи, уже недостаточно простого указания имени исполняемого файла, поэтому запуск посредством systemd стал весьма нетривиальным занятием. Для этой цели были созданы специальные файлы с расширением ".service". В них указаны зависимости, имена исполняемых файлов и другие параметры, которые нужно учитывать для успешного запуска. В частности, для управления этапами загрузки в systemd используются цели (target), которые по возлагаемым на них задачам схожи с уровнями запуска (runlevel). Подробности читайте в вики .

К радости новичков, вместе с пакетом ntp поставляется уже готовый ntpdate.service. Все файлы, описывающие запуск служб, находятся в папке $root/usr/lib/systemd/system/, и их можно открыть в любом текстовом редакторе или посмотреть обычным образом. Вот, например, $root/usr/lib/systemd/system/ntpdate.service:

Description=One-Shot Network Time Service After=network.target nss-lookup.target Before=ntpd.service Type=oneshot PrivateTmp=true ExecStart=/usr/bin/ntpd -q -n -g -u ntp:ntp WantedBy=multi-user.target
В блоке в строке Description указывается краткое описание службы, и при каких условиях она должна быть запущена (в данном случае, после запуска сети, но до перед запуском сервера NTP, который мы вообще не планируем запускать). Запрос точного времени происходит единственный раз во время загрузки, и за это отвечает строка Type=oneshot из блока . В этом же блоке в строке ExecStart указаны действия, которые необходимо выполнить для запуска сервиса. В блоке в нашем случае указано, что запуск нашей службы необходим для достижения цели multi-user.target. Рекомендуется использовать такое же содержание блока для запуска самодельных служб.

В качестве первого практического примера мы немного расширим функциональность ntpdate.service, попросив его дополнительно исправлять время на аппаратных часах. Если после этого, на этом же самом компьютере вы загрузите Windows, то увидите время по Гринвичу, так что не пугайтесь.

Изменение стандартного поведения любой службы systemd производится следующим образом: сначала в папке /etc/systemd/system/ создается новый каталог с полным именем службы и расширением ".d", куда добавляется файл с произвольным именем и расширением ".conf", и уже там производятся нужные модификации. Приступим:

Mkdir -p $root/etc/systemd/system/ntpdate.service.d && echo -e "\nExecStart=/usr/bin/hwclock -w" > $root/etc/systemd/system/ntpdate.service.d/hwclock.conf
Здесь просто говорится о том, что во сразу после запуска службы выполнить команду "/usr/bin/hwclock -w", которая переведёт аппаратные часы.

Добавляем службу ntpdate в автозагрузку (синтаксис стандартен для всех служб):

Arch-chroot $root systemctl enable ntpdate Created symlink from /etc/systemd/system/multi-user.target.wants/ntpdate.service to /usr/lib/systemd/system/ntpdate.service.
Как видите, в каталоге multi-user.target.wants создалась обыкновенная символическая ссылка на файл ntpdate.service, а упоминание о цели multi-user.target мы видели в блоке этого самого файла. Получается для того, чтобы система достигла цели multi-user.target, должны быть запущены все службы из каталога multi-user.target.wants.

Теперь устанавливаем пакет SSH аналогичным способом (в ArchLinux он называется openssh):

Pacman --root $root --dbpath $root/var/lib/pacman -S openssh
Но на этот раз для автозапуска мы будем использовать сокет, чтобы сервер SSH стартовал только после поступления запроса на подключение, а не висел мёртвым грузом в оперативной памяти:

Arch-chroot $root systemctl enable sshd.socket
Мы не поменяли стандартный 22-й порт и не включили принудительное использование Protocol 2 - пусть это останется на моей совести.

Забегая вперед или знакомимся с обработчиками (hooks)

Чтобы мы могли не глядя подключиться к нашему будущему серверу, нам нужно знать его IP адрес. Будет намного проще, если этот адрес - статический. Обычные способы, о которых говорится в вики, нам не подходят. Проблема в том, что сетевые адаптеры в современном мире именуются согласно своему физическому расположению на материнской плате. Например, имя устройства enp0s3 означает, что это сетевой адаптер ethernet, который расположен на нулевой шине PCI в третьем слоте (подробности ). Сделано так для того, чтобы при замене одного адаптера другим, имя устройства в системе не поменялось. Такое поведение нам не желательно, т. к. на разных моделях материнских плат положение сетевой карты может быть разным, и когда мы попытаемся перенести наш загрузочный сервер из VirtualBox на реальное железо, нам скорее всего придётся загружаться с клавиатурой и монитором, чтобы правильно настроить сеть. Нам нужно, чтобы имя сетевого адаптера стало более предсказуемым, например, eth0 (это место зарезервировано смайликом).

Почему будем делать так?

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


Устанавливаем пакет mkinitcpio-nfs-utils, и у нас появится обработчик (hook) под названием «net»:

Pacman --root $root --dbpath $root/var/lib/pacman -S mkinitcpio-nfs-utils

По-умолчанию, все файлы обработчика попадают в /usr/lib/initcpio/. Обычно это парные файлы с одинаковым названием, один из которых окажется в подкаталоге install, а другой - в hooks. Сами файлы являются обычными скриптами. Файл из папки hooks обычно попадает внутрь файла initramfs (позже мы о нём всё узнаем) и выполняется при загрузке системы. Второй файл из пары попадает в папку install. Внутри него есть функция build(), в которой находятся сведения о том, какие действия нужно выполнить во время генерации файла initramfs, а также функция help() с описанием того, для чего предназначен данный обработчик. Если запутались, то просто читайте дальше, и всё сказанное в этом абзаце встанет на свои места.

Папка initcpio также присутствует в каталоге /etc, и в ней тоже есть подкаталоги install и hooks. При этом она имеет безусловный приоритет над /usr/lib/initcpio, т. е. если в обеих папках окажутся файлы с одинаковыми названиями, то при генерации initcpio будут использоваться файлы из /etc/initcpio, а не из /usr/lib/initcpio.

Нам нужно немного поменять функциональность обработчика net, поэтому просто скопируем файлы из /usr/lib/initcpio в /etc/initcpio:

Cp $root/usr/lib/initcpio/hooks/net $root/etc/initcpio/hooks/ && cp $root/usr/lib/initcpio/install/net $root/etc/initcpio/install/
Приводим файл hooks/net к следующему виду:

Cat $root/etc/initcpio/hooks/net # vim: set ft=sh: run_hook() { if [ -n "$ip" ] then ipconfig "ip=${ip}" fi } # vim: set ft=sh ts=4 sw=4 et:

Теперь откроем файл $root/etc/initcpio/install/net и увидим, что в функции help() отлично написано, что из себя должна представлять переменная «ip»:
ip=::::::
Останется просто установить значение переменной, чтобы задать статический IP адрес и название сетевого устройства, например так «192.168.1.100::192.168.1.1:255.255.255.0::eth0:none» (здесь и далее используйте подходящие для себя настройки сети). В следующем разделе вы узнаете, где именно задаётся значение.

А пока уберём всё лишнее из файла $root/etc/initcpio/install/net. Оставляем загрузку модулей сетевых устройств, программу ipconfig, которую использовали выше, и, естественно, сам скрипт из папки hooks, выполняющий всю основную работу. Получится примерно следующее:

Cat $root/etc/initcpio/install/net #!/bin/bash build() { add_checked_modules "/drivers/net/" add_binary "/usr/lib/initcpio/ipconfig" "/bin/ipconfig" add_runscript } help() { cat < Когда во время загрузки менеджер устройств systemd-udevd попробует переименовать наше сетевое устройство в привычное ему predictable network interface name, например, в enp0s3, то у него ничего не получится. Почему - читайте дальше.

Как происходит загрузка системы

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

Как раз такой загрузчик мы записали в MBR нашего накопителя. Мы использовали GRUB, в настройках которого (файл grub.cfg) указали, что корневой раздел находится на диске с меткой HABR. Вот эта строка целиком:

Linux /boot/vmlinuz-linux root=LABEL=HABR rw quiet
Здесь упомянут файл vmlinuz-linux, который является ядром системы, а указатель на корневую систему является его параметром. Мы просим искать корневую систему на устройстве с меткой HABR. Здесь также мог бы быть уникальный для каждого накопителя UUID, но в этом случае при переносе системы на другой диск нам несомненно пришлось бы его изменить. Если бы мы указали положение корневой системы привычным для линуксоидов образом: /dev/sda1, то не смогли бы загрузиться с USB накопителя, т. к. это имя USB накопитель бы получил только будучи единственным накопителем в компьютере. Маловероятно, что в компьютере окажется ещё один накопитель с меткой HABR, но не стоит об этом забывать.

Здесь же устанавливается значение глобальной переменной «ip» для нашего обработчика «net» (не забудьте поменять адреса на используемые в вашей сети):

Linux /boot/vmlinuz-linux root=LABEL=HABR rw quiet ip=192.168.1.100::192.168.1.1:255.255.255.0::eth0:none

В соседней строке есть упоминание файла initramfs, с которым я обещал разобраться:

Название initramfs образовано от initial ram file system. Это на самом деле обычная корневая файловая система Linux, упакованная в архив. Она разворачивается в оперативной памяти во время загрузки и предназначена для того, чтобы найти и подготовить корневую файловую систему нашего linux, который мы пытаемся загрузить в итоге. В initramfs есть всё необходимое для этих целей, ведь это настоящий «маленький линукс», который может выполнять многие обычные команды. Его возможности расширяются с помощью обработчиков (hooks), которые помогают сформировать новую корневую файловую систему нашего linux.

После того, как программы из initramfs выполнят свою работу, управление дальнейшей загрузкой передается процессу init подготовленной корневой файловой системы. В качестве процесса init Archlinux использует systemd.

Менеджер устройств systemd-udevd является частью systemd. Он, как и его старший брат, старается обнаруживать и настраивать все устройства в системе параллельно. Он начинает свою работу одним из первых, но уже после того, как наш обработчик net инициализирует сетевую карту ещё на на этапе работы initramfs. Таким образом, systemd-udevd не может переименовать используемое устройство, и имя eth0 сохраняется за сетевой картой в течение всего времени работы.

Обязательно убираем обработчик autodetect. Он проверяет устройства установленные в данном конкретном компьютере, и оставляет только необходимые для них модули в initramfs. Нам этого не нужно, поскольку мы изначально рассматриваем возможность дальнейшего переноса системы на другой компьютер, который аппаратно скорее всего будет отличаться от используемой виртуальной машины.

Достаточный для наших целей список обработчиков включая созданный нами net выглядит следующим образом:
HOOKS="base udev net block filesystems"
вставляем эту строку в файл mkinitcpio.conf, а старую комментируем:
nano $root/etc/mkinitcpio.conf

На базе стандартного пресета linux создаем свой пресет habr:

Cp $root/etc/mkinitcpio.d/linux.preset $root/etc/mkinitcpio.d/habr.preset

И приводим его к такому виду:
cat $root/etc/mkinitcpio.d/habr.preset ALL_config="/etc/mkinitcpio.conf" ALL_kver="/boot/vmlinuz-linux" PRESETS=("default") default_image="/boot/initramfs-linux.img"

Нам не нужна ветка "fallback", которая удаляет из обработчиков autodetect, ведь мы его уже сами убрали, и нам не нужно дважды генерировать одинаковый файл initramfs с разными названиями.

Генерируем новый initramfs с помощью пресета habr:

Arch-chroot $root mkinitcpio -p habr

Пишем службу обновления DNS для использования с systemd

Наша сетевая карта получает все настройки для того, чтобы работала сеть и Интернет. Но названия сайтов переводиться в IP адреса не будут, т. к. наша система не знает, какие серверы DNS следует для этого использовать. Напишем собственную службу для этих целей, которую при загрузке будет запускать systemd. А чтобы узнать что-то новое и не заскучать от однообразия, передадим информацию о названии сетевого устройства в качестве параметра, а список DNS серверов сохраним во внешнем файле.

Обновлением информации о DNS серверах занимается resolvconf. Нам идеально подходит синтакскис:

Resolvconf [-m metric] [-p] -a interface В импортируемом здесь файле IP адрес каждого сервера указывается в новой строке после ключевого слова nameserver. Можно указать сколько угодно серверов, но использоваться будут только первые 3 из них. В качестве примера воспользуемся серверами Яндекс. В этом случае файл, передаваемый в resolvconf, должен выглядеть вот так:

Nameserver 77.88.8.8 nameserver 77.88.8.1
Нам нужно получать информацию о DNS серверах до того, как система будет уверена, что сеть полностью работает, т. е. до достижения цели network.target. Будем считать, что информацию о серверах нам достаточно обновлять один раз во время загрузки. И стандартно скажем, что нашу службу требует цель multi-user.target. Создаём файл запуска службы в каталоге со следующим содержанием:

Cat $root/etc/systemd/system/[email protected] Description=Manual resolvconf update (%i) Before=network.target Type=oneshot EnvironmentFile=/etc/default/dns@%i ExecStart=/usr/bin/sh -c "echo -e "nameserver ${DNS0}\nnameserver ${DNS1}" | resolvconf -a %i" WantedBy=multi-user.target
В строке ExecStart мы выполняем команду echo, на лету генерирующую файл со списком серверов, который через конвейер передаем resolvconf. Вообще, в строке ExecStart нельзя использовать несколько команд и тем более нельзя использовать конвейеры, но мы снова всех обманули, передав эти команды в качестве параметра -c для /usr/bin/sh.

Обратите внимание, что в названии файла [email protected] используется символ @, после которого можно указать переменную, и она попадёт внутрь файла, заменив собой "%i". Таким образом строка EnvironmentFile=/etc/default/dns@%i превратится в EnvironmentFile=/etc/default/dns@eth0 - именно это название внешнего файла, мы будем использовать для хранения значения переменных DNS0 и DNS1. Синтаксис как в обычных скриптах: «название переменной=значение переменной». Создадим файл:

Nano $root/etc/default/dns@eth0
И добавим следующие строки:

DNS0=77.88.8.8 DNS1=77.88.8.1

Теперь добавляем службу в автозагрузку не забывая указать имя сетевой карты после @:

Arch-chroot $root systemctl enable [email protected]
Только что мы написали универсальный файл, обеспечивающий запуск службы. Универсальность заключается в том что, если в нашей системе окажется несколько сетевых адаптеров, то для каждого из них мы сможем указать свои собственные DNS серверы. Нужно будет просто подготовить набор файлов со списком серверов для каждого из устройств и запускать службу для каждого адаптера в отдельности указывая его имя после @.

Перед первым запуском

На этом первоначальная настройка закончена. Нам нужно загрузить установленный ArchLinux с внутреннего накопителя, чтобы произведённые нами изменения вступили в силу.

Отключаем готовую корневую систему:

Umount $root
И выключаем виртуальную машину:
initramfs Добавить метки

Не так давно перешел на Арч, и доволен данной системой более, чем полностью. Для тех же, кто только решает устанавливать ли на свой компьютер Arch Linux, для начала поясню, что их ждет при переходе с других систем. В отличие от Ubuntu, Arch не имеет столь богатого содержания "жизненно необходимых" программ, которыми рядовой пользователь не то что не пользуется, но и даже не подозревает об их существовании в системе, а главное назначении. Здесь пользователю предоставлено право выбора, что устанавливать, а что нет.

Соответственно, в готовой системе не будет ничего лишнего, только то, что пользователь сам захочет. Если Вы привыкли к шрифтам в Ubuntu, то в любом другом дистрибутиве с ними придется немного повозиться, и Арч не исключение. По сравнению с Gentoo здесь отсутствует возможность использования USE-флагов, но многих это ничуть не разочаровывает, а что касается времени установки...

Дабы развеять миф о сложности и длительности установки Arch Linux, сразу скажу, что установка в первый раз может занять от полутора до двух-трех часов, если устанавливать по мануалу, осознавая каждую команду. В основном же на установку самой системы (голой) уходит до 20 минут, после чего устанавливается необходимая среда окружения (DE) и драйвера на видеокарту (все это около часа), и можно приступать к настройке внешнего вида системы, плюшек, установке дополнительного ПО и т.д. На последнее у новичка может уйти не один день, однако, система то будет в это время уже рабочей.

Обновления в Arch появляются если не в тот же день, то на следующий. В этом есть как свои плюсы, так и свои минусы: всегда свежее ПО не означает всегда стабильное. Однако, "уронить" систему обновлениями мне еще ни разу не удавалось.

Вот, в принципе, небольшое предисловие для тех, кто еще находится в раздумьях. А для тех, кто уже решился на установку Arch Linux, начнем;)

Подготовка к установке

Для установки нам понадобится установочный образ Arch Linux. Скачать его можно с соответствующей страницы официального сайта. Какой из образов качать, а также как и на что его записывать, я объяснять не буду, потому как если вы решились на установку этого дистрибутива, то соответствующие знания у вас уже должны иметься. Лично я выбрал образ "Core Image" и записал его на флешку с помощью dd.

Со встроенной в установщик программой разметки диска справляются не все, поэтому советую заранее подготовить разделы под систему, как это сделать уже описывалось в . Обычно выделяют разделы под корень / , swap, и по желанию под /home. Остальное редко выделяют в отдельные партиции.

Установочный образ у нас записан, жесткий диск для установки системы готов, перейдем к непосредственной загрузке и установке Arch Linux.

Загрузка с установочного образа

Загрузившись с диска (флешки) первым делом мы увидим окно выбора загрузки.

Выбираем "Boot Arch Linux", ждем окончания загрузки образа и вывода приглашения для ввода логина. Вводим логин root, для вызова установщика набираем команду

/arch/setup

На приветствие установщика отвечаем "ОК", и видим главное меню установщика, состоящее из 8 пунктов: Select Source (выбор источника установки), Set Clock (установки времени), Prepare Hard Disk(s) (подготовка жесткого диска), Select Packages (выбор пакетов для установки), Install Packages (установка выбранных пакетов), Configure System (конфигурация системы), Install Bootloader (установка загрузчика), Exit Install (выход из программы установки).

Переходим к первому пункту, выбираем источник установки: для CD/DVD или флеш - это первый вариант (cd), для установки по сети - второй (net). На предупреждение о том, что можно вручную подключить сторонние источники, отвечаем "ОК". Во втором пункте настраиваем область и временную зону, выставляем время и возвращаемся в меню, не буду подробно расписывать этот момент.

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

Так как я устанавливаю систему на виртуальную машину, то в примере у меня всего один раздел, который я выделяю под корень (/), у вас же разделов может быть больше. Выбираем нужный раздел и присваиваем ему соответствующую файловую систему, а также точку монтирования

Параметры, указанные на следующих двух картинках, можно оставить пустыми

Перед возвращением к главному меню может появиться предупреждение о том, что мы указали не все разделы: программа-установщик предлагает нам выделить в отдельный раздел /boot, а также создать swap. Если не желаем этого делать, просто игнорируем предупреждение и идем дальше

Мы подошли к выбору пакетов для установки. Установщик сразу информирует нас о том, что пакеты разделены на 2 части: base и base-devel. Если не хотим разбираться с каждым пакетом отдельно, просто заходим в base и пробелом выделяем для установки каждый пакет.

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

После установки пакетов жмем "Continue", и переходим к самому страшному для новичков этапу - конфигурации системы. Для правки файлов лучше всего выбрать nano, если, конечно, вам не привычнее какой-либо другой редактор.

Настройка конфигурационных файлов

Самым главным конфигурационным файлом, пожалуй, является файл /etc/rc.conf, с него и начнем. Первый параметр, который нам нужно указать - это LOCALE. Нам нужна локаль ru_RU.UTF-8. Для этого переходим в другую виртуальную консоль (ALT+F2), логинимся под рутом (root), выполняем команду

Locale -a

Нужной нам локали нет, необходимо ее создать

Nano /etc/locale.gen

В данном файле нужно раскомментировать (убрать #) строку ru_RU.UTF-8 UTF-8 , и пересохранить файл (Ctrl+O, Enter, Ctrl+X). Теперь сгенерируем локали, выполним команду

Locale-gen

Мы должны увидеть нашу локаль в списке сгенерированных. Теперь переходим обратно к конфигурации rc.conf (Alt+F1), и в LOCALE вписываем значение ru_RU.UTF-8 .
HARDWARECLOCK - время мы уже настраивали во время установки, и здесь, если второй системой установлена Windows, ставим localtime . Иначе - UTC .
TIMEZONE - должно быть уже выставлено (Europe/Moscow), так как часовой пояс мы уже настраивали.
KEYMAP - пишем ru .
CONSOLEFONT - шрифт в консоли, пишем cyr-sun16 для поддержки кириллицы.
CONSOLEMAP - оставляем поле пустым.
USECOLOR - использовать цвет в консоли. По умолчанию стоит yes , не меняем.

MOD_AUTOLOAD - оставляем yes, чтобы автоматически проверялись и загружались необходимые модули.
MODULES - здесь указываются модули для загрузки. Пока оставляем пустым, данный параметр будет заполняться в процессе использования системы (установки программ и модулей).
USELVM - оставляем по умолчанию.

HOSTNAME - впишем сюда имя хоста, любое (например, сайт).
eth0 - По умолчанию - dhcp . Если используем статический IP адрес - закомментируем строку с "dhcp" и расскоментируем строку с адресом вида eth0="eth0 192.168.0.5 netmask 255.255.255.0 broadcast 192.168.1.255 . В данном случае, наш IP - 192.168.0.5.
INTERFACES - впишем сюда через пробел все сетевые интерфейсы (или те, что хотим использовать). Узнать их можно с помощью команды ifconfig -a (в соседней виртуальной консоли).
gateway - если используем статический IP - устанавливаем адрес шлюза (например, адрес нашего ADSL модема).
ROUTES - убираем восклицательный знак, если используем статический IP.

DAEMONS - пока оставляем как есть. Эти демоны будут загружаться при старте системы (если перед демоном поставить знак "@", то он будет загружаться в фоновом режиме, если знак "!", то демон не будет загружен).

Вот пример того, что должно получиться в итоге:

LOCALE="ru_RU.UTF-8"
HARDWARECLOCK="localtime"
TIMEZONE="Europe/Moscow"
KEYMAP="ru"
CONSOLEFONT="cyr-sun16"
CONSOLEMAP=
USECOLOR="yes"

MOD_AUTOLOAD="yes"
#MOD_BLACKLIST=() #deprecated
MODULES=()
USELVM="no"

HOSTNAME="сайт"

eth0="dhcp"
INTERFACES=(eth0)

gateway="default gw 192.168.0.1"
ROUTES=(!gateway)

DAEMONS=(syslog-ng network netfs crond)

Сохраняем изменения (Ctrl+O) и выходим (Ctrl+X).

/etc/fstab
Файл содержит сведения о дисках (разделах), cd/dvd, floppy и тп.
Пока можно оставить его без изменений.

/etc/mkinitcpio.conf
Файл для точной настройки начальной файловой системы. Оставляем как есть.
/etc/modprobe.d/modprobe.conf
Сообщает ядру, какие модули будут загружены для устройств и какие опции будут выставлены. Пока оставляем неизменным.

/etc/resolv.conf
Нуждается в правке только в том случае, если используется статический IP. Сюда следует вписать DNS сервера, которые используются. Если используется роутер (или adsl модем), где DNS сервера уже указаны - вписываем сюда IP роутера (который указывали в rc.conf). Пример:

#IP роутера
nameserver 192.168.0.1
#DNS
nameserver 212.96.96.38
nameserver 212.96.104.129

/etc/hosts
Создает соответствие между IP адресом, именем и псевдонимом какого либо хоста. Оставляем без изменений.

/etc/hosts.allow и /etc/hosts/deny
Если не планируется ssh демон - оставляем без изменений.

/etc/locale.gen
С локалями мы уже разобрались, редактируя rc.conf.

/etc/pacman.conf
Файл настройки пакетного менеджера pacman. Возможно, вы захотите раскомментировать репозиторий или добавить другие репозитории.
Вот небольшой пример (последняя секция REPOSITORIES):

# Раскомментируйте, для возможности получения пакетов из testing
# репозитория
#
#



Include = /etc/pacman.d/mirrorlist


# Add your preferred servers here, they will be used first
Include = /etc/pacman.d/mirrorlist


# Add your preferred servers here, they will be used first
Include = /etc/pacman.d/mirrorlist
# Include = /etc/pacman.d/community

/etc/pacman.d/mirrorlist
Список зеркал пакетного менеджера. Вот пример:

# Russia
Server = ftp://mirror.yandex.ru/archlinux/$repo/os/i686
Server = http://mirror.yandex.ru/archlinux/$repo/os/i686
Server = http://archlinux.freeside.ru/$repo/os/i686
Server = ftp://mirror.svk.su/archlinux/$repo/os/i686
Server = http://mirror.svk.ru/archlinux/$repo/os/i686
#
Server = http://repo.archlinux.fr/i686
Server = ftp://ftp.archlinux.org/community/os/i686

На этом настройка конфигурационных файлов закончена, обязательно задаем Root-Password, и выходим, нажимая "Done" в конце списка. Ждем окончания работы конфигуратора, переходим к установке загрузчика.

Нам предлагается либо установить GRUB, либо не устанавливать загрузчик совсем. Естественно, устанавливать будем, выбираем соответствующий пункт меню. Теперь нам предлагается проверить конфигурационный файл загрузчика, и при неообходимости подправить его. Можно оставить все как есть, а если используется второй системой Windows, то достаточно просто раскомментировать последние строчки в файле:

title Windows
rootnoverify (hd0,0)
makeactive
chainloader +1

Выбором цветов для отображения и таймаутом задержки займемся позже, если будет нужно, сейчас это не принципиально. Сохраняем изменения, выходим из редактора, выбираем установку загрузчика в /dev/sda . Ждем сообщения об успешной установке загрузчика, завершаем установку системы выбором "Exit Install" в главном меню, пишем в консоли reboot. Все, система установлена, но пока она "голая", в ней нет ни пользователей, ни драйверов, ни графической оболочки.

Первая проба

Перезагружаемся, вынимаем диск (флешку), загружаем уже установленную систему с жесткого диска. Система требует представиться, вводим логин root и пароль, заданный нами во время установки.

Теперь сделаем полное обновление системы:

Pacman -Syu

Если обновление не выполнено, копаем в сторону /etc/pacman.d/mirrorlist , скорее всего, забыли раскомментировать зеркала из секций Any и Russian. Если же обновление запустилось, скорее всего, потребуется сперва обновить пакетный менеджер pacman, о чем система сама и попросит.

Так как недавно вышла новая версия pacman, то теперь требуется сделать конвертацию базы командой

Pacman-db-upgrade

Снова запускаем обновление системы, соглашаясь с установкой и заменой пакетов

Pacman -Syu

Обновление выполнили, теперь неплохо бы и пользователя отдельного создать, не все же под рутом работать. Пишем

Adduser

Система запросит логин для нового пользователя, задаем его.
User ID - пропускаем, ID будет присвоен автоматически.
Initial group - основная группа пользователя, оставляем users.
Additional groups - дополнительные группы для пользователя. audio - если будем использовать звуковую систему; storage - управление flash-накопителями и пр.; video - для видео и 3d; wheel - использование sudo; lp - управление печатью. Пишем: audio, storage, video, wheel, lp .
Home directory - домашняя директория, оставляем по-умолчанию (=имя пользователя).
Shell - командная оболочка, оставляем bash.
Expire date - дата, до которой пользователь будет активен. Оставляем пустым.
Жмем Enter - аккаунт создан.

Настройка "Иксов"

Теперь настроим "иксы", установим xorg и пакет mesa:

pacman -Sy xorg
pacman -S mesa

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

После установки драйвера видеокарты выполните

Xorg -configure

Перейдем к редактированию xorg.conf (под рутом):

Nano /root/xorg.conf.new

Проверяем, правильно ли определился драйвер видеокарты. Привожу пример своего xorg.conf (его копировать не нужно! Не факт, что у вас такое же железо).
Если все ОК, копируем свой xorg.conf в рабочую директорию:

Cp /root/xorg.conf.new /etc/X11/xorg.conf

Установка DE

Здесь приведу примеры установки GNOME и XFCE (ставьте на свой вкус).

Для установки GNOME пишем

pacman -S gnome
pacman -S gnome-extra

Для установки XFCE пишем

Pacman -S xfce4 xfce4-goodies dbus gnome-icon-theme

Запускаем необходимые демоны

/etc/rc.d/hal start
/etc/rc.d/fam start

Добавим их в секцию DAEMONS в /etc/rc.conf . Пример: DAEMONS=(@syslog-ng @network hal fam @netfs @crond alsa)

Su username

Создаем файл.xinitrc для запуска DE

Nano ~/.xinitrc

Вписываем в него (для GNOME)

Exec ck-launch-session gnome-session

или (для XFCE)

Exec startxfce4

После этого можно запускать "иксы"

Настройка системы

Для удобства сразу установим yaourt для работы с пользовательским репозиторием AUR. Подключим содержащий yaourt репозиторий. Открываем

Nano /etc/pacman.conf

в конец добавляем (для x86)


Server = http://repo.archlinux.fr/i686
или (для x86_64)


Server = http://repo.archlinux.fr/x86_64

и ставим сам пакет

Pacman -Sy yaourt

Для настройки звука ставим

Pacman -S alsa-utils

настраиваем, выполняя под рутом

Alsamixer

Сохраняем настройки микшера командой

Alsactl store

Про установку различных дисплейных менеджеров рассказывать в данной статье я не буду, но вы можете сами выбрать, что установить: gdm, xdm, kdm, slim и т.д.

Вот, в принципе, и все. У нас установлена практически голая система. Что сделать из нее дальше - решать вам, я лишь попытался описать процесс установки и первоначальной настройки системы. Получилось не так коротко, как я планировал, но поверьте, устанавливается Арч намного проще, чем кажется на первый взгляд. Если будут вопросы, задавайте в комментариях к статье, попробуем разобраться вместе.

Loading...Loading...