Установка Gentoo. По-русски

Сегодня будем развенчивать миф о сложности установки Gentoo. Почему установка "по-русски"? Потому что настраивать станем русскую локаль, раскладку и временную зону. Статья получилась довольно объёмной, для тех, кто не знает, как скоротать долгий вечер).

Предлагается вооружиться знаниями об архитектуре своего процессора, перейти на страницу get gentoo, выбрать эту самую архитектуру и после стольких утомительных мышкодвижений скачать и записать на диск (или usb-flash) нужный образ:

stages → current iso → install-$ARCH-minimal-*.iso.

Загрузитесь с СD-диска.

Грузимся с параметрами по умолчанию.

gettoo boot

Настройка интернет-соединения:

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

# /sbin/ifconfig

если кроме интерфейса lo больше ничего нет, значит делаем следующее:

# dhcpcd eth0 (где ваш сетевой интерфейс - eth0)

после чего повторяем команду /sbin/ifconfig

теперь у нас появились данные интерфейса eth0.

Для настройки adsl-соединения:

# pppoe-setup
# net-setup eth0 (для обычных или беспроводных сетей)
# ping ya.ru - пингуем яндекс

чтобы прервать пинги:

Ctrl+C

Также для настройки обычного или беспроводного соединения можно использовать команду net-setup eth0, где eth0 — имя сетевого интерфейса. Интернет настроили, идём дальше

Создание разделов диска

Для этого воспользуемся cfdisk:

перед тем,как создавать разделы,сядьте и подумайте какие,какого размера и с какой файловой системой.

  • / - корневой каталог
  • /home - директории пользователей
  • /boot - загрузочные файлы
  • /usr - пользовательские приложения.
  • /var - изменяемые приложения, лучше не жадничать хотя бы потому,что там будут компилироваться наши пакеты
  • /opt - большой размер нужен для игрового сервера

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

Непосредственно создание разделов:

# cfdisk /dev/sda

где sda - SCSI-диск; hda - IDE-диск. Выбирайте что нужно вам.

  • news - создание нового раздела
  • type - выбор типа файловой системы (83 - Linux, 82 - swap)
  • bootable - отметить как загрузочный (укажите для раздела,в который хотите смонтировать /boot!)
  • write - записать изменения
  • delete - удалить
  • quit - выйти
cfdisk

Назначение файловой системы:

# mke2fs /dev/sda1 - создание `ext2` на разделе `/dev/sda1`
# mke2fs -j /dev/sda3 - создание `ext3` на разделе `/dev/sda3`
# mkswap /dev/sda2 - создание раздела подкачки на `/dev/sda2`
# swapon /dev/sda2 - и его активация
# mkfs.ext4 - создание `ext4`, если не желаете использовать `ext3`

Назначение точек монтирования:

# mount /dev/sda3 /mnt/gentoo - монтируем корень
# mkdir /mnt/gentoo/boot - раздел под загрузчик
# mount /dev/sda1 /mnt/gentoo/boot - монтирование раздела загрузчика

Архив стадии, дерево портежей

В качестве источника загрузки автором было использовано зеркало mirror.yandex.ru Внимательно следите за тем,чтобы загрузить подходящий скачанному вами образу архив. В примере использован amd64.

# cd /mnt/gentoo
# links http://mirror.yandex.ru/gentoo-distfiles/releases/amd64/current-iso/

Выберите файл stage3*.tar.bz и нажмите enter. Начнётся загрузка архива, это 161 Мб, так что пока можно попить кофейку.

gentoo install

Загрузили? Распаковываем:

# tar xvjpf stage3-*.tar.bz

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

# links http://mirror.yandex.ru/gentoo-distfiles/snapshots/

выбираем внизу portage-latest.tar.bz2

Начнётся загрузка.

распаковываем (из корневого каталога):

# tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr

Настройка компиляции ядра

Настройки хранятся в файле mnt/gentoo/etc/portage/make.conf. Его и открываем любимым редактором (joe, nano, vi?) Здесь используются переменные и значения. Пример:

переменная - CHOST, её значение - x86_64-pc-linux-gnu - указывает на архитектуру процессора CFLAGS="-march=k8 -pipe -O2" - где

"-march=k8" - название целевой архитектуры, k8 прописывается для amd64, -О2 - классс оптимизации.

