Установка Gentoo · 9 min read · Feb 06, 2026

Идеальный сервер - Gentoo 2007.0 - Страница 2

3 Базовая система

3.1 Загрузка установочного диска

Вставьте ваш CD с минимальной установкой Gentoo в систему и загрузитесь с него. Вы можете установить некоторые параметры в загрузчике, но если просто оставить как есть, он продолжит и загрузит Linux самостоятельно.

Загрузчик установки Gentoo

(По умолчанию будет использоваться консоль с кадровым буфером, но в интересах меньших скриншотов я изменил опцию на использование VGA, нажав F1 и выбрав ядро gentoo-nofb.)

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

Выбор раскладки клавиатуры Gentoo

Если вы используете клавиатуру США, вы можете просто оставить как есть или нажать Enter, и этот запрос истечет с этим выбором. Я живу в Британии, поэтому мне нужна раскладка uk.

Больше текста прокручивается…

Установщик Gentoo все еще загружается

Пока вы не окажетесь на приглашении root.

Установщик Gentoo на приглашении root

Скорее всего, он нашел DHCP-сервер во время обнаружения, и вы уже подключены к интернету. Однако мы хотим сразу указать свой собственный IP-адрес, поэтому мы вводим,

net-setup eth0

И проходим через параметры по мере необходимости:

net-setup 1

net-setup 2

net-setup 3

net-setup 4

net-setup 5

net-setup 6

net-setup 7

net-setup 8

net-setup 9

Теперь вы снова на приглашении root, как предложено, вы можете просто проверить, что ваша сеть работает нормально.

ifconfig

Завершение net-setup

И любые другие команды, которые вы хотите выполнить, чтобы убедиться, что у вас есть интернет-соединение. Например (из справочника Gentoo):

ping -c 3 www.gentoo.org

Теперь временно установите ваше имя хоста. Мы будем считывать это позже, чтобы автоматизировать некоторые последующие этапы установки.

hostname server1.example.com

3.2 Вход в установочную среду удаленно

Установите пароль root. Это только для системы установки, а не для окончательной установленной системы:

passwd

И запустите sshd:

/etc/init.d/sshd start

Будут созданы ключи хоста, и демон sshd будет запущен. Теперь вы можете войти в систему установки с удобством вашего обычного терминального приложения на вашем компьютере. Очевидно, если вы предпочитаете или должны, вы можете пропустить этот шаг и продолжить использовать консоль.

ssh [email protected]

Очевидно, это будет работать только если server1.example.com разрешается в вашей системе.

Первый удаленный вход

3.3 Настройка системного диска

Эта часть, вероятно, будет очень отличаться на других архитектурах. Обратитесь к справочнику Gentoo, если вы не на x86 или amd64, или если вы хотите сделать что-то другое, кроме предложенной по умолчанию схемы разбиения в справочнике x86.

Чтобы разбить диск, используйте parted. Мы просто собираемся сразу настроить предложенную схему разбиения Gentoo, и parted позволяет нам сделать это так, чтобы это можно было кратко показать в тексте:

parted /dev/hda

Вы получите приглашение (parted). На этом приглашении введите следующие команды:

mklabel msdos  
mkpartfs primary ext2 0 32  
mkpartfs primary linux-swap 32 545  
mkpart primary 545 -0  
set 1 boot on  
print

Вы должны увидеть что-то вроде:

Disk /dev/hda: 5906MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number  Start   End     Size    Type     File system  Flags
 1      32.3kB  32.9MB  32.9MB  primary  ext2         boot 
 2      32.9MB  545MB   512MB   primary  linux-swap        
 3      545MB   5906MB  5361MB  primary                    
(parted) 

Введите quit, чтобы выйти и сохранить изменения.

Мы уже создали файловые системы ext2 и swap на разделах 1 и 2, поэтому мы просто хотим создать файловую систему ext3 на разделе 3.

mke2fs -j /dev/hda3

И давайте включим swap для нашей установочной среды:

swapon /dev/hda2

И смонтируем файловую систему, на которую мы собираемся установить.

mount /dev/hda3 /mnt/gentoo  
mkdir /mnt/gentoo/boot  
mount /dev/hda1 /mnt/gentoo/boot

3.4 Подготовка к Stage 3

Подтвердите, что дата и время правильные для вашей системы. Если нет, это может вызвать путаницу позже.

date
Thu Aug 30 13:58:36 UTC 2007

Что действительно, на момент, когда я это делал, было немного неправильно, так что исправьте это что-то вроде:

date 083013542007

Теперь нам нужно скачать Stage 3 Tarball и снимок Portage. Вместо того чтобы возиться с ссылками или lynx, давайте просто используем несколько команд:

mirrorselect --interactive --output > /tmp/mirror

mirrorselect - загрузка зеркал

Выберите любые зеркала, которые подходят вам, и выберите OK. Когда вы выйдете, строка будет записана в /tmp/mirror с вашими выборами. Нам нужно только первое, так что:

source /tmp/mirror   
MIRRORS=($GENTOO_MIRRORS)   
MIRROR=${MIRRORS[0]}   
cd /mnt/gentoo   
wget ${MIRROR}releases/x86/current/stages/stage3-$(arch)-2007.0.tar.bz2 \   
|| wget ${MIRROR}releases/x86/current/stages/stage3-x86-2007.0.tar.bz2   
wget ${MIRROR}snapshots/portage-latest.tar.bz2

На самом деле нет надежного способа определить архитектурно-специфические части вышеуказанного URL stage3, поэтому, если вы не на x86, обратитесь к справочнику Gentoo.

Распакуйте stage tarball.

tar --extract --verbose --bzip2 --preserve-permissions --file stage3-*.tar.bz2

Распакуйте снимок portage.

tar --extract --verbose --bzip2 --file portage-latest.tar.bz2 --directory /mnt/gentoo/usr

Теперь вы можете удалить эти загрузки, если у вас недостаточно места.

rm portage* stage*

Теперь я собираюсь сделать что-то почти еретическое для сообщества Gentoo и оставить etc/make.conf в покое! Это файл, в котором настраиваются такие вещи, как CFLAGS, и где вы можете установить его так, чтобы он был оптимальным, как вам угодно. Я не собираюсь его трогать. Вам следует хотя бы проверить его на адекватность. Если он неадекватен, возможно, вы загрузили неправильный файл stage. В частности, на x86 флаг -mtune=i686 установлен по умолчанию даже в обычном файле stage3 x86, что может быть неуместно, если вы устанавливаете на старое оборудование. Но, используя $(arch), мы надеемся избежать подобных проблем.

vi /mnt/gentoo/etc/make.conf

Мы просто собираемся добавить некоторую информацию, которая нам нужна. Во-первых, зеркала, с которых Gentoo будет загружать себя. Мы уже один раз получили зеркала для загрузки, так что, чтобы не выбирать их снова, мы возьмем этот выбор и добавим выбор для зеркала rsync.

cat /tmp/mirror >> /mnt/gentoo/etc/make.conf   
mirrorselect --interactive --rsync --output >> /mnt/gentoo/etc/make.conf

mirrorselect - зеркала rsync

Теперь мы собираемся скопировать некоторые вещи в /mnt/gentoo, чтобы войти в chroot и продолжить установку. Мы также скопируем текущую сетевую конфигурацию, чтобы установленная система имела то же самое. Этот небольшой скрипт запишет текущую конфигурацию eth0 в новый формат /etc/conf.d/net.

