Установка Gentoo для лохов

29 марта 2016. Комментарии .

Произносим правильно. Gentoo [↗dʒɛntu:, дже́нту] — вид пингвинов из рода антарктических, известен как быстрейший среди пингвинов в подводном плавании. Некоторые граждане привыкли к произношению «Генту», но это нестрашно: далее в руководстве будет использоваться только английский вариант.

Оглавление #

Введение или зачем лоху Gentoo #

Разумеется, Gentoo имеет множество особенностей и преимуществ перед другими дистрибутивами Linux, выделяется системой управления пакетами и т.д. Все это вместе с процессом установки хорошо описано в Gentoo Handbook[1]. И мы обо всем этом говорить не будем, потому что эта запись — для лохов (имеется в виду уровень знаний об устройстве компьютеров и операционных систем).

Такой пользователь замечателен своей стандартностью: как правило, у него 64-битная архитектура x86_64, BIOS, он хочет графическую оболочку и браузер, в котором можно щелкать мышкой и открывать вкладки. Его не интересуют специфические варианты при установке, они лишь отвлекают внимание и делают процесс установки более запутанным. Цель этого руководства — описать максимально стандартные ходы и дать необходимый минимум информации на 1 странице для того, чтобы поставить Gentoo (с возможностью даже не загубить стоящую на компьютере Винду или другую ОС).

Последнее предупреждение: ставить Gentoo по Gentoo Handbook гораздо лучше, правильнее и безопаснее, чем по данной записи.

Казалось бы, Gentoo — выбор прошаренных пользователей. Но и обычным людям Gentoo может быть полезен: он шустрее популярных, простых в установке дистрибутивов. Каждая программа при установке компилируется из исходников, в результате процесс установки программы значительно дольше (например, браузер может устанавливаться несколько часов), зато после установки программа занимает меньше места и работает быстрее, чем на многих других дистрибутивах.

Я поставил Gentoo вместо Ubuntu. С тем же графическим окружением (XFCE) все стало значительно быстрее (время загрузки приложений) и плавнее, средняя температура процессора снизилась на 10° (стало даже лучше, чем в Windows 7 с самыми энергосберегающими установками на этой же машине), время работы от батареи увеличилось раза в полтора. Взаимодействовать с системой стало на порядок приятнее, я даже не ожидал. На установку и настройку ушло 2 дня. Установка происходила на ноутбук HP Pavilion dv6 (Intel Core i3-2310M CPU 2.10 GHz, 4 Гб RAM).

В дальнейшем повествовании подразумевается, что у процессора 64-битная архитектура.

Записываем LiveUSB #

Разумеется, можно записать и CD, но мы будем пользоваться USB-флэшкой, они чаще под рукой.

Нужна флэшка объемом более 1 Гб. Вся информация с нее будет удалена, так что сохраните нужное. Будем записывать флэшку из любого Линукса (я использовал Ubuntu). Можно записать LiveUSB и из Windows, очень просто с помощью бесплатной программы Rufus — нужно просто указать флэшку и iso-образ в программе и нажать кнопку Start.

Скачиваем установочный файл #

Заходим на официальную страницу и скачиваем Minimal Installation CD (~250 Мб) для amd64. Если у вас очень старый компьютер, то архитектура может быть и 32 бит, тогда вам нужен x86. Проверьте свою разрядность в свойствах системы.

Определение раздела c флэшкой #

Вставьте флэшку в USB порт. Выполните fdisk -l, в числе прочего в выводе должна быть показана и флэшка. Ее легче всего узнать по размеру. Я пользовался 2-Гб флэшкой и в выводе было такое:

root ~ #
fdisk -l 
...
Disk /dev/sdb: 2 GiB, 2080374784 bytes, 4063232 sectors
...

В моем случае флэшка — это /dev/sdb. Будьте очень внимательны, если у вас флэшка будет соответствовать, например, /dev/sdc, то используйте /dev/sdc вместо /dev/sdb в приведенных ниже командах.

Запись iso-образа на флэшку #

Для этого раздела легче действовать из-под рута: выполните su root, чтобы сменить пользователя.

Форматируем флэшку в FAT16:

root ~ #
mkdosfs -F 16 /dev/sdb1

Запишем MBR (Master Boot Record):

root ~ #
dd if=/usr/share/syslinux/mbr.bin of=/dev/sdb

В зависимости от системы, mbr.bin может располагаться и по другому адресу, например, /usr/lib/syslinux/mbr/mbr.bin. Используйте find /usr -name 'mbr.bin' для поиска.

Монтируем скачанный образ в /mnt/cdrom:

root ~ #
root ~ #
mkdir -p /mnt/cdrom
mount -o loop,ro -t iso9660 ~/Downloads/install-amd64-minimal-*.iso /mnt/cdrom

Здесь я указал предполагаемое местонахождение скачанного iso-файла.

Монтируем LiveUSB:

root ~ #
root ~ #
mkdir -p /mnt/usb
mount -t vfat /dev/sdb1 /mnt/usb

Копируем файлы:

root ~ #
root ~ #
root ~ #
root ~ #
root ~ #
cp -r /mnt/cdrom/* /mnt/usb
mv /mnt/usb/isolinux/* /mnt/usb
mv /mnt/usb/isolinux.cfg /mnt/usb/syslinux.cfg
rm -rf /mnt/usb/isolinux*
mv /mnt/usb/memtest86 /mnt/usb/memtest

Отмонтируем iso-образ и флэшку:

root ~ #
root ~ #
umount /mnt/cdrom
umount /mnt/usb

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

root ~ #
syslinux /dev/sdb1

Загрузочная флэшка готова.

Загрузка с LiveUSB #

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

Флэшка должна быть воткнута до включения. Нам надо войти в BIOS или UEFI[2], чтобы можно было загрузиться не с жесткого диска, а с флэшки. Однако учтите, что дальнейшие действия предполагают использование BIOS и могут немного отличаться в случае UEFI. Для того, чтобы попасть в BIOS, может быть нужно сразу после включения компьютера нажать (для верности даже лучше нажимать несколько раз) одну из клавиш Esc, Del, F10, F8, F2 и так далее. Ищите для конкретных моделей. В ноутбуках от HP можно нажать ESC и попросить загрузиться с USB flash drive. Если используется ноутбук, лучше подключить зарядку, иначе BIOS может не загружаться.

Как только настройки применены, произойдет перезагрузка. Если LiveUSB записана правильно и происходит загрузка с нее, то должен раздаться мерзкий бип. Надо в течение 15 секунд нажать какую-нибудь кнопку, иначе пойдет загрузка с жесткого диска. Введите название ядра и, опционально, его параметра (см. список возможных ядер и парамеров) после пригласительного boot:

boot: gentoo

Шикарно, Вы загрузились с Gentoo LiveUSB с правами root! Проверьте, работает ли сеть (если забыли вставить сетевой кабель, то скорее всего придется перезагрузиться):

livecd ~ #
ping -c 5 ya.ru 

Если нет, смотрите раздел Networking в Gentoo Handbook.

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

Перед началом установки необходимо правильно разметить диск с помощью gparted или fdisk.

Если вместо BIOS используется UEFI, некоторые действия может быть надо выполнять иначе. Подробнее смотрите в разделе Disks в Gentoo Handbook.

Вариант 1: с Windows вместо Linux #

Самый простой вариант: на диске уже стоит Windows и Linux. Установим Gentoo вместо имеющегося Linux, диск переразмечать не будем. Здесь предполагается, что диск имеет идентификатор /dev/sda.

Посмотрим, что у нас есть на диске (вырезаны неважные колонки):

livecd ~ #
fdisk -l 
Device     Boot   Size    Type
/dev/sda1 * 199M HPFS/NTFS/exFAT
/dev/sda2 186.3G HPFS/NTFS/exFAT
/dev/sda3 97.6G Extended
/dev/sda4 14G HPFS/NTFS/exFAT
/dev/sda5 2G Linux swap / Solaris
/dev/sda6 95.6G Linux

Видим, что Windows стоит на /dev/sda2, загрузчик в /dev/sda1, Linux в /dev/sda6 и swap на /dev/sda5. На /dev/sda4 стоят средства для восстановления Windows. Мы далее укажем, что хотим установить Gentoo туда, где стоит Linux, и адрес для swap оставим тот же.

Назначение типа для root #

Здесь под словом root понимается корневой раздел, обозначаемый как /. Определим его тип как ext4 (неважно, каким он был до этого):

livecd ~ #
mkfs.ext4 /dev/sda6

Активируем swap #

livecd ~ #
livecd ~ #
mkswap /dev/sda5
swapon /dev/sda5

Монтируем новые разделы #

livecd ~ #
livecd ~ #
livecd ~ #
mount /dev/sda6 /mnt/gentoo
mkdir /mnt/gentoo/boot
mount /dev/sda1 /mnt/gentoo/boot

Готово.

Вариант 1а: к одинокой Windows #

Если на машине стоит только Windows, который хочется сохранить, то нужно оттяпать у него место с помощью, например, gparted. Как это сделать — гуглите.

Вариант 2: только Gentoo #

Соответствующая секция в Gentoo Handbook: Подготовка дисков.

Установка stage3 #

Проверка даты #

Проверим, правильна ли дата:

livecd ~ #
date

Если нет, то установите правильную. Например, 28 марта 2016 года, 14:55 можно поставить так:

livecd ~ #
date 032814552016

Скачиваем stage tarball #

livecd ~ #
cd /mnt/gentoo
livecd gentoo #
links gentoo.org/downloads/mirrors

Откроется текстовый браузер links. Выберите зеркало из ближайшей из списка страны и зайдите в releases/amd64/autobuilds/<date>. Выбирайте свежайшую дату. Скачайте файл stage3-amd64-<date>.tar.bz2, выбрав его и нажав клавишу D или Enter.

Разархивируем stage tarball #

livecd gentoo #
tar xvjpf stage3-*.tar.bz2 --xattrs

USE, CFLAGS, MAKEOPTS #

Время установить подходящие значения этим трем переменным.

Переменная USE — это одна из самых крутых переменных в Gentoo. Она важна при установке программ. Как уже говорилось, все программы компилируются из исходников. Это увеличивает время установки, зато позволяет ставить именно те части программ, которые нужны данной системе. В этой инструкции предполагается, что в качестве графической оболочки будет использоваться XFCE. Эта оболочка легче Gnome и KDE, но все-таки симпатичная и гибкая. Рекомендуемое значение этой переменной для пользователя XFCE приведено чуть ниже.

Переменная CFLAGS по умолчанию имеет значение -O2 -pipe.

Переменная MAKEOPTS отвечает за параллелизацию выполняемых операций. Если на машине двухъядерный или четырехъядерный процессор, обычно рекомендуется значение MAKEOPTS="-j<количество ядер + 1>", т.е. MAKEOPTS="-j3" для двухъядерного и MAKEOPTS="-j5" для четырехъядерного процессора.

С помощью текстового редактора nano (или другого по выбору) редактируем файл:

livecd ~ #
nano -w /mnt/gentoo/etc/portage/make.conf
/mnt/gentoo/etc/portage/make.conf
1
2
3
4
5
CFLAGS="-O2 -pipe"
# Для двухъядерного процессора
MAKEOPTS="-j3"
# Для графической оболочки XFCE
USE="-gnome -kde -minimal -qt4 dbus jpeg lock session startup-notification thunar udev X"

Знак минус перед gnome и kde у переменной USE позволит компилировать программы, не утягивая за собой тяжелые зависимости для этих графических оболочек.

Чтобы сохранить файл и закрыть редактор nano, нажмите Ctrl + O, затем Ctrl + X.

Установка основы системы #

Выбираем близкие зеркала #

Для файлов дистрибутива:

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

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

Для основного репозитория Gentoo:

livecd ~ #
livecd ~ #
mkdir /mnt/gentoo/etc/portage/repos.conf
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf

Копируем информацию о DNS #

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

Монтируем необходимые разделы #

livecd ~ #
livecd ~ #
livecd ~ #
livecd ~ #
livecd ~ #
mount -t proc proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev

Входим в новое окружение #

livecd ~ #
livecd ~ #
livecd ~ #
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) $PS1"

С этого момента все действия будут напрямую выполняться в новом Gentoo, но ликовать еще рано.

Обновление списка пакетов для Portage #

Эта команда получит снимок текущего состояния Portage, системы управления пакетами в Gentoo.

(chroot) livecd ~ #
emerge-webrsync

Возможные ошибки:

!!! Section 'gentoo' in repos.conf has location attribute
set to nonexistent directory: '/usr/portage'

!!! Repository x-portage is missing masters attribute in
/usr/portage/metadata/layout.conf

Увидев эти ошибки, я прервал операцию, нажав Ctrl + C, и сделал следующее:

(chroot) livecd ~ #
(chroot) livecd ~ #
(chroot) livecd ~ #
mkdir /usr/portage
mkdir -p /usr/portage/metadata/ 
nano -w /usr/portage/metadata/layout.conf
/usr/portage/metadata/layout.conf
1
masters = gentoo

После этого emerge-webrsync запустился без ошибок.

Выбираем правильный профиль #

(chroot) 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
  [4]   default/linux/amd64/13.0/desktop/gnome
  [5]   default/linux/amd64/13.0/desktop/gnome/systemd
  [6]   default/linux/amd64/13.0/desktop/kde
  [7]   default/linux/amd64/13.0/desktop/kde/systemd
  [8]   default/linux/amd64/13.0/desktop/plasma
  [9]   default/linux/amd64/13.0/desktop/plasma/systemd
  [10]  default/linux/amd64/13.0/developer
  [11]  default/linux/amd64/13.0/no-multilib
  [12]  default/linux/amd64/13.0/systemd
  [13]  default/linux/amd64/13.0/x32
  [14]  hardened/linux/amd64
  [15]  hardened/linux/amd64/selinux
  [16]  hardened/linux/amd64/no-multilib
  [17]  hardened/linux/amd64/no-multilib/selinux

Выбираем вариант default/linux/amd64/13.0/desktop:

(chroot) livecd ~ #
eselect profile set 3

Часовой пояс #

Просмотреть доступные варианты:

(chroot) livecd ~ #
ls /usr/share/zoneinfo

Например, для Москвы настройка будет такой:

(chroot) livecd ~ #
echo "Europe/Moscow" > /etc/timezone

Обновим информацию о часовом поясе в системе:

(chroot) livecd ~ #
emerge --config sys-libs/timezone-data

Настройка локалей #

(chroot) livecd ~ #
nano -w /etc/locale.gen
/etc/locale.gen
1
2
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8

Обновим информацию о локалях в системе:

(chroot) livecd ~ #
locale-gen

Теперь просмотрим список доступных локалей:

(chroot) livecd ~ #
eselect locale list

Вывод примерно таким должен быть:

Available targets for the LANG variable:
  [1]   C
  [2]   en_US.utf8 *
  [3]   POSIX
  [4]   ru_RU.utf8
  [ ]   (free form)

Надо выбрать en_US:

(chroot) livecd ~ #
eselect locale set 2

После этих настроек в виртуальных терминалах кириллица все равно не будет отображаться. Чтобы исправить это, смотрите раздел FAQ → Кириллица в виртуальных консолях.

Обновляем окружение #

(chroot) livecd ~ #
env-update && source /etc/profile && export PS1="(chroot) $PS1"

Собираем ядро #

Установка исходников #

(chroot) livecd ~ #
emerge --ask sys-kernel/gentoo-sources

genkernel #

Дальше ядро предлагается компилировать вручную, расставляя галочки на нужные драйвера и поддержку именно того железа, из которого собран компьютер. Эта процедура очень увлекательная, но при прохождении ее в первый раз велика вероятность того, что не будет работать сеть, звук, мышь и тачпад. Пересобрать ядро всегда можно после (и даже рекомендуется — ядро станет меньше, а кругозор шире), а пока воспользуемся утилитой genkernel. Установим ее:

(chroot) livecd ~ #
emerge --ask sys-kernel/genkernel

Теперь надо прописать /boot в /etc/fstab:

(chroot) livecd ~ #
nano -w /etc/fstab
/etc/fstab
1
/dev/sda1	/boot	ntfs	defaults	0 2

То, что /boot находится на /dev/sda1, мы выяснили командой fdisk -l в пункте Вариант 1: c Windows вместо Linux.

Запускаем компиляцию ядра:

(chroot) livecd ~ #
genkernel all

У меня это длилось около часа.

Если тип файловой системы не ext2 или ext3, а ntfs, как было в моем случае, то может быть нужно поставить галочку для поддержки этой системы вручную. Надо выполнить

genkernel --menuconfig all

в появившемся псевдографическом окошке выбрать поддержку NTFS, найдя ее и нажав Y для выбора. Сохранить результат, компиляция продолжится. Мне этого делать не пришлось.

Драйвера #

Чтобы увеличить вероятность того, что в новой системе будет работать сеть, особенно Wi-Fi, рекомендуют поставить linux-firmware:

(chroot) livecd ~ #
emerge --ask sys-kernel/linux-firmware

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

/etc/fstab #

В файле /etc/fstab должны быть перечислены разделы. Для этого еще раз смотрим вывод fdisk -l. Вот мой вариант файла /etc/fstab (сначала идет закомментированный шаблон):

/etc/fstab
1
2
3
4
5
6
7
8
9
10
11
# <fs>       <mountpoint>   <type>  <opts>          <dump/pass>
#/dev/BOOT /boot ext2 noauto,noatime 1 2
#/dev/ROOT / ext3 noatime 0 1
#/dev/SWAP none swap sw 0 0
#/dev/cdrom /mnt/cdrom auto noauto,ro 0 0
#/dev/fd0 /mnt/floppy auto noauto 0 0

/dev/sda1 /boot ntfs defaults,noatime 0 2
/dev/sda6 / ext4 noatime 0 1
/dev/sda5 none swap sw 0 0
/dev/cdrom /mnt/cdrom auto noauto,user 0 0

Имя машины #

Нужно задать имя нашей машине:

(chroot) livecd ~ #
nano -w /etc/conf.d/hostname
/etc/conf.d/hostname
1
hostname="zhupel"

Имя можно сменить позднее. Кстати, необязательно выбирать жупел.

Установка netifrc #

Для работы сети установим netifrc и отредактируем /etc/conf.d/net:

(chroot) livecd ~ #
(chroot) livecd ~ #
emerge --ask --noreplace net-misc/netifrc
nano -w /etc/conf.d/net

Пример файла, если используется dhcp (см. другие варианты):

/etc/conf.d/net
1
2
config_eth0="dhcp"
routes_eth0="default via 192.168.0.1"

Автоподключение к сети при старте системы #

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

После установки Gentoo сеть может не заработать из-за того, что eth0 будет называться иначе. Подробнее об этом написано в соответствующем пункте Допиливание системы → Проверяем сеть.

/etc/hosts #

(chroot) livecd ~ #
nano -w /etc/hosts
1
2
127.0.0.1 имя_машины localhost  
::1 localhost

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

Ставим пароль для root #

Выполните команду и введите два раза пароль:

(chroot) livecd ~ #
passwd

Настройка загрузки и автозагрузки #

(chroot) livecd ~ #
nano -w /etc/conf.d/keymaps
/etc/conf.d/keymaps
1
2
3
4
keymap="us"
windowkeys="YES"
extended_keymaps=""
dumpkeys_charset=""

Не надо в keymap вписывать ru, поддержку русского мы настроим позже.

Установка системных программ #

System logger #

Чтобы можно было залогиниться в систему:

(chroot) livecd ~ #
(chroot) livecd ~ #
emerge --ask app-admin/sysklogd
rc-update add sysklogd default

Программы для файловых систем #

Мы форматировали диск в ext4, поэтому ставим e2fsprogs:

(chroot) livecd ~ #
emerge --ask sys-fs/e2fsprogs

Сетевые программы #

Если используете dhcp (для большинства):

(chroot) livecd ~ #
emerge --ask net-misc/dhcpcd

Если используется PPPoE для подключения к интернету:

(chroot) livecd ~ #
emerge --ask net-dialup/ppp

Загрузчик GRUB2 #

Чтобы при включении компьютера можно было выбрать, какую ОС запустить (если стоит что-то еще) или с каким ядром запустить Gentoo, необходимо установить и настроить загрузчик GRUB2.

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

(chroot) livecd ~ #
emerge --ask sys-boot/grub:2

Настройка GRUB2 #

Установим загрузчик на нужный диск:

(chroot) livecd ~ #
grub-install /dev/sda

Если мы хотим, чтобы grub2 нашел Windows, надо дополнительно поставить еще пакеты os-prober и ntfs3g:

(chroot) livecd ~ #
emerge --ask --newuse sys-boot/os-prober sys-fs/ntfs3g

Генерируем конфигурационный файл:

(chroot) livecd ~ #
grub-mkconfig -o /boot/grub/grub.cfg

Должны быть выведены установленные системы. Если искомой Windows там нет, значит, что-то пошло не так. Если, например, вместо Windows 7 получилось три Windows Vista, то, скорее всего, все нормально.

Перезагрузка системы #

Наступает пора проверить, удалось ли выполнить все предыдущие шаги правильно.

(chroot) livecd ~ #
exit
livecd ~ #
livecd ~ #
livecd ~ #
cd
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount /mnt/gentoo{/boot,/sys,/proc,}

Теперь вытащите флэшку, с которой происходила установка, скрестите пальцы и выполните

livecd ~ #
reboot

Если перезагрузка прошла успешно, переходите к допиливанию. Если система не загружается, громко и нецензурно прокляните меня (если рядом нет маленьких детей) и начните все заново, используя на сей раз официальное руководство Gentoo Handbook.

Допиливание системы #

Итак, Gentoo установлен, мы в него можем войти, полдела сделано! После загрузки вводите на предложенный Login: root и установленный пароль.

Проверяем сеть #

Если после успешной установки Gentoo сеть работать не будет, нужно проверить, действительно ли ваш Ethernet адаптер имеет стандартное имя eth0. При работе с LiveUSB это всегда так, а вот после установки имена могут быть разные, например, enp3s0, eno1 и т.д.

Проверить это можно командой

root ~ #
ifconfig

Итак, если после установки Gentoo обнаружится, что вместо eth0 Ethernet адаптер называется eno1, то действуем так:

Меняем config_eth0config_eno1 и routes_eno1routes_eth0 в /etc/conf.d/net. Можно вручную, можно командой:

root ~ #
sed -i 's:eth0:eno1:g' /etc/conf.d/net

затем выполняем

root ~ #
root ~ #
root ~ #
root ~ #
ln -s net.lo net.eno1
rm /etc/init.d/net.eth0
rc-update add net.eno1 default
rc-update del net.eth0 

Создаем пользователя #

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

root ~ #
root ~ #
useradd -m -G users,wheel,audio,video -s /bin/bash vasilisa
passwd vasilisa

Примечание: пользователя необязательно должны звать vasilisa, можете выбрать и другое имя! Точно нужны группы users и wheel. Если не добавить пользователя в audio и video, могут не работать работать звук и вебкамера.

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

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

Чтобы в дальнейшем повседневном использовании выполнять операции, требующие прав root, можно логиниться в root (например, su - или su root). А можно установить привычное sudo.

root ~ #
emerge --ask app-admin/sudo

Добавить пользователю права использования sudo:

root ~ #
visudo

Откроется файл /etc/sudoers, который напрямую редактировать нельзя.

/etc/sudoers
1
2
root ALL=(ALL) ALL
vasilisa ALL=(ALL) ALL

Если хочется, чтобы sudo не запрашивал пароль, вторую строку надо заменить на

vasilisa ALL=(ALL) NOPASSWD:ALL

И не забывайте, что вместо vasilisa надо ввести имя пользователя, созданное в прошлом шаге.

Если при попытке войти в root su - выдается ошибка su: Permission denied, надо добавить пользователя в группу wheel:

root ~ #
gpasswd -a vasilisa wheel

Подчищаем установочные файлы #

root ~ #
rm /stage3-*.tar.bz2*

Xorg #

Система работает, сеть тоже, казалось бы, чего еще для счастья надо? Конечно, графической оболочки. Прежде чем ставить саму графическую оболочку (что-нибудь из GNOME, KDE, XFCE, LXDE, Cinnamon и т.д.), поставим Xorg («иксы») для поддержки видеокарты, монитора и мыши с тачпадом.

INPUT_DEVICES #

Для поддержки тачпада нужен synaptics:

/etc/portage/make.conf
1
INPUT_DEVICES="evdev synaptics"

VIDEO_CARDS #

Сначала надо выяснить, какая у вас графическая карта.

root ~ #
lspci | grep -i vga

Дальше гуглите что-нибудь типа «gentoo название/тип карты driver», например, «gentoo intel 2nd generation», «gentoo radeon 6400M driver» и т.д. Если карты две, ищите драйвера к обеим.

Для Intel, например, надо будет в /etc/portage/make.conf добавить один из вариантов в зависимости от Generation. У меня Intel 2nd Generation, поэтому я добавил только вторую строку.

/etc/portage/make.conf
1
2
3
4
5
VIDEO_CARDS="intel"       # для Intel 1st Generation
VIDEO_CARDS="intel i915" # для Intel 2nd and 3rd Generation
VIDEO_CARDS="intel i965" # для Intel 4-9th Generation
VIDEO_CARDS="radeon" # для карт AMD/ATI
VIDEO_CARDS="nouveau" # для карт Nvidia

Если у вас карта Nvidia, читайте здесь.

Обновим @world set #

root ~ #
emerge --ask --changed-use --deep @world

World set заключает в себе system set и selected set. Последний содержит список выбранных пакетов, которые мы выбирали с помощью eselect. Их может оказаться довольно много в зависимости от выбора в шаге Установка основы системы → Выбираем правильный профиль. Длиться установка может более часа.

Установка Xorg #

root ~ #
emerge --ask x11-base/xorg-server

Завершение установки #

root ~ #
root ~ #
env-update
source /etc/profile

XFCE — графическая оболочка #

Два наиболее известных графических окружения для Linux — KDE и Gnome. В этом руководстве мы с самого начала нацелились на XFCE (установив переменную USE). Эта оболочка легче, требует меньше зависимостей, работает быстрее, что особенно чувствительно на слабых машинах. Разумеется, если Вы предпочитаете другое графическое окружение, справляйтесь с соответствующими разделами из Gentoo Handbook (например, установка и настройка GNOME, KDE; установка и настройка легковесного оконного менеджера Fluxbox). Придется только поменять значение переменной USE.

Установка XFCE #

Прежде чем приступить к установке, настроим некоторые переменные. Редактируйте /etc/portage/make.conf. Также проверьте, что USE имеет необходимые значения.

/etc/portage/make.conf
1
2
XFCE_PLUGINS="battery brightness clock power"
USE="-gnome -kde -minimal -qt4 dbus jpeg lock session startup-notification thunar udev X"

Я выбрал эти плагины для ноутбука. Полный список можно найти на gitweb.gentoo.org.

Сама установка (к установке будет предложено более ста пакетов, у меня заняло более часа):

root ~ #
emerge --ask xfce-base/xfce4-meta xfce-extra/xfce4-notifyd

Мы явно просим указать xfce4-notifyd, потому что в противном случае virtual/notification-daemon станет использовать x11-misc/notification-daemon от GNOME, а нам ничего гномьего не надо! После окончания установки можно убрать этот пакет из выбранных:

root ~ #
emerge --ask --deselect=y xfce-extra/xfce4-notifyd

Обновим переменные окружения:

root ~ #
env-update && source /etc/profile

Старт XFCE #

Вот теперь можно залогиниться в пользователя и при необходимости пользоваться sudo. Для этого нажмите Ctrl+D, чтобы выйти из root и появилось предложение ввести логин. Вводите его и пароль.

user ~ $
echo "exec startxfce4" > ~/.xinitrc

Теперь попробуйте запустить графическую оболочку:

user ~ $
startx

Если при попытке загрузки X-сервера будут ошибки, можно попробовать поставить

root ~ #
emerge --ask x11-base/xorg-drivers

Если все в порядке, то откроется графический рабочий стол и будет предложено выбрать стандартные панели (Default Panels). Мне они нравятся, на них можно добавлять необходимые индикаторы и ярлыки. У нижней панели я ставлю прозрачность и авто-скрытие. Все это можно сделать методом интуитивного тыканья.

Добавить русскую раскладку #

Меню Applications → Keyboard → вкладка Layout → + Add → Russian. English (US) пусть останется на первой строке. Там же выберите комбинацию для смены раскладки. Если она не работает, значит не запущен Consolekit, см. раздел FAQ → Горячие клавиши не работают.

Графический логин #

Можно каждый раз дожидаться загрузки системы без графической оболочки, логиниться и вводить startx для запуска графического окружения рабочего стола. Многим привычнее графический вход в систему. Лично я смысла в этом не вижу и прекрасно себя чувствую, вводя startx после логина. Можно, конечно, запускать X-server автоматически.

Если все же хочется чего-то графического, действуйте, например, так.

Полезные программы #

Можно установить несколько одним махом:

root ~ #
root ~ #
root ~ #
root ~ #
root ~ #
emerge --ask xfce-extra/xfce4-mixer xfce-extra/xfce4-volumed \
xfce-extra/xfce4-power-manager xfce-extra/xfce4-battery-plugin \
x11-terms/xfce4-terminal xfce-extra/thunar-volman \
xfce-extra/thunar-archive-plugin xfce-base/xfce4-appfinder \
app-editors/mousepad xfce4-xkb-plugin

Это пригодится большинству. По порядку: регулятор громкости, управление громкостью с клавиатуры, контроль энергопотребления и яркости (если ноутбук), показ параметров батареи (проценты, оставшееся время и т.п.), графический терминал, менеджер подключаемых CD и USB, архиватор для обозревателя файлов thunar, быстрый вызов программ по Alt+F2 и Alt+F3, легкий графический блокнот (текстовый редактор), индикатор текущей раскладки. Более обширный список смотрите на wiki.gentoo.org/wiki/Xfce.

Настройка панелей #

В прошлом шаге мы установили некоторые апплеты для панелей — xfce4-mixer для громкости, xfce4-xkb-plugin для индикатора раскладки и xfce4-power-manager (нужен для ноутбука). Их удобно добавить на верхнюю панель (она уже существует, если при первом старте XFCE была нажата кнопка «Default Panels». Если нет, то можно создать ее в меню Applications → Settings → Panel → +).

Для добавления апплетов на панель щелкните на нее правой кнопкой → Panel → Add New Items → и выберите Audio Mixer, Keyboard Layouts, Power Manager Plugin.

Если щелкнуть на значок power-manager правой кнопкой мыши, появится бегунок для регулировки яркости. Если бегунок перетаскивать, то xfce4-power-manager падает, перестают работать кнопки регулировки яркости, приходится его перезапускать. Если же бегунок перемещать, наведя курсор на полосу прокрутки и вращая колесико мыши, то приложение не обрушивается. Как исправить это странное поведение, я не нашел.

На нижнюю панель удобно добавить приложения. Для этого щелкните на нее ПКМ → Panel → Add New Items → Launcher, + Add. На панели появится новый значок. Щелкните на него ПКМ → Properties → +, чтобы выбрать из установленных программ или вместо плюса нажмите на чистый листок, чтобы добавить какую-то свою команду. Добавленный пункт можно редактировать.

Прочие программы #

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

Сетевой менеджер Wicd #

Wicd — Wireless interface connection daemon, менеджер сетевых подключений. Подробно установка и настройка на английском на wiki.gentoo.org/wiki/Wicd.

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

root ~ #
root ~ #
emerge --ask wicd
rc-update add wicd default 

Надо удалить ссылки на net.eth0 (или, например, net.eno1 и т.д., как мы выясняли в пункте Проверяем сеть).

root ~ #
rc-update del net.eth0

или, например,

root ~ #
rc-update del net.eno1

Наконец, добавьте в /etc/rc.conf:

/etc/rc.conf
1
rc_hotplug="!net.eno1"

или rc_hotplug="!net.eth0", rc_hotplug="!net.enp3s0" и т.д.

Просмотрщик изображений #

Мне нравится geeqie. Для других вариантов зайдите на pa­cka­ges.gen­too.­org/cate­go­ries/media-­gfx и сделайте поиск Ctrl + F по слову «viewer». Установка geeqie:

root ~ #
emerge --ask media-gfx/geeqie

PDF & Djvu viewer #

Evince умеет смотреть pdf и djvu. Для Evince по умолчанию отключен флаг djvu, а флаг gnome стоит. Чтобы добавить djvu и убрать gnome, создайте файл:

/etc/portage/package.use/evince
1
app-text/evince -gnome djvu

Теперь устанавливайте app-text/evince и убедитесь, что используются нужные флаги:

root ~ #
emerge --ask app-text/evince

Браузер #

Перечислю пару популярных вариантов, есть и другие.

Можно установить Firefox или Chromium (внимание, компилироваться может 3 часа и более!):

root ~ #
root ~ #
emerge --ask www-client/firefox
emerge --ask www-client/chromium

А можно установить уже прекомпилированный google-chrome (у меня заняло около 5 минут):

root ~ #
emerge --ask www-client/google-chrome

Почему google-chrome ставится в разы быстрее? Потому что Chrome — проект с закрытым исходным кодом, а Chromium — проект с открытым исходным кодом. В Chrome исходный код пользователю недоступен, поэтому происходит установка уже прекомпилированного пакета. Это противоречит философии Gentoo: считается, что программа должна компилироваться именно на том компьютере, на котором она будет работать, с поддержкой только того железа, которое будет доступно. Именно это позволяет программам быть легче, не иметь отягчающих ненужных зависимостей и работать быстрее. В большинстве случаев это действительно так. Однако я поставил оба браузера для сравнения. Chrome устанавливался пять минут, а Chromium — больше четырех часов (не знаю, насколько — уснул). Разнице во времени запуска и в работе нет абсолютно никакой. Размер на диске занимают почти одинаковый:

user ~ $
equery size chromium
 * www-client/chromium-49.0.2623.108
         Total files : 259
         Total size  : 170.05 MiB
user ~ $
equery size google-chrome
 * www-client/google-chrome-49.0.2623.108_p1
         Total files : 139
         Total size  : 177.85 MiB

Для работы equery надо установить emerge --ask app-portage/gentoolkit.

Лично я выбрал google-chrome, хотя это на первый взгляд противоречит философии Gentoo.

Видеоплеер SMplayer #

У меня почему-то vlc зависал, и я пока остановил свой выбор на SMplayer. Это графическая версия для mplayer.

root ~ #
emerge --ask media-video/smplayer

Аудиоплеер moc #

Я не приверженец всего консольного, но плеер moc (music on console) меня покорил. Он действительно чрезвычайно удобен для прослушивания музыки, и, разумеется, весьма легковесен.

root ~ #
emerge --ask media-sound/moc

Потом запускайте его в терминале: mocp, нажмите h для списка команд, изучите его и через 5 минут сможете им пользоваться.

Torrent-клиент #

Клиент Transmission, легкий и работает без нареканий.

root ~ #
emerge --ask transmission

Словари #

У меня есть подробная запись о том, как поставить консольный словарь dictd и пользоваться им в vim.

FAQ #

Кириллица в виртуальных консолях #

Если в виртуальной консоли (те, что открываются по Ctrl + Alt + F1F6) кириллица не отображается корректно, чиним так (информация взята с oldnix.org и немного подредактирована).

Установим шрифты с поддержкой кириллицы:

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

root ~ #
emerge freefonts corefonts cronyx-fonts terminus-font

Проверьте, что в /etc/locale.gen стоят правильные настройки (в этом руководстве они устанавливались в шаге Установка основы системы → Настройка локалей):

/etc/locale.gen
1
2
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8

Если было что-то другое, то замените и примените новые настройки к системе:

root ~ #
locale-gen

Добавьте в /etc/rc.conf:

/etc/rc.conf
1
unicode="YES"

Установим рабочим шрифтом шрифт с поддержкой кириллицы, заменив там переменную consolefont с помощью любимого текстового редактора:

/etc/conf.d/consolefont
1
consolefont="cyr-sun16"

Включим возможность переключения по Ctrl + Shift между английской и русской раскладками в виртуальных терминалах:

/etc/conf.d/keymaps
1
keymap="-u ru"

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

root ~ #
root ~ #
/etc/init.d/consolefont restart && /etc/init.d/keymaps restart
rc-update add consolefont default

Теперь проверьте, переключается ли язык в виртуальных консолях и корректно ли отображаются русские буквы. Если нет, то в файл /etc/conf.d/keymaps добавьте dumpkeys_charset="koi8-r" и снова перезапустите /etc/init.d/keymaps restart.

Горячие клавиши не работают #

Например, Ctrl + Alt + T не вызывает терминал; не работает переключение языка и вызов программ по комбинации клавиш. Эти проблемы могут возникнуть из-за того, что не запущен Consolekit. Запустите и добавьте его в автозагрузку:

root ~ #
root ~ #
/etc/init.d/consolekit start
rc-update add consolekit default

И перезагрузите компьютер.

Не работает Settings → Appearance #

Как ни странно, дело тоже в Consolekit. Выполните действия, предложенные в прошлом вопросе о горячих клавишах.

emerge не работает #

Система управления пакетами Portage иногда стесняется самостоятельно обновлять конфигурационные файлы после выполнения emerge. Есть два популярных варианта для обновления этих файлов — утилиты dispatch-conf и etc-update. Запустите любую из них, обе предоставляют интерактивный диалог. Желательно внимательно прочитать его и сверх того погуглить.

Индикатор раскладки в панели #

Установить плагин:

root ~ #
emerge xfce4-xkb-plugin

И добавить его на панель: Щелчок правой кнопкой мыши на панельку → Panel → Add item → Keyboard Layouts.

Suspend, shutdown нельзя выбрать #

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

user ~ $
startxfce4 --with-ck-launch

Если пункты появились, то замените значение в ~/.xinitrc:

user ~ $
echo "exec startxfce4 --with-ck-launch" > ~/.xinitrc

Теперь эта команда будет выполняться при startx.

Не меняется яркость на ноуте #

Откройте /etc/default/grub и добавьте следующую строку:

root ~ #
nano -w /etc/default/grub
/etc/default/grub
1
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_backlight=vendor"

Чтобы изменения вступили в силу, запустите:

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

После перезагрузки компьютера яркость должна меняться с помощью Fn+F2 или иных комбинаций для ноутбука.

Все равно не меняется яркость! #

Файлы, отвечающие за яркость монитора, находятся тут: /sys/class/backlight/. Попробуем вручную записать туда другие значение и посмотрим, меняется ли яркость. Для этого надо быть не просто пользователем с sudo, а надо залогиниться в рута.

user ~ $
su root
root ~ #
cat /sys/class/backlight/*/brighntess

