Предупреждение : Этот документ находится в разработке, и его пока не следует считать официальным.

Описание альтернативных способов установки Gentoo Linux

Gerald Normandin Jr.  участник
Travis Tilley  участник
Oleg Raisky  участник
Alex Garbutt  участник
Alexandre Georges  участник
Magnus Backanda  участник
Faust A. Tanasescu  участник
Daniel Ahlberg  участник
Sven Vermeulen  редактор
Ken Nowack  рецензент
Tiemo Kieft  редактор
Benny Chuang  редактор
Jonathan Smith  редактор
Александр Д. Баракин  переводчик

Обновлено 7 августа 2005
Исходный документ обновлен 10 сентября 2008

1.  Об этом документе

Если у вас не работает стандартный метод установки boot-from-CD (или он вас не устраивает), вам сюда. Этот документ описывает альтернативные приемы установки Gentoo Linux для тех, кто в них нуждается. Или, если хотите, это место сбора всех "оригинальных" способов установки. Если у вас один такой завалялся, или вы откопали новую прикольную методу, не стесняйтесь, написать запрос в Bugzilla.

2.  Загрузка с установочного диска при помощи Smart BootManager

Скачайте Smart BootManager с http://btmgr.sourceforge.net/download.html. Доступны как исходники, так и бинарники для Linux, не говоря уже про виндовский .exe и множество языковых пакетов. Все-таки, в настоящее время, бинарный формат предпочтительнее, поскольку исходники могут не откомпилироваться современными версиями NASM.

Скомпилируйте пакет или возьмите уже готовый. Ниже я расскажу о некоторых полезных опциях, доступных при создании загрузочной дискеты.

Листинг 2.1: Опции Smart BootManager

sbminst [-t theme] [-d drv] [-b backup_file] [-u backup_file]

   -t тема      выбор используемой темы, где тема должна быть:
                   us = English тема       de = German тема 
                   hu = Hungarian тема     zh = Chinese тема 
                   ru = Russian тема       cz = Czech тема
                   es = Spanish тема       fr = French тема 
                   pt = Portuguese тема 

                 
   -d диск      выбор диска, куда вы собираетесь инсталлировать Smart BootManager;
                 для Linux:
                   /dev/fd0 первый floppy-диск, 
                   /dev/hda первый IDE-диск.
                   /dev/sda первый SCSI-диск.
                 для DOS:
                    0   первый floppy-диск
                    128 первый жесткий диск;

   -c           отключить загрузку с CD-ROM;

   -b backup_file сохранить (для будущей деинсталляции) данные, которые будут
                  перезаписаны;

   -u backup_file деинсталлировать Smart BootManager, нельзя использовать
                  с другими ключами;

   -y             никаких вопросов и предупреждений.

Листинг 2.2: Использование sbminst для создания загрузочной дискеты

# sbminst -t us  -d /dev/fd0

Примечание: Замените fd0 на имя вашего floppy-дисковода (если у вас он называется по-другому).

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

Вас поприветствует Smart BootManager. Выберите CD-ROM и нажмите ENTER для загрузки установочного диска. Если все прошло удачно, следуйте стандартной процедуре установки.

Больше информации по Smart BootManager вы найдете на http://btmgr.sourceforge.net/

3.  Установка при помощи Knoppix

Примечание: Knoppix доступен только для пользователей x86.

Загрузившись с Knoppix LiveCD, вы получаете полностью работоспособную систему для компиляции Gentoo. Во время сборки Tux Racer скрасит ваше ожидание, а для работы вы можете пользоваться OpenOffice.

Предупреждение: Помните, что если вы что-либо сохраните в домашний каталог Knoppix, ожидая установки своей системы Gentoo, вы потеряете это после перезагрузки в Gentoo. Убедитесь, что сохраняете важные файлы на жесткий диск или на другой компьютер!