#!/bin/bash
cat /etc/resolv.conf > /mnt/gentoo/etc/resolv.conf
echo "HOSTNAME=\"$(hostname -f)\"" > /mnt/gentoo/etc/conf.d/hostname
eth0=$(ifconfig eth0 | grep "inet addr")
ip=$(echo $eth0 | cut -f2 -d' ' | cut -f2 -d:)
broadcast=$(echo $eth0 | cut -f3 -d' ' | cut -f2 -d:)
netmask=$(echo $eth0 | cut -f 4 -d' ' | cut -f2 -d:)
gw=$(route -n | grep -e '^0.0.0.0' | unexpand -a | cut -f3)
nservers=$(grep -e '^nameserver' /etc/resolv.conf | cut -f2 -d' ')
sdomains=$(grep -e '^search' /etc/resolv.conf | cut -f2- -d' ')
echo 'modules=( "ifconfig" )' > /mnt/gentoo/etc/conf.d/net
echo "config_eth0=( \"${ip} netmask ${netmask} broadcast ${broadcast}\" )" >> /mnt/gentoo/etc/conf.d/net
echo "routes_eth0=( \"default via ${gw}\" )" >> /mnt/gentoo/etc/conf.d/net
echo "dns_domain_eth0=\"$(hostname -d)\"" >> /mnt/gentoo/etc/conf.d/net
echo "dns_servers_eth0=\"${nservers}\"" >> /mnt/gentoo/etc/conf.d/net
if [ -n "$sdomains" ] ; then echo "dns_search_eth0=\"${sdomains}\"" ; fi >> /mnt/gentoo/etc/conf.d/net

После этого /mnt/gentoo/etc/conf.d/net должно выглядеть так, с правильными значениями, конечно.

modules=( "ifconfig" )
config_eth0=( "192.168.1.5 netmask 255.255.255.0 broadcast 192.168.1.255" )
routes_eth0=( "default via 192.168.1.1" )
dns_domain_eth0="example.com"
dns_servers_eth0="192.168.1.1"

Использование этого формата заставит скрипт инициализации сети Gentoo использовать данные в нем для записи нового /etc/resolv.conf, а также для настройки самой сети, так что в будущем будет только один файл, который нужно поддерживать в актуальном состоянии. (Мы скопировали /etc/resolv.conf системы установки чисто для использования в среде chroot, пока не загрузим установленную систему.)

Сделав это, мы можем завершить подготовку к chroot и войти.

3.5 Необязательно: Временная установка vim в среду Stage3

Система Gentoo Stage 3 не имеет vi. Вместо этого по умолчанию используется включенный редактор nano. Если вы действительно предпочитаете иметь vi, сделайте следующее сейчас:

VIM=$(which vim)   
VIMDIR=$(dirname ${VIM})   
cp --dereference ${VIM} /mnt/gentoo${VIM}   
ln --symbolic ${VIM} /mnt/gentoo$(dirname ${VIM})/vi

(Библиотеки, от которых он зависит, уже на месте.)

Тем не менее, дальнейшие инструкции будут предполагать, что вы не сделали этого. Если вы сделали, вы достаточно умны, чтобы заменить команду, которую хотите.

3.6 Вход в chroot среду Stage3

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"

Теперь, когда мы в chroot среде, мы собираемся обновить portage до текущего состояния.

emerge --sync

Если вас беспокоит использование консоли машины, вы можете установить раскладку клавиатуры в /etc/conf.d/keymaps. В противном случае вы можете оставить как есть.

nano --nowrap /etc/conf.d/keymaps

Теперь мы устанавливаем наш часовой пояс. Ознакомьтесь с содержимым /usr/share/zoneinfo, чтобы увидеть, какой часовой пояс использовать. (Мы не будем изменять USE или профиль make по умолчанию.) Например,

cp /usr/share/zoneinfo/Europe/London /etc/localtime

Установите часовой пояс в /etc/conf.d/clock. Просто установите переменную TIMEZONE в тот файл, который вы скопировали в /etc/localtime ранее. Например,

nano --nowrap /etc/conf.d/clock
TIMEZONE="Europe/London"

(Не забудьте раскомментировать строку.)

Вам может потребоваться установить CLOCK на local. Обычно это не требуется, но это обычно необходимо, если вы устанавливаете в VMWare и, возможно, в других виртуальных средах.

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

emerge gentoo-sources