Будут выведены какие-то значения. Понажимайте кнопку изменения яркости и снова выведите цифры:

root ~ #
cat /sys/class/backlight/*/brighntess

Если цифры таким образом не меняются, значит, не работают кнопки и их надо как-то чинить. Чтобы вручную поменять яркость, сделайте так (нужны права root). Переберите по очереди все папки в /sys/class/backlight/, чтобы понять, кто именно контролирует яркость. Показаны примеры, у вас могут быть другие названия папок. Скорее всего, нужно то, что не acpi_video*.

root ~ #
root ~ #
root ~ #
root ~ #
ls /sys/class/backlight/
echo '3' > /sys/class/backlight/acpi_video0/brighntess
echo '3' > /sys/class/backlight/acpi_video1/brighntess
echo '3' > /sys/class/backlight/intel_backlight/brighntess

Не работает звук и вебкамера #

При попытке запустить xfce4-mixer появляется ошибка:

GStreamer was unable to detect any sound devices. Some sound system
specific GStreamer packages may be missing. It may also be a permissions
problem.

Это может быть связано с тем, что пользователь не добавлен в группу audio. Чтобы добавить его в audio (и в video для работы вебкамеры), можно сделать так:

root ~ #
root ~ #
gpasswd -a vasilisa audio
gpasswd -a vasilisa video

Где вместо vasilisa нужно ввести имя пользователя.

Vi исчез в процессе установки #

В какой-то момент установки система может «забыть» команды vi и vim. Поставьте vim заново, может компилироваться полчаса — привыкайте к прелестям Gentoo!

root ~ #
emerge vim

Выполнить эту команду можно будет только после emerge-webrsync.

Заключение #

Может, в конце концов, возникнуть вопрос: на кой черт переписывать Gentoo Handbook, да причем менее подробно? Есть несколько причин:

И напоследок — большая просьба: если заметили ошибки и неточности, пожалуйста, отпишитесь в комментариях. Также с удовольствием и Костиком отвечу на все вопросы.


  1. Здесь и далее ссылки даются на русскую версию Gentoo Handbook (если перевод существует), поскольку для большинства читателей, полагаю, это будет удобнее. Однако английская версия, на мой взгляд, лучше написана, а русский перевод местами неправильный. Переключайте язык на английский, пройдя по ссылке. ↩︎

  2. Все мы привыкли с ранних лет к BIOS (basic input/output system) — набору программ, позволяющему управлять железом компьютера до загрузки операционной системы. На замену BIOS нынче приходит UEFI — Unified Extensible Firmware Interface, единый интерфейс расширяемой прошивки. ↩︎