Загрузитесь с Knoppix CD. Если у вас Knoppix 3.6-3.8.2, потребуется указать knoppix26 в качестве параметра ядра, чтобы загрузить ядро 2.6. Если вы пропустите этот шаг, то при chroot вы получите сообщение об ошибке, что ваше ядро слишком старое. Однако, если у вас Knoppix 3.9+, этот шаг не потребуется, так как ядро 2.6 выбрано по умолчанию.

По умолчанию вы попадаете на рабочий стол KDE. Откройте консоль и введите su -, чтобы была возможность изменить пароль. Это позволяет задать пароль для root в Knoppix. Теперь, при желании, можете настроить sshd для удаленного входа в систему.

Листинг 3.1: Создание точки монтирования /mnt/gentoo

# mkdir /mnt/gentoo

Далее вы можете придерживаться стандартного руководства по установке, начиная с части 4. Кроме монтирования /proc. Тут вам надо поступить по-другому:

Листинг 3.2: Монтирование с привязкой псевдо-ФС proc

# mount -o bind /proc /mnt/gentoo/proc

Также знайте, что некоторые возможности (FEATURES) портежей не будут работать в knoppix. Будьте особенно осторожны с userpriv и usersandbox. Если вы обнаружили, что начали получать ошибки, будет разумным отключить все или некоторые необязательные возможности.

4.  Установка со Stage 1 без доступа в сеть

Создайте установочный компакт-диск из iso-образа.

Возьмите последний snapshot портежей из http://distro.ibiblio.org/pub/linux/distributions/gentoo/snapshots/ (или с любимого зеркала). Запишите этот tarball на существующий раздел в компьютере, где будет проходить установка, или прожгите его на CD.

Следуйте инструкции из Gentoo Install Doc вплоть до chroot /mnt/gentoo в главе 6. Если у вас в наличии только один привод CD-ROM, не забудьте при загрузке ввести опцию docache чтобы иметь возможность размонтировать установочный компакт-диск и смонтировать CD со snapshot-ом портежей.

Открыв новую консоль (Alt-F2), а в ней руководство по установке, мы можем следовать ему вплоть до запуска скрипта bootstrap.sh.

Предупреждение: В старых выпусках установочного компакт-диска требуется изменить пароль командой passwd прежде чем логиниться с другой консоли.

Возвращаемся к первой консоли (Alt-F1, without chroot) и монтируем второй CD в /mnt/gentoo/mnt/cdrom2. Копируем portage tarball с cdrom2 и распаковываем в /mnt/gentoo/usr.

Листинг 4.1: Монтирование snapshot cd

# umount /mnt/cdrom
# mkdir /mnt/gentoo/mnt/cdrom2
# mount /dev/cdroms/cdrom0 /mnt/gentoo/mnt/cdrom2
# cp /mnt/gentoo/mnt/cdrom2/portage-$date.tar.bz2 /mnt/gentoo/usr
# cd /mnt/gentoo/usr
# tar -xvjpf portage-$date.tar.bz2

Снова переключаемся на вторую консоль. Если сейчас попытаться запустить bootstrap.sh, ничего не выйдет, так как он не сможет закачать ни одного файла. Мы получим эти файлы из другого места и разместим их в /usr/portage/distfiles (в консоли F2).

Нам необходим список пакетов Stage1: glibc, baselayout, texinfo, gettext, zlib, binutils, gcc, ncurses плюс их зависимости.

Примечание: Не забываете, что вам нужны версии пакетов, синхронизированные с вашим деревом портежей.

Листинг 4.2: Получение списка для скачивания

(Не забывайте 2 перед >)
# emerge -fp glibc baselayout texinfo gettext zlib binutils gcc ncurses 2> stage1.list
# mount -t vfat /dev/fd0 /mnt/floppy
# cp /mnt/gentoo/stage1.list /mnt/floppy
# umount /mnt/floppy

Вставьте дискету в компьютер с хорошим каналом. Если заглянуть в файл stage1.list, можно увидеть, что в нем перечисляются несколько ссылок на каждую загрузку. К сожалению, это не совсем то, что нам надо. Сначала список надо почистить от лишнего:

Листинг 4.3: Stripping URLs

(Этот скрипт привязан к формату вывода emerge, который может измениться
 без предварительного предупреждения - используйте с осторожностью!)
