воскресенье, 28 июля 2013 г.

Настройка Gentoo Linux

Хрен его знает, смотрит этот блог кто-нибудь или нет :) Но напишу для себя, на память. Archlinux быстрыми, уверенными темпами скатывается в УГ, так что решил окончательно перейти на Gentoo. Ну, поехали.
Установку посмею скоммуниздить отсюда: http://redvi.github.io/articles/install-gentoo.html
Благодарю автора за отличное изложение, всё кратко и по сути.

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

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

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

автор использует модемное соединение, данные передаются автоматически при помощи DHCP.
> # /sbin/ifconfig
если кроме интерфейса lo больше ничего нет, значит делаем следующее:
> # dhcpcd enp3s0 (где ваш сетевой интерфейс - enp3s0)
после чего повторяем команду /sbin/ifconfig для проверки
От marlock'a: вынужден заметить, что с недавних пор в Gentoo используется механизм предсказуемых имён сетевых интерфейсов, взятый из systemd, поэтому теперь интерфейсы называются не иначе как enp***.
теперь у нас появились данные интерфейса enp3s0.
Для настройки adsl-соединения:
> # pppoe-setup
От marlock: не забудь, что интерфейс для связи с миром называется enp3s0, а не eth0, как предлагает скрипт. Также, необходимо отредактировать файл /etc/resolv.conf.head - прописывай туда адреса DNS серверов, которые выдал провайдер, иначе интернет не попрёт.
> # ping ya.ru - пингуем яндекс
чтобы прервать пинги:
Ctrl+C
Интернет настроили, идём дальше

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

От marlock: нижеперечисленное актуально для MBR схемы разбивки диска. Для GPT разделы необходимо разбивать с помощью утилиты gptfdisk (aka gdisk), которой на установочном диске, кажется, нет. Это значит, что диск разбить необходимо до установки Gentoo с live-cd какого-нибудь другого дистрибутива. Кстати, gparted тоже поддерживает GPT разметку.
Для этого воспользуемся 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-stage3/
Выберите файл stage*.tar.bz2 и нажмите enter. Начнётся загрузка архива, это 161 Мб, так что пока можно попить кофейку.
stage
Загрузили? Распаковываем:
> # tar xvjpf stage3-*.tar.bz2
Теперь сделаем снимок дерева портежей
> # 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=native -pipe -O2" - где
"-march=native" - ныне рекомендуется использовать именно такой флаг, в этом случае GCC сам определит используемый процессор и выставит оптимальные флаги, -О2 - классс оптимизации.
Допустимые значения:
  • -s оптимизация по размеру
  • -0 без оптимизации
  • -1 -2 -3 - по скорости
  • CXXFLAGS="${CFLAGS}" - не изменяйте её
  • MAKEOPTS="-j3" - определяет сколько параллельных процессов компиляции можно запускать при установке пакета. Обычно ставят значение равное количеству ядер процессора +1. Если ваш процессор поддерживает технологию Hyper-threading, разумное значение будет: количество доступных ядер, умноженное на 2 +1. USE-флаги. Можно пока ничего не дописывать, займётесь этим позже.

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

Действия в примере производятся из каталога /
Выбор зеркала загрузки
> # mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
Выбор зеркала rsync:
> # mirrorselect -i -r -o >> /mnt/gentoo/etc/portage/make.conf
Из предложенного списка выберите зеркала России.
rsync
Нелишним будет скопировать информацию о DNS
> # cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
Монтируем /proc & /dev:
> # mount -t proc none /mnt/gentoo/proc
> # mount -o bind /dev /mnt/gentoo/dev
Переходим в новую среду с помощью 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/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/kde *
  [6]   default/linux/amd64/13.0/developer
  [7]   default/linux/amd64/13.0/no-multilib
  [8]   default/linux/amd64/13.0/x32
  [9]   hardened/linux/amd64
  [10]  hardened/linux/amd64/selinux
  [11]  hardened/linux/amd64/no-multilib
  [12]  hardened/linux/amd64/no-multilib/selinux
  [13]  hardened/linux/amd64/x32
  [14]  hardened/linux/uclibc/amd64
> # eselect profile set 5
Думаю, приведённые действия не нуждаются в пояснении, всё ясно из названий профилей. Нужно лишь выбрать необходимый вам, исходя из ваших задач. От marlock: ставлю kde.

USE-флаги

