Установка Linux Gentoo на виртуальный сервер (VDS)

Почему люди выбирают Gentoo? Потому, что его можно сделать самым быстрым из всех дистрибутивов. Он относится к source-based linux distributions — все программы, в том числе и система устанавливаются из исходников, которые можно скомпилировать конкретно под ваш процессор, используя все его функции. За счет этого повышается скорость работы.

Установка Gentoo Linux — это длительный процесс. Загружаемся с LiveCD и проверяем интернет:

livecd ~# ping -c3 google.com

Во время загрузки система попытается подключиться по DHCP, если у вас статический IP адрес, тогда нужно его прописать с помощью команды ifconfig, а DNS прописать в /etc/resolv.conf.

Настройка сети вручную

Данные для настройки сети можно почерпнуть у администратора, а в качестве DNS-сервера использовать любой доступный публичный (например, 8.8.8.8).

livecd ~# ifconfig eth0 ваш_ip_адрес netmask маска_подседи up
livecd ~# route add default gw ip_адрес_шлюза
livecd ~# echo "nameserver 8.8.8.8" > /etc/resolv.conf

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

livecd ~# passwd

Запускаем демон SSH:

livecd ~# rc-service sshd start

и подключаемся по SSH к LiveCD, используя пароль, указанный выше. Посмотреть IP адрес можно, указав команду ifconfig.

Затем необходимо разбить диск. Для этого можно воспользоваться утилитой fdisk. Предположим, что мы разбили диск на 2 раздела: /root и swap. Теперь необходимо отформатировать разделы. При помощи команды mkfs, форматируем раздел, в указанную после точки файловую систему. Атрибут -L задает метку разделу.

livecd ~# mkfs.ext4 -L root /dev/sda1

При помощи команды mkswap форматируем раздел подкачки (swap):

livecd ~# mkswap -L swap /dev/sda2

Командой swapon подключаем раздел подкачки:

livecd ~# swapon /dev/sda2

Далее необходимо подключить (смонтировать) корневой раздел командой mount. Монтируем раздел root в каталог /mnt/gentoo:

livecd ~# mount /dev/sda1 /mnt/gentoo

Переходим в каталог /mnt/gentoo:

livecd ~# cd /mnt/gentoo

Скачиваем сюда файлы. Воспользуемся консольным браузером links. Открываем его и выбираем mirrors (стрелкой вниз), подходящее зеркало (например, bloodhost.ru). Затем выбираем «releases», нужную архитектуру, например «amd64», autobuilds, current-stage3-amd64-… и выбираем stage3-….tar.xz.

livecd gentoo # links http://www.gentoo.org/main/en/mirrors.xml

Для того, чтобы скачать, нажимаем «d», после загрузки, чтобы выйти из браузера links, нажимаем букву «q». Смотрим, что у нас:

livecd gentoo # ls
lost+found stage3-amd64-nomultilib-….tar.xz

Распаковываем:

livecd gentoo # tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner

Примечание

Убедитесь, что в команде указаны те же самые параметры (xpf и --xattrs-include='*.*'). x указывает на извлечение (extract), p для сохранения (preserve) прав доступа и f для обозначения, что мы хотим извлечь файл (file), а не стандартный ввод. --xattrs-include='*.*' позволит также сохранить расширенные атрибуты во всех пространствах имён, хранящиеся в архиве. Наконец, --numeric-owner используется для того, чтобы убедиться, что идентификаторы пользователей и групп распаковываемых файлов останутся такими же, как и задумывались командой Gentoo.

Выбираем зеркало для установки:

livecd gentoo # mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf

Копируем информацию о DNS. DNS адреса хранятся в файле «/etc/resolv.conf».

livecd gentoo # cp --dereference /etc/resolv.conf /mnt/gentoo/etc/

Монтируем необходимые необходимые файловые системы:

livecd gentoo # mount --types proc /proc /mnt/gentoo/proc
livecd gentoo # mount --rbind /sys /mnt/gentoo/sys
livecd gentoo # mount --make-rslave /mnt/gentoo/sys
livecd gentoo # mount --rbind /dev /mnt/gentoo/dev
livecd gentoo # mount --make-rslave /mnt/gentoo/dev
livecd gentoo # mount --bind /run /mnt/gentoo/run
livecd gentoo # mount --make-slave /mnt/gentoo/run

Параметр --make-rslave необходим для дальнейшей поддержки systemd в ходе установки.

С помощью chroot, изменяем корневой каталог с «/» на «/mnt/gentoo»:

livecd gentoo # chroot /mnt/gentoo /bin/bash

Вы в новой системе. Перезагрузим настройки /etc/profile в память, с помощью source и для понятности изменим командную строку:

livecd / # source /etc/profile
livecd / # export PS1="(chroot) ${PS1}"

Если установка Gentoo будет случайно прервана где-то далее после этой точки, то можно «продолжить» установку с последнего состояния. Не нужно разбивать диск снова. Просто смонтируйте корневой раздел снова и проделайте предыдущие шаги, начиная с копирования информации о DNS.

Устанавливаем последний снимок (которые выпускаются каждый день) с одного из зеркал Gentoo и распакуем его в системе:

livecd / # emerge-webrsync

Посмотрим, какие профили доступны в системе (вывод команды является примером и может меняться время от времени).

livecd / # eselect profile list
Available profile symlink targets:
[1] default/linux/amd64/13.0 *
[2] default/linux/amd64/13.0/selinux
[3] default/linux/amd64/13.0/desktop

[10] default/linux/amd64/13.0/developer
[11] default/linux/amd64/13.0/no-multilib

Выбираем нужный нам вариант, например 11:

livecd / # eselect profile set 11

При использовании systemd, пожалуйста, убедитесь, что название профиля содержит слово systemd. И наоборот, при использовании OpenRC, убедитесь, что названия профиля не содержит слово systemd.

Часовой пояс и язык

Настроим часовой пояс. Посмотреть варианты можно компандой ls /usr/share/zoneinfo, предположим, что мы в Москве.

livecd / # echo "Europe/Moscow" > /etc/timezone

Перенастроим пакет timezone-data, что обновит файл /etc/localtime, основываясь на записи в /etc/timezone. Файл /etc/localtime используется системной библиотекой C, чтобы узнать, в каком часовом поясе находится система.

livecd / # emerge --config sys-libs/timezone-data

Отредактируем «locale».

livecd / # nano /etc/locale.gen

Добавим в файл «locale.gen» русский.

en_US ISO-8859-1
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8

Генерируем locale.

livecd / # locale-gen

Проверить выбранные локали можно, запустив команду locale -a.

Оптимизация компиляции

Отредактируем файл make.conf, указав соответствующие параметры оптимизации.

livecd / # nano /etc/portage/make.conf

Укажем текущую архитектуру процессора. Добавляем в CFLAGS параметр -march=native. Указание используемой архитектуры важно для производительности. Чтобы задействовать все процессоры или ядра системы при компиляции, необходио добавить (или изменить) строку MAKEOPTS="-jn", где n — количество процессоров (ядер) в вашей системе плюс один.

Далее, в этом же файле, можно настроить переменную «USE». Эта переменная содержит флаги, которые управляют поведением сборки устанавливаемых пакетов. Список всех значений можно посмотреть здесь. Например, если вы не используете IPv6, можно указать собирать пакеты без поддержки IPv6, дописав в USE флаг «-ipv6». Флаг bindist лушче убрать (если есть). Например:

USE="-ipv6 -debug"

Для экономии места можно отказаться от установки всевозможной документации к пакетам, указав в этом же файле:

FEATURES="nodoc noinfo noman"