Допустимые значения:

  • -s оптимизация по размеру
  • -0 без оптимизации
  • -1 -2 -3 - по скорости
  • CXXFLAGS="${CFLAGS}" - не изменяйте её
  • MAKEOPTS="-j2" - определяет сколько параллельных процессов компиляции можно запускать при установке пакета. Обычно ставят значение равное количеству ядер процессора +1. Если ваш процессор поддерживает технологию Hyper-threading, разумное значение будет: количество доступных ядер, умноженное на 2 +1.

Более тонкой настройки можно пока не делать, займёмся этим позже.

Выбор зеркал, DNS, chroot

Действия в примере производятся из каталога /

Выбор зеркала загрузки

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

Выбор зеркала rsync:

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

Из предложенного списка выберите зеркала России.

gentoo rsync

Нелишним будет скопировать информацию о DNS

# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf

Монтируем /proc, sys & /dev:

# mount -t proc none /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev
# mount -t sysfs none /mnt/gentoo/sys

Переходим в новую среду с помощью chroot:

# chroot /mnt/gentoo /bin/bash
# env-update
# source /etc/profile
# export PS1="(chroot) $PS1"
chroot

Прочие премудрости

Обновите дерево портежей:

# mkdir /usr/portage
# emerge --sync

это может занять какое-то время, не пугайтесь

# emerge portage - если выдаёт сообщение о новой версии портежей

Выбор профиля:

# eselect profile list
Available profile symlink targets:
[1]   default/linux/amd64/10.0 *
[2]   default/linux/amd64/10.0/desktop
[3]   default/linux/amd64/10.0/server
# eselect profile set 3

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

USE-флаги

Служат для включения/отключения поддержки необязательных функций при компиляции программ. Вам не нужен X-сервер? Допишите значение "-X". Не нужна поддержка qt? Значит "-qt". И наоборот включите поддержку unicode: "unicode". Посмотреть допустимые значения:

# less /usr/portage/profiles/use.desc

Значения дописываются в /etc/portage/make.conf в строку USE

# nano -w /etc/portage/make.conf

Например:

use flags

Настройка кодировки:

# nano -w /etc/locale.gen

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

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

сохраните изменения и выйдите: Ctrl+O, Ctrl+Q

# locale-gen

Настройка времени:

# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Теперь наше локальное время идёт по Кремлёвским курантам)) Можете скопировать любое место вашей дислокации из /usr/share/zoneinfo

Ядро

Скачаем исходники ядра

# USE="-doc symlink" emerge gentoo-sources

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

Способ 1 - всё и сразу

# emerge genkernel
# genkernel all

В результате получим ядро с поддержкой разного ненужного хлама. Плюс этого способа - простота. Примечание: можно подправить /etc/genkernel.conf, включив в нём параметры:

OLDCONFIG="yes"
MENUCONFIG="yes"
CLEAN="no"
MRPROPER="no"

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

# ls /boot/kernel* /boot/initramfs*

Способ 2 - только то, что нужно

# emerge pcutils (с её помощью вы сможете посмотреть аппаратную часть своего ПК)
# cd /usr/src/linux (переход в каталог с исходниками)
# make menuconfig (вызов меню с настройками)
make menuconfig

Здесь всё строго индивидуально. Используете usb-мышь или клавиатуру? Проверьте включена ли их поддержка. Хотите, чтобы система понимала NTFS? Проверьте включена ли её поддержка. Настроек хватит на всё: тип процессора, видео, звук, поддержка файловых систем, девайсов устройств, поддерживаемых кодировок. Просто пройдитесь по пунктам меню и поразбирайтесь,что вам нужно,а что нет. Если вы испытываете затруднения с этим, можете ознакомиться со следующей заметкой, а затем продолжить.

Настроили? Теперь ядро нужно скомпилировать и установить:

# make && make modules_install - для тех, кто занимался ручной сборкой

И скопировать ядро в /boot:

# cp arch/x86_64/boot/bzImage /boot/

Пример:

# cp arch/x86_64/boot/bzImage /boot/2.6.37-gentoo-r4

Если вы собрали ядро с initramfs, следует всё же установить genkernel и скомандовать:

# genkernel --install initramfs