Служат для включения/отключения поддержки необязательных функций при компиляции программ. Вам не нужен X-сервер? Допишите значение "-X". Не нужна поддержка qt? Значит"-qt". И наоборот включите поддержку unicode: "unicode". Посмотреть допустимые значения:
> # less /usr/portage/profiles/use.desc
Значения дописываются в /etc/portage/make.conf в строку USE
От marlock: мой make.conf (пользуюсь KDE4): 
# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j3 -s"
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.
CHOST="x86_64-pc-linux-gnu"
# These are the USE flags that were used in addition to what is provided by the
# profile used for building.
USE="-doc -gnome -kontact -systemd -bindist -pulseaudio -semantic-desktop -v4l -nepomuk -akonadi -bluetooth -gps -infinality -auto-hinter -cleartype X acpi alsa bash-completion cairo dbus djvu dri ffmpeg flac fontconfig gif gphoto2 gstreamer icq jpeg jpeg2k lame libnotify libsamplerate lm_sensors lzma gzip bzip2 matroska mime mp3 mp4 mpeg mplayer mtp ogg openal opengl oscar pdf png policykit raster sdl sound svg svga syslog tiff truetype udev unicode usb vdpau x264 xcomposite xml xmpp kde qt4 gtk mmx sse sse2 sse3 ssse3 sse4_1 icu fbcon ebook"
VIDEO_CARDS="radeon"
LINGUAS="ru"
GENTOO_MIRRORS="http://mirror.yandex.ru/gentoo-distfiles/"
FEATURES="${FEATURES} parallel-fetch"
SYNC="rsync://rsync2.ru.gentoo.org/gentoo-portage"
source /var/lib/layman/make.conf
PATCH_OVERLAY=/etc/portage/autopatch
ACCEPT_LICENSE="*"
#PORTDIR_OVERLAY="${PORTDIR_OVERLAY} /var/lib/layman"

> # nano -w /etc/portage/make.conf
Например:
gentoo use

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

> # nano -w /etc/locale.gen
вы увидите список закомментированных строк с кодировками, вот сверху или же ниже его впишите:
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8
сохраните изменения и выйдите: Ctrl+OCtrl+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 (вызов меню с настройками)
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
Если вы собрали ядро с initrg, следует всё же установить 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
> # rc-update add consolefont default
Проверяем наши устройства:
> # nano -w /ets/fstab
Должно получится примерно так:
fstab
Обратите внимание: нужно убрать параметр noauto напротив /boot (в данном примере /bootрасположен на /sda1)
Имя хоста:
> # nano -w /etc/conf.d/hostname
Укажите здесь имя своего ПК
Сеть:
> # nano -w /etc/conf.d/net
дописываем  +добавляю конфиг моего pppoe):
# /etc/conf.d/net
#
config_enp3s0="dhcp" - для получения динамического IP-адреса (для сети mcomm хватит :))
rc_net_ppp0_need="net.enp3s0"
config_ppp0="ppp" 
link_ppp0="enp3s0"
plugins_ppp0="pppoe"
username_ppp0="mcm6552"
password_ppp0="hb**bg"
pppd_ppp0='defaultroute usepeerdns'
Теперь следует указать gentoo на существующий интерфейс. Для этого создайте символьную ссылку на net.eth0:
> # cd /etc/init.d
> # ln -s net.lo net.enp3s0
> # ln -s net.lo net.ppp0
Добавление сетевого интерфейса в автозагрузку:
> # rc-update add net.enp3s0 default
> # rc-update add net.ppp0 default
Создание пароля для суперпользователя:
> # passwd
впишите пароль для учётной записи root
Примечание: можете также ознакомиться с настройками файла /etc/rc.conf (редактор по умолчанию, графическая среда и прочее)
Настройка раскладки клавиатуры:
> # nano /etc/conf.d/keymaps
KEYMAP="ru"
Настройка часов:
> # nano /etc/conf.d/hwclock
CLOCK="local"
TIMEZONE="Europe/Moscow"
Загрузчик:
  • # emerge grub
  • # nano /boot/grub/menu.lst
  • splashimage - расскоментируете - будет картинка при загрузке
  • timeout - время, после истечения которого начнётся загрузка
  • kernel - можно дописать в конец этой строки разрешение экрана консоли, например,vga=0x318.
Обязательно проверьте, чтобы указанная здесь версия ядра полностью совпадала с версией собранного вами. Если это не так, исправьте на верную, иначе загрузчик просто не найдёт ядро.
Для тех у кого параллельно установлена Windows (на /dev/sda1):
title=Windows XP
rootnoverify (hd0,0)
makeactive
chainloader +1
Примечание: на практике информация про Windows не проверена
Установка загрузчика:
> # grep -v rootfs /proc/mounts > /etc/mtab
> # grub install /dev/sda - где `sda` - ваш диск

Финиш

> # exit
> # cd
> # umount /mnt/gentoo/boot /mnt/gentoo/proc /mnt/gentoo/dev /mnt/gentoo (в общем последовательно отмонтируйте всё, что смонтировали в `/mnt`)
> # reboot
gentoo grub
Перезагрузка, загрузка ПК с винчестера и вас встречают приглашением входа в систему. Поздравляю, вы победили!

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

Перезагрузившись, мы обнаружим прескверную вещь: кириллица отображается квадратиками. Что ж, в locale.gen нужные настройки внесены, продолжим квест по русификации системы.
> # emerge terminus-font intlfonts freefonts cronyx-fonts kbd ubuntu-font-family dejavu
В файле /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/consolefont:
consolefont="cyr-sun16"
consoletranslation="

Теперь ставим KDE:
http://wiki.enchtex.info/howto/gentoo/gentoo_install_kde

Настройка конфетных шрифтов:
http://linuxforum.ru/viewtopic.php?pid=208031#p208031
Патч вместо устаревшего: http://www.calculate-linux.org/attachments/1847/cairo-cleartype-1.10.patch