# cut -f 1 -d ' ' stage1.list > stage1.download

Теперь используйте wget для загрузки списка исходников:

Листинг 4.4: Загружаем пакеты с помощью wget

# wget -N -i stage1.download

Получив все файлы, переносим их в наш компьютер в /mnt/gentoo/usr/portage/distfiles. Вот теперь можно запускать bootstrap.sh. Повторяем ту же операцию с wget для stage2 и 3.

5.  Бездисковая установка с загрузкой через PXE

Что необходимо

Нужна сетевая карта на бездисковом клиенте, которая способна загружаться по протоколу PXE (многие карточки 3com). BIOS тоже должен поддерживать такой способ загрузки.

Настройки на стороне сервера

Создание папок: Во-первых, следует создать папки, в которых будет размещена ваша бездисковая система. Начнем с /diskless, в ней будет находиться по отдельной папке для каждого бездискового клиента. Дальше мы рассмотрим работу с клиентом 'eta'.

Листинг 5.1: создание папок

# mkdir /diskless
# mkdir /diskless/eta
# mkdir /diskless/eta/boot

Настройка DHCP и TFTP: Клиент получает загрузочную информацию, используя DHCP, затем загружает необходимые файлы с помощью TFTP. Собираем DHCP командой emerge и настраиваем его для наших нужд. Добавляем следующее в /etc/dhcp/dhcpd.conf:

Примечание: Мы получим статический IP для клиента и путь к загрузочному образу PXE, здесь pxegrub. Вам необходимо подставить соответствующий MAC-адрес сетевой карты вашего клиента и определиться с директорией, где будут храниться клиентские файлы.

Для DHCPd, запустите emerge dhcp (или любой другой сервер DHCP на свое усмотрение). Убедитесь, что в /etc/conf.d/dhcp выбран верный интерфейс.

Листинг 5.2: dhcp.conf

option option-150 code 150 = text ;
ddns-update-style none ;
host eta {
hardware ethernet 00:00:00:00:00:00;
fixed-address ip.add.re.ss;
option option-150 "/eta/boot/grub.lst";
filename "/eta/boot/pxegrub";
}

Для установки TFTP, соберите app-admin/tftp-hpa. Впишите следующее в /etc/conf.d/in.tftpd:

Листинг 5.3: in.tftpd

INTFTPD_PATH="/diskless"
INTFTPD_USER="nobody"
INTFTPD_OPTS="-u ${INTFTPD_USER} -l -vvvvvv -p -c -s ${INTFTPD_PATH}"

Настройка GRUB: Я использую GRUB для PXE-загрузки. Чтобы можно было использовать PXE, вы должны самостоятельно скомпилировать GRUB ... ведь это просто. Во-первых, скачайте самую свежую версию исходников GRUB (emerge -f grub поместит tarball в /usr/portage/distfiles). Скопируйте tarball в /diskless и скомпилируйте GRUB, чтобы получить доступный для pxe бинарник. Готовый бинарник копируем в boot-папку бездискового клиента. И редактируем файл grub.lst:

Листинг 5.4: установка grub

# tar zxvf grub-0.92.tar.gz
# cd grub-0.92
# ./configure --help
(Среди опций вы увидите список поддерживаемых драйверов сетевых интерфейсов.)
(Выберите драйвер, совместимый с вашей картой. Здесь он фигурирует как $nic)
# ./configure --enable-diskless --enable-$nic
# make
# cd stage2
# cp pxegrub /diskless/eta/boot/pxegrub
# nano -w /diskless/eta/boot/grub.lst

Листинг 5.5: grub.lst

default 0
timeout 30

title=Diskless Gentoo
root (nd)
kernel /eta/bzImage ip=dhcp root=/dev/nfs nfsroot=ip.add.re.ss:/diskless/eta

(В опции nfsroot указывается IP адрес сервера и путь к директории,)
(в которой на сервере лежат файлы нашего бездискового клиента.)

Настройка NFS: NFS легко сконфигурировать. Все что нам надо - это добавить одну строку в конфигурационный файл /etc/exports:

Листинг 5.6: /etc/exports

# nano -w /etc/exports
# /etc/exports: NFS file systems being exported.  See exports(5).
/diskless/eta eta(rw,sync,no_root_squash)

Обновление hosts: Еще одно важное дело - изменение файла /etc/hosts.

Листинг 5.7: /etc/hosts

127.0.0.1 localhost

192.168.1.10 eta.example.com eta
192.168.1.20 sigma.example.com sigma

Создание системы на сервере

Вы можете захотеть перезагрузить сервер с установочного диска Gentoo, хотя точно так же можете немедленно продолжить, если знать, как выполнять инструкции по установке Gentoo на установленной системе. Следуйте стандартной процедуре установки, как описано в Gentoo Install Howto, НО с учетом следующих отличий: Для монтирования файловой системы сделайте следующее (здесь hdaX - раздел, в котором создана папка /diskless). Вам не надо монтировать другие разделы, так как все файлы располагаются в /diskless/eta.

Листинг 5.8: монтирование файловой системы

# mount /dev/hdaX /mnt/gentoo

Stage tarballs и chroot: Этот пример использует tarball stage3. Смонтируйте /proc в вашу бездисковую директорию и выполните chroot в нее(директорию) для продолжения установки. Дальше - по инструкции вплоть до конфигурации ядра.

Предупреждение: Будьте очень внимательны при разархивировании stage tarball. Не распакуйте его в существующую систему.

Листинг 5.9: извлечение stage tarball

# cd /mnt/gentoo/diskless/eta/
# tar -xvjpf  /mnt/cdrom/gentoo/stage3-*.tar.bz2
# mount -t proc /proc /mnt/gentoo/diskless/eta/proc
# cp /etc/resolv.conf /mnt/gentoo/diskless/eta/etc/resolv.conf
# chroot /mnt/gentoo/diskless/eta/ /bin/bash
# env-update
# source /etc/profile

Конфигурация ядра: При выполнении make menuconfig во время конфигурации ядра, не забудьте сделать доступными следующие опции (помимо рекомендуемых в руководстве по установке):

Листинг 5.10: опции menuconfig

- Your network card device support
(в ядре, *не* как модуль!)

- Under "Networking options" :

[*] TCP/IP networking
[*] IP: kernel level autoconfiguration
[*] IP: DHCP support
[*] IP: BOOTP support


- Under "File systems --> Network File Systems" :

<*> NFS file system support
[*] Provide NFSv3 client support
[*] Root file system on NFS

Сохраните ядро в / своей изолированной среды (не в /boot), в соответствии с настройкой pxegrub, определенной ранее. Затем настройте /etc/fstab своего бездискового клиента.

Листинг 5.11: /etc/fstab

# nano -w /etc/fstab
/dev/cdroms/cdrom0 /mnt/cdrom iso9660 noauto,ro 0 0
proc /proc proc defaults 0 0
tmpfs /dev/shm tmpfs nodev,nosuid,noexec 0 0

Вам также потребуется предотвратить запуск на клиенте проверки файловой системы:

Листинг 5.12: Исключение запуска проверки файловой системы на клиенте

# touch /fastboot
# echo "touch /fastboot" >> /etc/conf.d/local.start

Установите nfs-utils, так как ваш клиент будет сильно зависеть от них:

Листинг 5.13: Установка nfs-utils

# emerge nfs-utils

Загрузчик. Не устанавливайте других загрузчиков, так как один у нас уже есть - pxegrub. Просто завершаете установку и перезагружаете сервер. Запустите службы, необходимые для загрузки новоиспеченного клиента: DHCP, TFTPD и NFS.

Листинг 5.14: Запуск служб

# /etc/init.d/dhcp start
# /etc/init.d/in.tftpd start
# /etc/init.d/nfs start

Загрузка нового клиента