Сборка программ, конфигурирование модулей, настройка загрузчика

# emerge udev (автоматическое распознавание устройств) syslog-ng (служба журналирования) vixie-cron (что такое cron, думаю, знают все) dhcpcd (автоматическое получение IP-адреса, если у вас это дело статично, можете не ставить)

Теперь добавляем эти вещи в автозагрузку:

# rc-update add udev boot
# rc-update add syslog-ng default
# rc-update add vixie-cron default
# rc-update add dhcpcd default

Примечание:

Если вы владелец беспроводного соединения, лучше заранее озаботиться о простом способе подключения к сети после первой перезагрузки. Например, установить wicd с флагом ncurses: это позволит провести настройку с помощью вызова wicd-curses. Также не забывайте заглянуть в содержимое /etc/resolv.conf, которое может быть перезаписано dhcpcd.

Проверяем наши устройства:

# nano -w /ets/fstab

Должно получиться примерно так:

# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
/dev/sda1    /boot           ext2            noatime 1 2
/dev/sda2    /               ext4            noatime         0 1
/dev/sda5    none            swap            defaults        0 0
/dev/sda6    /home           ext4            noatime         0 0
tmpfs        /var/tmp        tmpfs           size=4G,noatime 0 0
tmpfs        /var/log        tmpfs           size=10M        0 0
debugfs      /sys/kernel/debug  debugfs      defaults        0 0
#/dev/cdrom  /mnt/cdrom      auto            noauto,ro       0 0

Обратите внимание: нужно убрать параметр noauto напротив /boot (в данном примере /boot расположен на /sda1). Вообще, boot и swap-разделы создавать необязательно. Монтирование tmpfs и debugfs по вкусу и потребностям.

Имя хоста:

# nano -w /etc/conf.d/hostname

Укажите здесь имя своего ПК

Сеть:

# nano -w /etc/conf.d/net

дописываем:

# /etc/conf.d/net
#
config_eth0="dhcp" # для получения динамического IP-адреса
# если адрес статичен,то впишите вместо dhcp свою информацию. Например:
config_eth0="192.168.0.2 netmask 255.255.255.0" # IP-адрес и адрес сети
routes_eth0="default via 192.168.0.1" # роутер
dns_servers_eth0="192.168.0.1 8.8.8.8" # DNS-адреса

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

# cd /etc/init.d
# ln -s net.lo net.eth0

Добавление сетевого интерфейса в автозагрузку:

# rc-update add net.eth0 default

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

# passwd

впишите пароль для учётной записи root

Примечание: можете также ознакомиться с настройками файла /etc/rc.conf (редактор по умолчанию, графическая среда и прочее)

Настройка раскладки клавиатуры:

# /etc/conf.d/keymaps
KEYMAP="ru"

Настройка часов:

# /etc/conf.d/clock
CLOCK="local"
TIMEZONE="Europe/Moscow"

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

# nano -w /etc/portage/make.conf
GRUB_PLATFORMS="pc"

# emerge -av grub sysboot/os-prober
# grub2-install /dev/sda
# grub2-mkconfig -o /boot/grub/grub.cfg

По состоянию на 2015 год в gentoo предлагается установка grub2 по-умолчанию, хотя вы всегда можете выбрать любой другой загрузчик: grub-legacy, lilo.

Финиш

# exit
# cd
# umount /mnt/gentoo/boot /mnt/gentoo/proc /mnt/gentoo/dev /mnt/gentoo (в общем последовательно отмонтируйте всё, что смонтировали в `/mnt`)
# reboot
grub

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

Локализация системы

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

# emerge terminus-font intlfonts freefonts cronyx-fonts corefonts kbd

В файле /etc/env.d/02locale:

LC_ALL=""
LANG="ru_RU.UTF-8"

В /etc/conf.d/keymaps:

keymap="ruwin_alt_sh-UTF-8"
windowkeys="NO"
extended_keymaps=""
dumpkeys_charset=""
fix_euro="NO"

В /etc/conf.d/font:

font="cyr-sun16"
translation=""

После чего прописать font в автозагрузку:

# rc-update add font boot

Можно также установить различные шрифты и поэкспериментировать с ними. После пересборки/установки шрифтов желательно выполнить:

# fc-cache -fv