Укажем более тонкую оптимизацию для CPU (amd64 архитектура). В файле /etc/portage/make.conf закомментируем (поставим «#») CPU_FLAGS_X86.

#CPU_FLAGS_X86="…"

Установим cpuid2cpuflags:

livecd / # emerge cpuid2cpuflags

Добавим вывод cpuinfo2cpuflags-x86 (установится именно с таким именем) в файл /etc/portage/make.conf:

livecd / # cpuinfo2cpuflags-x86 >> /etc/portage/make.conf

В редакторе nano можно открыть его и посмотреть изменения.

Установка ядра Gentoo Linux

С помощью команды «emerge» устанавливаем исходные коды Gentoo Linux.

livecd / # emerge gentoo-sources

Устанавливаем genkernel — утилиту для автоматизации процесса сборки ядра и initramfs:

livecd / # emerge genkernel

Редактируем «fstab»:

livecd / # nano /etc/fstab

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

# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
#
# NOTE: Even though we list ext4 as the type here, it will work with ext2/ext3
#       filesystems.  This just tells the kernel to use the ext4 driver.
#
# NOTE: You can use full paths to devices like /dev/sda3, but it is often
#       more reliable to use filesystem labels or UUIDs. See your filesystem
#       documentation for details on setting a label. To obtain the UUID, use
#       the blkid(8) command.
/dev/sda1 / ext4 noatime 0 1 /dev/sda2 none swap sw 0 0

Компилируем ядро, предварительно его настроив:

livecd / # genkernel --menuconfig all

Одно из преимуществ source-based дистрибутивов — это возможность без особых хлопот перекомпилировать всю систему. Компиляция одно ядра не даст 100% прирост производительности, т. к. интенсивно используются различные системные библиотеки, не входящие в ядро.

Обновляем, перекомпилируем и пересобираем Gentoo в соответствии с нашими параметрами оптимизации.

livecd / # emerge --ask --emptytree --usepkg=n @system && emerge --ask --emptytree --usepkg=n @world

Это самый долгий процесс, может занять часа 2–3 и больше.

Настройка сети и необходимого минимума

Назовём свой компьютер, например, «tux» (будет выводиться в приглашении командной строки):

livecd / # nano -w /etc/conf.d/hostname
# Устанавливаем переменную hostname в выбранное значение имени узла
hostname="tux"

Установим минимум необходимых программ. Если IP адрес получается по DHCP, добавьте dhcpcd.

livecd / # emerge syslog-ng grub cronie

Настроим интернет. Создадим файл net.

livecd / # nano /etc/conf.d/net

Для автоматического получения IP (DHCP), добавим такую строчку:

config_eth0="dhcp"

Для статического IP адреса, прописываем следующие (указав свои данные):

config_eth0="192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255"
routes_eth0="default via 192.168.0.1"

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

Чтобы сетевые интерфейсы запускались при загрузке, нужно сделать следующие:

livecd / # cd /etc/init.d
livecd init.d # ln -s net.lo net.eth0
livecd init.d # rc-update add net.eth0 default
livecd init.d # cd /

Установим самый главный пароль для пользователя «root», набрав:

livecd / # passwd

При вводе пароля «root», пароль не отображается.

Дальше, установим раскладку клавиатуры:

livecd / # nano /etc/conf.d/keymaps

Найдем строчку keymap="us" и заменим на keymap="-u ru".

Настроим часы. Введем значение clock="local":

livecd / # nano /etc/conf.d/hwclock

Также можно настроить /etc/rc.conf, но пока оставим как есть.

Добавляем в автозагрузку журналирование (syslog) и планировщик задач (cron):

livecd / # rc-update add syslog-ng default
livecd / # rc-update add cronie default
livecd / # rc-update add dhcpcd default

Последняя строчка нужна, если вы используете DHCP.

Настройка загрузчика GRUB

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

livecd / # grub-install /dev/sda

Генерируем файл grub.cfg:

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

Установка Gentoo Linux закончена. Удаляем архив, скачанный в начале установки:

livecd / # rm /stage3-*.tar.bz2

Выходим из среды «chroot» и перезагружаемся.

livecd / # exit
livecd gentoo # reboot

После перезагрузки, войдем в систему под суперпользователем root. Пароль для пользователя root мы ввели во время установки командой «passwd».