Эта статья не похожа ни на одну из тех, которые Вы встречали здесь. Лишь по одной причине, что речь пойдёт о ОС Gentoo Linux. Немного предыстории - почему именно так?
Как-то мне попался объект, на обслуживании у которого было 5 сервантов различного характера и на всех стоял ОС Gentoo. Когда я увидел эдакое чудо, у меня скривилось лицо, типа и снова Линупсы ( надо их сносить и ставить всем нам любимую FreeBSD! ))) Но контора работала почти без выходных, к тому же ещё и ночью в третью смену, так что им и инет, и контроллеры домена, и их хостер очень были нужны. Да и времени у меня было мало отведено на этот объект. Так что когда там совершать переустановки? Да ещё на 5 сервантах! Ситуация складывалась не совсем благоприятно, а мне туда вмешиваться нужно было сразу, к тому же то на хостере возникла необходимость что-то поменять, то IP сменился у одного из шлюзов. По мелочи, но работать надо, плюс iptables, с которым тогда я вообще почти не был знаком. Времени и возможности нет. Что делать?
Я решил (мною было принято решение) ознакомиться с этой ОС. У меня был опыт работы с Ubuntu и другими Болженосами. Но каждый раз, когда я за них садился, я думал о любимой FreeBSD! Решил я создать в своей лаборатории макет с подобной конфигурацией, как на работе, хотя бы пары серверов, чтобы можно было разобраться, что это за фрукт Gentoo и с чем его едят?
Ну вот и приступим! В этой статье я опишу, как установить и провести минимальную настройку этого зверя.
1. Нужно скачать дистрибутив, а точнее образ загрузочной версии LiveCD для загрузки с компашки и непосредственно установки. Скачать это мы можем с официального сайта gentoo.org или с любого зеркала, я использую зеркала, так как с ними у меня скорость хорошая, вы можете также качать с зеркала. К примеру c: http://mirror.yandex.ru/gentoo-distfile ... rrent-iso/
Как Вы заметили по адресу пути ссылки, я выбрал releases, архитектуру x86,
iso образы. И в директории current-iso разумеется. Мы выбираем install-x86-minimal-20101123.iso - файл с расширением iso. Нарезаем его на болванку и грузимся с него, при загрузке нам ничего указывать не надо, всё по умолчанию.
2. Когда мы загрузимся, то увидим следующую картину: Первое, с чего стоит начать, это определить, есть ли у нас хард? Точнее, видит ли его gentoo? Для этого введём пару команд:
Код: Выделить всё
ls /dev | grep sd
Код: Выделить всё
ls /dev | grep hd
Итак, в моём случае sata и он будет sda. 3. Теперь нам нужно разбить наш хард на разделы.
Для этого используем команду:
Код: Выделить всё
fdisk /dev/sda
Теперь посмотрим, какие у нас есть разделы на харде, вводим латинскую букву “p”, и видим список разделов. У меня винт никак не разбит, поэтому нет ни одного раздела. Давайте определимся, как мы будет разбивать. Судя по шапке, размер моего винта 21.5 ГБ. Поскольку я не собираюсь в данном случае делать Desktop, то home можно и поменьше, а больше внимания уделить var, root, usr. И главное - если мы будем использовать основные разделы, мы упрёмся в цифру 4, и это будет придельное количество разделов. Ну, нам явно понадобится большее количество разделов и поэтому нам придётся использовать логические разделы.
Приступим:
- жмём клавишу “n” - она обозначает add new partition, добавить раздел,
- затем “e” – extended создать логическую область. На вопрос «выбрать от
одного до четырёх» мы выбираем один, так как логическая область занимает
один основной раздел,
- соглашаемся нажатием клавши Enter с началом, то есть First Cylinder
- и вводим размер логической области в формате +10G. Если вы решили
задействовать весь винт, то ничего не вводите, а просто нажимаете Enter.
- теперь у вас есть логическая область, проверить это Вы можете по
клавише “p”.
- затем будем разбивать логическую область, я выбрал вот такую
конфигурацию:
- boot – 256Mb
swap – 2048Mb # В два раза больше оперативной памяти.
root – 4096Mb
var – 6Gb
usr – 7Gb
tmp - # Всё что останется порядка 512 Mb
своего харда.
Жмём снова “n”, затем “l” (l - logical), то есть создаём логический раздел.
На вопрос о первом цилиндре (First cylinder) отвечаем Enter.
На вопрос о конце раздела, таким образом мы задаём размер раздела, вводим
размер в формате +256M (данный пример подходит к моему случаю, а Вы вводите свои параметры размера). Если размер нужно указать в гигабайтах, ставим
латинскую букву “G” вместо буквы “M”.
Таким образом создаём все разделы. Последний - можно просто Enter нажать в вопросе о последнем цилиндре, тогда он займёт пространство, которое осталось до конца
логического раздела.
Теперь нажимаем “p” - мы должны увидеть результат наших с Вами стараний, новую таблицу разделов, но учтите, что она ещё не создана. Для того, чтобы всё вступило в силу, нам необходимо провести запись изменений, при помощи клавиши “w” - только поле этого у нас всё запишется!
4. Теперь, после того, как у нас появилась таблица разделов, необходимо отформатировать разделы. Как это сделать?
Начнём со swap раздела! Форматируем swap командой:
Код: Выделить всё
mkswap /dev/sda6 –L swap
- L swap - это label-подписка раздела, метка тома.
Теперь форматируем все остальные разделы, выберем файловую систему ext3.
Код: Выделить всё
mke2fs –j /dev/sda5 –L boot
И таким образом мы форматируем все разделы, кроме swap.
5. Настраиваем доступ к интернет.
Для этого посмотрим, какие у нас интерфейсы.
Код: Выделить всё
ifconfig
Просто у LiveCD есть dhcp клиент, если у нас в подсети есть dhcp сервер, то мы получим от него ip со всеми вытекающими. Ну, а если это не удалось по каким-то причинам?
Для того, чтобы увидеть все интерфейсы, в том числе и неактивные, введём команду:
Код: Выделить всё
ifconfig –a
Если присутствует dhcp сервер, то мы можем клиента вручную заставить поискать dhcp, при помощи команды:
Код: Выделить всё
dhcpcd eth0
Но это не лучший вариант! Лично я предпочёл бы статику.
Для этого присвоим ip и маску подсети нужному интерфейсу:
Код: Выделить всё
ipconfig eth0 192.168.224.12/24
Затем укажем нужный шлюз:
Код: Выделить всё
route add default gw 192.168.224.254
Ну и, как кульминация настройки сети, нам понадобится адрес DNS сервера.
Для этого редактируем конфиг /etc/resolv.conf при помощи текстового редактора nano:
Код: Выделить всё
nano /etc/resolv.conf
Сохранить при помощи комбинации клавиш “Ctrl+o”, а выйти при помощи “Ctrl+x”.
Теперь пробуем пинговать любой ресурс, например:
Код: Выделить всё
ping mail.ru
6. Монтируем файловую систему.
Подключим swap:
Код: Выделить всё
swapon /dev/sda6
Монтируем root раздел:
Код: Выделить всё
mount /dev/sda7 /mnt/gentoo
Теперь направляемся в замонтированный раздел:
Код: Выделить всё
cd /mnt/gentoo
Код: Выделить всё
ls
Код: Выделить всё
lost+found
Это каталог журнала! Значит, пока всё хорошо!
Теперь мы создадим каталоги, куда будут монтироваться другие разделы, если вспомнить, то в моём случае есть ещё разделы: boot, var, usr, tmp.
В Вашем случае могут быть свои разделы.
Создаём директории:
Код: Выделить всё
mkdir {boot,var,usr,tmp}
Монтируем оставшиеся разделы:
Код: Выделить всё
mount /dev/sda5 /mnt/gentoo/boot
mount /dev/sda8 /mnt/gentoo/var
mount /dev/sda9 /mnt/gentoo/usr
mount /dev/sda10 /mnt/gentoo/tmp
Можно ввести команду:
Код: Выделить всё
mount
7. Качаем стадии.
Стадии – это что-то вроде самого дистрибутива ОС, точнее скелет ОС, без стороннего софта, ядра, исходных кодов, исходных кодов portage.
Вводим команду строчного браузера:
Код: Выделить всё
links http://mirror.yandex.ru
Нажимаем на файле клавишу Enter, и со всем соглашаемся - начинается закачка.
По окончании закачки выходим, нажимая букву “q”.
Теперь сделав команду ls мы увидим, что архив со стадиями скачался и лежит среди директорий.
8. Распаковываем архив.
Код: Выделить всё
tar xvjpf stage3-i686-“дата выпуска”.tar.bz2
Код: Выделить всё
rm –f stage3-i686-“ дата выпуска”.tar.bz2
Редактируем make.conf, используя редактор nano:
Код: Выделить всё
nano /mnt/gentoo/etc/make.conf
Код: Выделить всё
CFLAGS=”-02 –march=i686 -pipe”
CXXFLAGS=”${CFLAGS}”
Код: Выделить всё
cp –L /etc/resolv.conf /mnt/gentoo/etc/
Код: Выделить всё
mirrorselect –i –o >> /mnt/gentoo/etc/make.conf
Клавишей «пробел» отмечаем галочки, и по клавише Enter завершаем выбор.
Монтируем псевдодевайсы:
Код: Выделить всё
mount –t proc none /mnt/gentoo/proc
mount –o bind /dev /mnt/gentoo/dev
Код: Выделить всё
chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile
Код: Выделить всё
export PS1=”(CHROOT) $PS1”
Укажем наш пояс:
Код: Выделить всё
tzselect
Настроим локаль, допишем в файл locale.gen:
Код: Выделить всё
nano /еtс/locale.gen
Код: Выделить всё
ru_RU.UTF-8 UTF-8
Код: Выделить всё
locale-gen
Код: Выделить всё
cp /usr/share/zoneinfo/Europe/Simferopol /etc/localtime
11. Синхронизируем portage, точнее у нас их вообще нет, но закачку ресурсов желательно начинать именно с portage, а не с source. Portage - это альтернатива портам во FreeBSD, но они на себя берут ещё кое-какие функции, связанные с исходным кодом оси.
Код: Выделить всё
emerge --sync
12. Синхронизируем, закачаем исходные коды оси.
Код: Выделить всё
emerge gentoo-sources
13. Теперь скачаем исходный код ядра в конфигурации genkernel, то есть дефолтовой конфигурации со стандартной поддержкой.
Код: Выделить всё
emerge genkernel
Код: Выделить всё
genkernel all
14. Установим необходимое, прикладное, программное обеспечение -
такой софт, как: udev, syslog-ng, vixie-cron, dhcpcd
Но для того, чтобы он корректно установился или установился вообще, нам потребуется прописать нужные USE флаги в make.conf.
Редактируем make.conf, впишем вот такую строку:
Код: Выделить всё
USE=”-gnome –gtk –kde –qt –X dvd cdr alsa unicode”
Собираем:
Код: Выделить всё
emerge udev syslog-ng vixie-cron dhcpcd
Установка завершена, и мы видим предупреждение о том, что есть новая информация для нас. Для её ознакомления не обязательно, но всё же можно вызвать команду:
Код: Выделить всё
esekect news read
Код: Выделить всё
rc-update add udev boot
rc-update add syslog-ng default
rc-update add vixie-cron default
Стало (получилось): 17. Внесём некоторые настройки.
По желанию можно сменить hostname, для этого нужно отредактировать конфиг:
Код: Выделить всё
nano /etc/conf.d/hostname
Код: Выделить всё
passwd root
Код: Выделить всё
nano /etc/conf.d/keymaps
Код: Выделить всё
KEYMAP=”us”
Код: Выделить всё
KEYMAP=”ru-ms”
Код: Выделить всё
SET_WINDOWKEYS=”no”
Поправим часы:
Код: Выделить всё
nano /etc.conf.d/clock
Код: Выделить всё
CLOCK=”UTC”
Код: Выделить всё
CLOCK=”local”
TIMEZONE
и изменим на свой город:
Код: Выделить всё
TIMEZONE=”Europe/Simferopol”
Здесь есть подводные камни! Обычно все придерживаются grub, но были казусы с винтами сигейт 2TB, когда grub не хотел работать, и приходилось ставить lilo!
Если у вас винт старый, то не переживайте и ставьте grub, а если из новых , то пробуйте grub, но в случае провала пробуйте lilo, - я опишу как установить и настроить и тот, и другой загрузчик.
GRUB:
Установим:
Код: Выделить всё
emerge grub
Код: Выделить всё
grep –v rootfs /proc/mounts > /etc/mtab
Код: Выделить всё
ls /boot
Код: Выделить всё
nano /boot/grub/grub.conf
Splashimage и в ней поправили адрес нашего boot раздела. Если у нас, например, sda5, то мы должны указать (hd0,4), отсчёт начинается от 0!
title и root понятно.
А вот в kernel параметр real_root=/dev/sda7 получил чёткие координаты root раздела.
Так же были добавлены опции init=/linuxrc ramdisk=8192 udev и опция vga не обязательна - это кадровый буфер, с ним бывают ошибки, поскольку его нужно подбирать к монитору и видеокарте. Можно указать, как у меня, но если при загрузке система скажет, что vga параметры неверны, то нажав Enter по предложению системы, Вы увидите таблицу буферов. Выбрав то разрешение, которое Вас устраивает, Вы сможете заново переконфигурировать grub.conf.
Во всём остальном главное не ошибиться с путями, правильно указать kernel-genkernel версию и initramfs-genkernel
Теперь переупаковываем MBR:
Код: Выделить всё
grub-install /dev/sda
Код: Выделить всё
grub-install /dev/had
Но в случае провала после перезагрузки можно попробовать lilo!
Теперь выходим из chroot:
Код: Выделить всё
exit
и перезагружаемся:
Код: Выделить всё
reboot
LILO:
Загружаемся под компашкой снова, монтируем разделы в уже существующие директории, плюс псевдодевайсы, заходим под chroot, обновляем окружение, и устанавливаем lilo:
Код: Выделить всё
emerge lilo
Код: Выделить всё
cp /etc/lilo.conf.example /etc/lilo.conf
Код: Выделить всё
nano /etc/lilo.conf
Код: Выделить всё
boot /dev/had
Код: Выделить всё
boot /dev/sda
для тех, у кого sata винты.
Раcкомvентируем
Код: Выделить всё
timeout
Код: Выделить всё
delay
Код: Выделить всё
vga=normal
Код: Выделить всё
vga=791
Код: Выделить всё
image=/boot/kernel-genkernel-x86-2.6.36-gentoo-r5
label=gentoo
read-only
root=/dev/ram0
append="init=/linuxrc ramdisk=8192 real_root=/dev/sda7 udev"
initrd=/boot/initramfs-genkernel-x86-2.6.36-gentoo-r5
Теперь перепаковываем MBR командой:
Код: Выделить всё
lilo
19. Если Вы всё делали правильно, то у вас с одним из загрузчиков точно загрузится!
Но мы видим, что на экране много жёлтых звёздочек и предупреждений, - это из-за сигнатур файлов и времени, сейчас всё поправим!)))
Заходим под root и прикоснёмся к файлам:
Код: Выделить всё
touch /etc/rc.conf
touch /etc/resolv.conf
touch /etc/conf.d/*
touch /etc/init.d/*
Вод теперь нет ругни!
20. Но это ещё не конец, ведь мы видим, что baselayout ругается с udev!
И это серьёзная проблема. Она касается не только udev, но и другого софта коснётся!
Для этого необходимо обновить baselayout:
Перед тем, как начать, проверяем работает ли инет, если не работает, а скорей всего он не будет работать, - я специально не настраивал сеть, чтобы дважды её не настраивать, - инет заработает в случае наличия dhcp сервера в сегменте Вашей сети.
Как настроить инет, если он не работает?
Код: Выделить всё
ifconfig eth0 192.168.224.12/24
Код: Выделить всё
route add default gw 192.168.224.254
Что такое baselayout?
Baselayout предоставляет базовый набор файлов, необходимых для нормального функционирования системы, например /etc/hosts, /etc/fstab и т.д. Он также устанавливает базовую схему файловой системы, используемую в Gentoo (т.е. каталоги /etc, /var, /usr, /home и т.д.).
И baselayout сам по себе не работает, второй baselayout тянет зависимостью за собой OpenRC!
Что такое OpenRC?
OpenRC – основанная на зависимостях система запуска стартовых скриптов, работающая с любым init, предоставляемым системой, обычно с /sbin/init. Но в тоже время она не является заменой для стандартного /sbin/init.
Зачем переходить на OpenRC?
Первоначальная система запуска стартовых скриптов Gentoo, построенная на baselayout-1, была целиком написана на bash. Это привело к некоторым ограничениям. Например, к невозможности работы, основанной на bash системы в Gentoo/FreeBSD и в Gentoo Embedded. Все это привело к созданию baselayout-2, который написан на C и требует для работы только POSIX совместимую оболочку.
В ходе разработки в baselayout-2 были оставлены только набор конфигурационных файлов. Все, что раньше занималось загрузкой и инициализацией системы, было вынесено в отдельный пакет. Вот так и появилась OpenRC.
OpenRC была создана и поддерживается Роем Маплсом (Roy Marples) для всех разновидностей Gentoo, таких, как Gentoo Linux, Gentoo/FreeBSD, Gentoo Embedded, Gentoo Vserver, а также для других платформ (FreeBSD и NetBSD).
Миграция на baselayout-2 и OpenRC:
Создаём директорию для служебных файлов, которые будут служить нам сценарием маскировки и размаскировки:
Код: Выделить всё
mkdir /etc/portage
Код: Выделить всё
touch /etc/portage/package.keywords
Код: Выделить всё
sys-apps/baselayout ~x86
sys-apps/openrc ~x86
Затем пересобираем baselayout:
Код: Выделить всё
emerge -av baselayout
По окончании компиляции ни в коем случае не перезагружайте и больше ничего не делайте, пока не пройдёте следующие этапы!
Запускаем команду:
Код: Выделить всё
dispatch-conf
Запускаем и видим, что предлагается сравнить старый конфиг с новым. Всё, что с минусом - старое, а с плюсами - новое, в тех файлах, которые мы ранее не правили, можно смело соглашаться клавишей “u”! Исправления, внесенные ранее в старые конфиги, необходимио внести в новые конфиги, например: hwclock. Тут явно сравнивая с его предшественником, нужно UTC заменить на local, для этого нажимаем клавишу “e”. Попадаем в уже знакомый nano, и поправив конф, сохраняем, затем можно нажать “u”, вернувшись снова к сравнению конфигов. Затем файл keymap - здесь нужно us заменить на ru-ms, проделываем вышеуказанную работу…
По окончании делаем ещё пару нехитрых действий, перегоняем с rc в rc.conf параметры:
Код: Выделить всё
cat /etc/conf.d/rc |grep –v ^$ |grep –v ^# >> /etc/rc.conf
Код: Выделить всё
rc_logger="YES"
Настроим наконец-то сеть, для этого правим конфиг:
Код: Выделить всё
nano /etc/conf.d/network
Код: Выделить всё
ifconfig_eth0=”192.168.224.12 netmask 255.255.255.0”
defaultroute=”gw 192.168.224.254”
domainname=”local”
Добавим в автозагрузку:
Код: Выделить всё
rc-update add network default
nameserver ip-dns-сервера
Теперь можно перезагружаться:
Код: Выделить всё
reboot
Код: Выделить всё
ping mail.ru
На этом я закончу описание первой базовой части настройки Gentoo Linux...
Успехов!