05.05.13

EУстановка gentoo

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


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

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




-Настройка интернет-соединения:
автор использует модемное соединение, данные передаются автоматически при помощи DHCP.
# /sbin/ifconfig
если кроме интерфейса lo больше ничего нет, значит делаем следующее:
# dhcpcd eth0 (где ваш сетевой интерфейс - eth0)
после чего повторяем команду /sbin/ifconfig
теперь у нас появились данные интерфейса eth0.

Для настройки adsl-соединения:
# pppoe-setup
# net-setup eth0 (для обычных или беспроводных сетей)
# ping ya.ru - пингуем яндекс
чтобы прервать пинги:
Ctrl+C
Интернет настроили, идём дальше

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

Для этого воспользуемся 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 - выйти


-Назначение файловой системы:
# 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 - монтирование раздела загрузчика

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

-В качестве источника загрузки автором было использовано зеркало mirror.yandex.ru
Внимательно следите за тем,чтобы загрузить подходящий скачанному вами образу архив. В примере использован amd64.
# cd /mnt/gentoo
# links http://mirror.yandex.ru/gentoo-distfiles/releases/amd64/current-stage3/
Выберите файл stage*.tar.bz и нажмите enter. Начнётся загрузка архива, это 161 Мб, так что пока можно попить кофейку.


Загрузили? Распаковываем:
# 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

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

Настройки хранятся в файле 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.
USE-флаги. Можно пока ничего не дописывать, займётесь этим позже.

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

Действия в примере производятся из каталога /
-Выбор зеркала загрузки
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
- Выбор зеркала rsync:
mirrorselect -i -r -o >> /mnt/gentoo/etc/portage/make.conf
Из предложенного списка выберите зеркала России.


-Нелишним будет скопировать информацию о 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"


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

- Обновите дерево портежей:
# 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

Например:


-Настройка кодировки:
# 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

7. Ядро

- Скачаем исходники ядра
# USE="-doc symlink" emerge gentoo-sources

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

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

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

В таком случае вы сможете собрать своё ядро, а genkernel сделает всё остальное.
После сборки можете просто проверить название созданного ядра и initrd, а затем обратиться к пункту 8:
# ls /boot/kernel* /boot/initramfs*

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


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

Включение поддержки файловых систем:


Поддержка DOS/FAT/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



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

# 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

-Проверяем наши устройства:
# nano -w /ets/fstab
Должно получится примерно так:


Обратите внимание: нужно убрать параметр noauto напротив /boot (в данном примере /boot расположен на /sda1)

- Имя хоста:
# nano -w /etc/conf.d/hostname
Укажите здесь имя своего ПК
- Сеть:
# nano -w /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 (редактор по умолчанию, графическая среда и прочее)

- Настройка раскладки клавиатуры:
# nano /etc/conf.d/keymaps
KEYMAP="ru"

- Настройка часов:
# nano /etc/conf.d/clock
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 - ваш диск

9. Финиш

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


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

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

Перезагрузившись, мы обнаружим прескверную вещь: кириллица отображается квадратиками. Что ж, в 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/consolefont :

consolefont="cyr-sun16" consoletranslation=""


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



    1  source /etc/profile
    2  export PS1="(chroot) $PS1"
    3  emerge genkernel
    4  nano -w /etc/fstab
    5  nano -w /etc/conf.d/hostname
    6  nano -w /etc/conf.d/net
    7  cd /etc/init.d
    8  ln -s net.lo net.eth0
    9  rc-update add net.eth0 default
   10  passwd
   11  nano -w /etc/conf.d/keymaps
   12  nano -w /etc/conf.d/hwclock
   13  nano -w /etc/locale.gen
   14  locale-gen
   15  nano -w /etc/conf.d/keymaps
   16  env-update && source /etc/profile
   17  emerge vixie-cron
   18  rc-update add vixie-cron default

   20  grep -v rootfs /proc/mounts > /etc/mtab
   22  grub-install --no-floppy /dev/sda
   23  nano -w /boot/grub/grub.conf
   24  ls /boot/kernel-3.7.10-gentoo
   26  ls /boot/initramfs-genkernel-x86_64-3.7.10-gentoo-r1
   27  nano -w /boot/grub/grub.conf
   28  emerge terminus-font intlfonts freefonts cronyx-fonts corefonts kbd
   29  fc-cache -fv


    1  source /etc/profile
    2  export PS1="(chroot) $PS1"
    3  nano /etc/env.d/02locale
    4  nano /etc/conf.d/keymaps
    5  nano /etc/conf.d/consolefont
    6  useradd -m -G users,wheel,audio -s /bin/bash dimon
    7  passwd dimon
    8  history