Мы просто собираемся сделать установку genkernel, чтобы установить стандартное ядро Gentoo. Это отчасти для простоты этого руководства. Если вы уверены в сборке собственных ядер, сделайте это, следуя примечаниям справочника Gentoo в главе 7.

emerge genkernel   
zcat /proc/config.gz > /usr/share/genkernel/x86/kernel-config-2.6

Вторая команда копирует конфигурацию ядра установочного диска, чтобы стать нашим текущим ядром. Если мы дошли до этого момента, это хорошая ставка, что эта конфигурация ядра работает для нас.

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

nano --nowrap /usr/share/genkernel/x86/kernel-config-2.6

Найдите # CONFIG QUOTA is not set и измените его на следующее (добавив две последующие строки):

CONFIG_QUOTA=y 
# CONFIG_QFMT_V1 is not set 
CONFIG_QFMT_V2=y 

Затем мы можем продолжить:

genkernel all

Это может занять некоторое время. Он строит поддержку для всего. Я говорил, что это будет универсальная сборка Gentoo.

Примечание: если вы устанавливаете на диск SCSI или SATA, лучше на этом этапе сделать,

genkernel --menuconfig all

и выбрать соответствующий низкоуровневый драйвер для интерфейса SCSI или SATA, к которому подключен ваш системный диск, чтобы он был скомпилирован в монолитное ядро, а не как модуль. Я полагаю, это должно работать, если вы этого не сделаете (загрузка модуля драйвера из initrd так же, как и установочный диск), но в настоящее время это, похоже, не так.

3.8 Настройка файловых систем

nano --nowrap /etc/fstab

Предполагая, что вы находитесь на той же схеме разбиения, что и я, т.е.: следуя этому руководству, замените /dev/BOOT на /dev/hda1; /dev/ROOT на /dev/hda3; и /dev/SWAP на /dev/hda2. Измененный файл должен выглядеть так:

[...]
#                                           
# ЗАМЕТКА: Если ваш BOOT раздел является ReiserFS, добавьте опцию notail к opts.
/dev/hda1               /boot           ext2            noauto,noatime  1 2
/dev/hda3               /               ext3            noatime         0 1
/dev/hda2               none            swap            sw              0 0
/dev/cdrom              /mnt/cdrom      audo            noauto,ro       0 0
#/dev/fd0               /mnt/floppy     auto            noauto          0 0
[...]

3.9 Запуск сети при загрузке.

rc-update add net.eth0 default   
rc-update add hostname default

3.10 Установка системных служб

emerge syslog-ng vixie-cron   
rc-update add syslog-ng default   
rc-update add vixie-cron default

3.11 Загрузчик

emerge bootloader

Это установит загрузчик по умолчанию для вашей архитектуры. Следующее предполагает, что вы находитесь на x86 или amd64 и что этот загрузчик - grub. Поскольку это ультра-универсальная установка ПК, мы собираемся обмануть и просто записать его. Если остальная часть этого руководства подходит для вашей системы, то и это должно; в противном случае обратитесь к справочнику Gentoo, глава 10.

echo -e "default 0\ntimeout 5\n\ntitle=GentooLinux\nroot (hd0,0)" > /boot/grub/grub.conf   
echo "kernel `ls /boot/kernel*` root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/hda3 udev" >> /boot/grub/grub.conf   
echo "initrd `ls /boot/initramfs*`" >> /boot/grub/grub.conf   
grep --invert-match rootfs /proc/mounts > /etc/mtab   
grub-install --no-floppy /dev/hda

3.12 Завершение и перезагрузка

rc-update add sshd default   
passwd

И задайте пароль root. Таким образом, мы сможем войти позже, не заходя в консоль. Предполагая, что все сработало.

Выйдите из chroot и перезагрузите.

exit   
cd   
umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo   
reboot

Конечно, вам может потребоваться удалить CD из привода. Это будет зависеть от вашего порядка загрузки; но вы можете избавиться от него; он больше не нужен.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.