В последнее время я стал замечать, что Ubuntu как-то не особо мотивирует меня разбираться в том, как работает система. Я просто кликаю мышкой, и все работает. А почему оно работает — этого я не понимаю. Другое дело FreeBSD. Но в последнее время FreeBSD разочаровывает меня большим количеством багов, проявляющихся на десктопе (список можно найти в конце этого поста ). После недолгой консультации с коллегами, я решил попробовать Arch Linux. Этот дистрибутив в чем-то напоминает FreeBSD (минимализмом, наличием как бинарных пакетов, так и своего аналога портов) и вполне заслуженно славится своим прекрасным wiki-сайтом , который регулярно показывается мне в выдаче Google.
Примечание: Как чуть более сложную, но и более гибкую, альтернативу без бинарных пакетов мне предлагали Gentoo. Этот дистрибутив мне тоже нравится, и я даже когда-то его немного использовал. Возможно, когда-нибудь я поставлю его прямо рядом с Arch Linux, для разнообразия. Следует также отметить, что Arch работает только на x86/x64, а Gentoo можно запустить практически на любом CPU. И кстати, говорят, что для особо тяжелых приложений, вроде Chromium, бинарные пакеты в Gentoo все-таки есть.
Установка
Все эксперименты проводились на моем многострадальном Fujitsu Lifebook E733 .
Качаем iso-образ системы , проверяем его контрольные суммы, записываем на установочную флешку, загружаемся с нее — тут все как обычно. После загрузки попадаем в обычную консоль (используется zsh ), никакого инсталлятора не предусмотрено. Ethernet-сеть подключилась и настроилась по DHCP сама, тут мне ничего настраивать не пришлось.
Закатываем рукава. Первым делом нужно разбить диск, на который мы поставим систему. Находим нужный диск — в моем случае это был /dev/sda:
Создаем новые разделы, используя таблицу разделов GPT:
Введите ?
для вывода списка доступных команд, затем n
для создания нового раздела, p
для вывода текущего списка разделов, w
для записи таблицы разделов и q
для выхода. Не бойтесь, тот все и вправду очень просто!
В Arch Wiki приводятся некоторые рекомендации по размеру разделов . Кстати, зачем так заморчиваться по поводу разделов? Почему нельзя просто свалить все в один большое корень? В принципе, можно, но лучше не стоит. В случае с серверами разделы можно раскидать по разным физическим дискам, распределив нагрузку по IO. На десктопе разделы гарантируют, что из-за пользователя, накачавшего слишком много торрентов, система не встанет колом. И так далее.
В моем случае размер диска составляет 238.5 Гб (речь о «правильных» гигабайтах, на самом диске написано, что это 250 Гб). Я выделил 300 Мб под /boot, как рекомендует Wiki, 200 Гб под /home, мне этого должно более чем хватить, еще 20 Гб отдал под корень, а оставшиеся ошметки (18.2 Гб) достались /var. На swap я забил, в будущем при жалении можно будет отжать немного у /var.
Важно! Забегая вперед, хочу заметить, что может иметь смысл зарезервировать несколько мегабайт для нужд загрузчика. См пример установки GRUB далее.
На созданных разделах создаем файловые системы и монтируем их в /mnt. Я использовал старую-добрую ext4, но кто-то предпочитает xfs. Помимо них в Arch также доступна btrfs, reiserfs и другие.
mkfs.ext4 / dev / sda2
mkfs.ext4 / dev / sda3
mkfs.ext4 / dev / sda4
mount / dev / sda3 / mnt
cd / mnt
mkdir boot home var
mount / dev / sda1 / mnt / boot
mount / dev / sda2 / mnt / home
mount / dev / sda4 / mnt / var
Ставим группу пакетов base в /mnt:
Генерируем файл /etc/fstab:
Делаем chroot в нашу новую систему:
Выбираем таймзону:
Генерируем /etc/adjtime (системные часы должны быть в UTC, если это не так — переведите их после перезагрузки):
Сейчас уже можно доустановить дополнительных пакетов, например:
Раскомментируем строчку en_US.UTF-8 UTF-8
в /etc/locale.gen, затем говорим:
echo LANG =en_US.UTF- 8 > / etc / locale.conf
Настраиваем имя хоста:
Также дописываем в /etc/hosts что-то вроде:
Создаем initial ramdisk (он требуется для загрузки ядра ):
Наконец, нам нужен загрузчик. Я выбрал GRUB:
# GRUB’у нужен небольшой раздел с типом ef02 (BIOS boot partition)
# к счастью, gdisk выравнивает сектора, за счет чего как раз остается
# около 1 Мб лишнего места в начале диска, нам этого хватит
gdisk / dev / sda
grub-install —target =i386-pc / dev / sda
grub-mkconfig -o / boot / grub / grub.cfg
Меняем пароль пользователя root командой passwd
, выходим из chroot командой exit
, делаем umount
всех разделов нашей новой системы, а затем говорим reboot
. Если все было сделано правильно, система загрузится, и в этот раз уже не с флешки:
Проверяем, что все разделы на месте, что системное время правильное, и так далее. Поздравляю, теперь у вас есть предельно минималистичная инсталляция Linux. Остался последний штрих — настроить хоть какую-то сеть. Это быстро.
Подключение к сети по витой паре
Большим шоком для меня было то, что в Arch Linux задепрекейтили пакет net-tools . Поэтому, скажем, команды ifconfig
в системе по дэфолту попросту нет. Чтобы посмотреть имена доступных интерфейсов, нужно воспользоваться утилитой ip:
А вместо netstat
теперь нужно использовать утилиту ss:
Выяснив имя интерфейса, в /etc/systemd/network/ethernet.network пишем что-то вроде:
Name=enp0s25
[Network]
DHCP=yes
Включаем systemd-networkd:
systemctl start systemd-networkd
systemctl status systemd-networkd
Логи конкретного сервиса в systemd можно посмотреть так:
# следить за обновлениями, как делает утилита tail
journalctl -u systemd-networkd -f
Если все было сделано правильно, то пинги пойдут, но доменные имена пока что резолвиться не будут. Эта проблема решается так:
systemctl start systemd-resolved
rm / etc / resolv.conf
ln -s / var / run / systemd / resolve / resolv.conf / etc / resolv.conf
Заметьте, что по умолчанию systemd-resolved слушает порт 5355 на всех интерфейсах. На мой взгляд это как-то стремно. На форуме Arch Linux удалось найти решение этой проблемы, не требующее использования фаервола .
В /etc/systemd/resolved.conf дописываем:
Затем рестартуем сервис:
Готово, теперь система подключена к сети и не слушает никаких лишних портов! Дальнейшая настройка системы сильно зависит от того, для чего именно вы собираетесь ее использовать, и потому выходит за рамки данной статьи.
Заключение
Как видите, установка и настройка Arch Linux — это безудержное веселье. Если во время установки что-то вдруг пошло не так, вы всегда можете заново загрузиться с флешки и донастроить систему. В любой непонятной ситуации читайте маны, а также официальную wiki , она правда очень классная!
Забегая вперед, отмечу, что в целом впечатления от данного дистрибутива у меня исключительно положительные. Arch Linux очень похож на FreeBSD, только нормально работает на десктопе.
Дополнение: Также вас могут заинтересовать посты Управление пакетами в Arch Linux с помощью ABS и pacman , Пример настройки десктоп-окружения в Arch Linux и Шифрование жесткого диска в Linux при помощи dm-crypt .