Чтобы клиент загрузился, надо настроить bios и сетевую карту для использования PXE как первого способа загрузки - до CD-ROM или floppy. Помощником вам будет документация к оборудованию или website производителя. Сетевая карта должна получить IP адрес от DHCP и загрузить PXE-образ GRUB при помощи TFTP. Дальше вы увидите симпатичное черно-белое меню GRUB, в котором можно выбрать ядро для загрузки, а нажав Enter, и загрузить его. Если все в порядке, ядро примонтирует корневую файловую систему, используя NFS, и выведет на терминал приглашение для входа в систему. Вот и все.

6.  Установка Gentoo из существующей Linux-системы

Что необходимо

Для установки Gentoo из существующей системы Linux вам должна быть доступна команда chroot, а также копия установочного tarball-а Gentoo, либо его ISO-образ. Не помешает доступ в сеть, если вы не хотите ограничиваться тем, что есть в вашем tarball-е. (к слову, tarball - это просто файл, заканчивающийся на .tbz иди .tar.gz). Автор (ориг.текста) использовал RedHat Linux 7.3 как "базовую" ОС, хотя это не так уж важно. Итак, приступим!

Обзор

Сперва надо отвести раздел для Gentoo, изменив размер существующего раздела Linux, смонтировать его, разархивировать tarball, chroot внутрь нашей псевдо-системы, и начинаем строительство. После настройки загрузчика немного поработаем напильником, просто для того, чтобы система была способна загрузиться самостоятельно, перезагружаемся и пользуемся Gentoo.

Как отвести место для Gentoo?

Корневой раздел - это файловая система, примонтированная к /. Запущенная команда mount показывает, о чем я веду речь. Еще мы можем выполнить df (disk free), чтобы посмотреть, сколько свободного места у нас есть. Прошу заметить - совсем не обязательно кромсать ваш root раздел! Вы можете отрезать в любом другом месте, доступном вашей программе редактирования разделов жесткого диска, но мы поговорим об этом чуть позже.

Листинг 6.1: Информация о файловых системах

# mount
/dev/hdb2 on / type ext3 (rw) 
none on /proc type proc (rw) 
none on /dev/pts type devpts (rw,gid=5,mode=620) 
none on /dev/shm type tmpfs (rw,nodev,nosuid,noexec)
# df -h 
Filesystem           Size Used Avail Use% Mounted on 
/dev/hdb2            4.0G 1.9G  2.4G  82% /
none                 38M    0   38M   0% /dev/shm 

Как видите, раздел, смонтированный как /, носит имя /dev/hdb2 и на нем еще свободно 2.4 гигабайта. В моем случае, думаю, 400 МБ свободного пространства хватит с головой, следовательно, под Gentoo отводим 2 ГБ. Совсем неплохо, учитывая, что большинству пользователей хватит и одного гигабайта. Приступим!

Сборка parted для переразбивки разделов

Parted - утилита, поддерживаемая GNU foundation, старым, респектабельным, безразмерным проектом, софтом которого мы в данный момент и собираемся воспользоваться. Всего одним инструментом, который вполне нам подходит. Называется он parted, partition editor, загрузить его можно из http://www.gnu.org/software/parted/

Примечание: Конечно, существуют и другие инструменты для работы с разделами, но автор не уверен/не интересуется, сможет ли PartitionMagic(tm) или любая другая программа сделать то, что нам нужно. Проверить - это забота читателя.

Взгляните на ту страницу руководства parted, где речь идет о типе файловой системы, размер которой вы собираетесь изменять, и узнайте, сможет ли parted это сделать. Если нет, что ж, вам не повезло. Придется убить какой-нибудь раздел и создать по-новому, чтобы было место для Gentoo. Вперед, качаем программу, устанавливаем. Возникает проблема. Мы хотим изменить размер корневого раздела, следовательно нам нужно загрузить с дискеты минимальную linux-систему и использовать предварительно скомпилированный parted для редактирования /. Если в вашем случае можно отмонтировать выбранный раздел, оставаясь в Linux, вам везет и нет необходимости делать то, что описано ниже. Просто соберите parted и запустите его на разделе, который хотите урезать. А вот то, что я сделал в своей системе.

