Эта статья не похожа ни на одну из тех, которые Вы встречали здесь. Лишь по одной причине, что речь пойдёт о ОС 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.ru6. Монтируем файловую систему.
Подключим 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Можно ввести команду:
Код: Выделить всё
mount7. Качаем стадии.
Стадии – это что-то вроде самого дистрибутива ОС, точнее скелет ОС, без стороннего софта, ядра, исходных кодов, исходных кодов 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/localtime11. Синхронизируем portage, точнее у нас их вообще нет, но закачку ресурсов желательно начинать именно с portage, а не с source. Portage - это альтернатива портам во FreeBSD, но они на себя берут ещё кое-какие функции, связанные с исходным кодом оси.
Код: Выделить всё
emerge --sync12. Синхронизируем, закачаем исходные коды оси.
Код: Выделить всё
emerge gentoo-sources13. Теперь скачаем исходный код ядра в конфигурации genkernel, то есть дефолтовой конфигурации со стандартной поддержкой.
Код: Выделить всё
emerge genkernelКод: Выделить всё
genkernel all14. Установим необходимое, прикладное, программное обеспечение -
такой софт, как: 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.confSplashimage и в ней поправили адрес нашего 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и перезагружаемся:
Код: Выделить всё
rebootLILO:
Загружаемся под компашкой снова, монтируем разделы в уже существующие директории, плюс псевдодевайсы, заходим под 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 командой:
Код: Выделить всё
lilo19. Если Вы всё делали правильно, то у вас с одним из загрузчиков точно загрузится!
Но мы видим, что на экране много жёлтых звёздочек и предупреждений, - это из-за сигнатур файлов и времени, сейчас всё поправим!)))
Заходим под 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 defaultnameserver ip-dns-сервера
Теперь можно перезагружаться:
Код: Выделить всё
rebootКод: Выделить всё
ping mail.ruНа этом я закончу описание первой базовой части настройки Gentoo Linux...
Успехов!
