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

Ссылка на оригинал: http://www.gentoo.org/doc/ru/altinstall.xml

С версии: 1.0



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


Удачи!