Важно: Убедитесь, что действия, которые вы собираетесь проделать с разделом, поддерживаются parted!

Скачайте загрузочный/корневой диск mininux (бесплатный мини-дистрибутив Linux c ядром 2.4 на дискете) с http://mininux.free.fr/uk/, создайте дискету, как описано в прилагающейся документации, вставьте еще одну чистую дискету в дисковод и перейдите к следующему шагу.

Примечание: Опять замечу, что Linux - синоним понятия "Этот путь не единственный". Наша цель - запустить parted на отмонтированном разделе жесткого диска и это можно сделать не только описанным способом. Вы можете использовать любой другой набор boot/root дискет, не только mininux. Вы можете вообще не выполнять данный шаг, главное, что нужно - отмонтировать файловую систему, которую вы собираетесь использовать под Gentoo, и перекроить ее, используя parted.

Листинг 6.2: Создание вспомогательной дискеты

# mkfs.minix /dev/fd0
480 inodes
1440 blocks
Firstdatazone=19 (19)
Zonesize=1024
Maxsize=268966912

Продолжим со сборкой parted. Если он еще не закачан и не распакован, сделайте это. А затем перейдите в каталог, куда вы его распаковали. И здесь выполните следующий набор команд для сборки утилиты и записи ее на дискету.

Листинг 6.3: Подготовка вспомогательной дискеты

#  mkdir /floppy; mount -t minix /dev/fd0 /floppy && 
export CFLAGS="-O3 -pipe -fomit-frame-pointer -static" && ./configure 
&& make && cp parted/parted /floppy && umount /floppy 

Поздравляю, вы готовы перезагрузиться и изменять выбранный раздел. Только делайте это после хотя бы беглого просмотра документации к parted на GNU website. Наберитесь терпения - изменение размера может занять больше получаса на больших дисках. Загрузитесь с дискеты mininux, а после этого замените загрузочную дискету на вспомогательную, которую мы только что создали. Введите mount /dev/fd0 /floppy и parted будет доступен в папке /floppy. Нам туда. Запускаете parted и перекраиваете нужный раздел жесткого диска. Когда этот бесконечный процесс наконец завершится, все будет готово для того, чтобы получить истинное наслаждение, устанавливая Gentoo. Диск, с которым мы работаем - это тот, на котором находится раздел, размер которого мы меняем. К примеру, если мы хотим изменить /dev/hda3, то диск, соответственно, будет называться /dev/hda.

Листинг 6.4: Команды, которые следует выполнить, загрузившись с mininux

# mount /dev/fd0 /floppy 
# cd /floppy; ./parted [диск, с которым мы работаем]
(parted)  print 
Disk geometry for /dev/hdb: 0.000-9787.148 megabytes
Disk label type: msdos
Minor    Start       End     Type      Filesystem  Flags
1          0.031   2953.125  primary   ntfs        
3       2953.125   3133.265  primary   linux-swap  
2       3133.266   5633.085  primary   ext3        
4       5633.086   9787.148  extended              
5       5633.117   6633.210  logical               
6       6633.242   9787.148  logical   ext3        
(parted)  help resize 
  resize MINOR START END        resize filesystem on partition MINOR

        MINOR is the partition number used by Linux.  On msdos disk labels, the
        primary partitions number from 1-4, and logical partitions are 5
        onwards.
        START and END are in megabytes
(parted)  resize 2 3133.266 4000.000 

Важно: Наберитесь терпения! Компьютер работает! Посмотрите на индикатор обращения к жесткому диску (находится на корпусе), чтобы убедиться, что это так. Процесс может занять от 2 до 30 минут.

Когда процесс завершится, перезагрузитесь в вашу старую linux-систему. После этого откройте документ Настольная книга Gentoo: подготовка дисков и следуйте инструкциям. Дойдя до chroot, используйте следующую команду чтобы очистить переменные окружения:

Листинг 6.5: Обновление среды при chroot

# env -i HOME=$HOME TERM=$TERM chroot /mnt/gentoo /bin/bash
# /usr/sbin/env-update
# source /etc/profile

Удачи!