Руководство по альтернативным методам установки Gentoo Linux.
1. Об этом документе
Если у Вас не работает стандартный метод установки boot-from-CD
(или он Вас не устраивает), Вам сюда. Этот документ описывает
альтернативные приемы установки Gentoo Linux для тех, кто в них
нуждается. Или, если хотите, это место сбора всех "оригинальных"
способов установки. Если у Вас один такой завалялся, или Вы откопали
новую прикольную методу, не стесняйтесь, пишите мне
сюда
2. Загрузка с LiveCD при помощи Smart BootManager
Скачайте Smart BootManager http://btmgr.sourceforge.net/index.php3?body=download.html. Доступны как исходники, так и бинарники для Linux, не говоря уже про виндовский .exe и множество языковых пакетов. Все-таки, в настоящее время, бинарный формат предпочтительнее, поскольку исходники могут не откомпилироваться современными версиями NASM.
Скомпилируйте пакет или возьмите уже готовый. Ниже я расскажу о некоторых полезных опциях, доступных при создании загрузочной дискеты.
Code Listing 2.1: Опции Smart BootManager |
sbminst [-t тема] [-d диск] [-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 никаких вопросов и предупреждений.
|
Code Listing 2.2: Использование sbminst для создания загрузочной дискеты |
# sbminst -t us -d /dev/fd0
|
Note: Замените fd0 на имя Вашего floppy-дисковода (если у Вас он называется по-другому). |
Теперь просто вставьте дискету в дисковод компьютера, на котором Вы хотите запустить LiveCD, и загрузитесь с нее.
Вас поприветствует Smart BootManager. Выберите CD-ROM и нажмите ENTER для загрузки LiveCD. Если все прошло удачно, следуйте стандартной процедуре установки.
Больше информации по Smart BootManager Вы найдете на http://btmgr.sourceforge.net/
3. Установка при помощи Knoppix
Загрузившись с Knoppix LiveCD, Вы получаете полностью работоспособную linux-систему для компиляции Gentoo. Во время сборки Tux Racer скрасит Ваше ожидание.
Загрузитесь с Knoppix CD. Knoppix очень даже неплохо определит состав оборудования. К тому же, Вы можете добавить и некоторые загрузочные параметры.
По умолчанию Вы попадаете на рабочий стол KDE 3.0. Первое, что я делаю - это открываю консоль и набираю sudo passwd root. Это позволяет задать пароль для root в Knoppix.
Дальше командой su я переключаюсь на root-а и ввожу usermod -d /root -m root. То есть, делаю /root домашним каталогом (как принято в Gentoo) вместо /home/root (как в Knoppix). Если этого не сделать, при сборке посыпятся ошибки что-то вроде "/home/root: not found".
Я ввожу exit и снова su. Я опять root, но с учетом измений, проделанных командой usermod. Теперь создаю точку монтирования /mnt/gentoo, используя mkdir:
Code Listing 3.1: Создание точки монтирования /mnt/gentoo |
# mkdir /mnt/gentoo
|
Далее Вы можете придерживаться стандартного руководства по установке, начиная с
part 4. Кроме монтирования /proc. Тут Вам надо поступить по-другому:
Code Listing 3.2: Bind-mounting the proc pseudo filesystem |
# mount -o bind /proc /mnt/gentoo/proc
|
4. Установка со Stage 1 без доступа в сеть
Создайте LiveCD из iso-образа.
Возьмите последний snapshot портежей из http://distro.ibiblio.org/pub/linux/distributions/gentoo/snapshots/ (или с любимого зеркала). Запишите этот tarball на существующий раздел в компьютере, где будет проходить установка, или прожгите его на CD.
Следуйте инструкции из Gentoo Install Doc вплоть до chroot /mnt/gentoo на шаге 8 (Step 8). Если у Вас в наличии только один привод CD-ROM, не забудьте при загрузке ввести опцию cdcache чтобы иметь возможность размонтировать LiveCD и смонтировать CD со snapshot-ом портежей.
Открыв новую консоль (Alt-F2), а в ней руководство по установке, мы можем следовать ему вплоть до запуска скрипта bootstrap.sh.
Warning: В старых релизах livecd требуется изменить пароль командой passwd прежде чем логиниться с другой консоли. |
Возвращаемся к первой консоли (Alt-F1, without chroot) и монтируем второй CD в /mnt/gentoo/mnt/cdrom2. Копируем portage tarball с cdrom2 и распаковываем в /mnt/gentoo/usr/portage.
Code Listing 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/portage
# cd /mnt/gentoo/usr/portage
# tar xvjpf portage-$date.tar.bz2
|
Снова переключаемся на вторую консоль. Если сейчас попытаться запустить bootstrap.sh, ничего не выйдет, так как он не сможет закачать ни одного файла. Мы получим эти файлы из другого места и разместим их в /usr/portage/distfiles (в консоли F2).
Нам необходим список пакетов Stage1: glibc, baselayout, texinfo, gettext, zlib, binutils, gcc, ncurses плюс их зависимости.
Note: Не забываете, что Вам нужны версии пакетов, синхронизированные с Вашим деревом портежей. |
Code Listing 4.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, можно увидеть, что в нем перечисляются несколько
ссылок на каждую загрузку. К сожалению, это не совсем то, что нам надо.
Сначала список надо почистить от лишнего:
Code Listing 4.3: Stripping URLs |
# cut -f 1 -d ' ' stage1.list > stage1.download
|
Теперь используйте wget для загрузки списка исходников:
Code Listing 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'.
Code Listing 5.1: создание папок |
# mkdir /diskless
# mkdir /diskless/eta
# mkdir /diskless/eta/boot
|
Настройка DHCP и TFTP: Клиент получает загрузочную информацию, используя DHCP, затем загружает необходимые файлы с помощью TFTP. Собираем DHCP командой emerge и настраиваем его для наших нужд. Добавляем следующее в /etc/dhcp/dhcpd.conf:
Note: Мы получим статический IP для клиента и путь к загрузочному образу PXE, здесь pxegrub. Вам необходимо подставить соответствующий MAC-адрес сетевой карты Вашего клиента и определиться с директорией, где будут храниться клиентские файлы. |
Code Listing 5.2: dhcp.conf |
option option-150 code 150 = text ;
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 :
Code Listing 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:
Code Listing 5.4: установка grub |
# tar zxvf grub-0.92.tar.gz
# cd grub-0.92
# ./configure --help
# ./configure --enable-diskless --enable-$nic
# make
# cd stage2
# cp pxegrub /diskless/eta/boot/pxegrub
# nano -w /diskless/eta/boot/grub.lst
|
Code Listing 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
|
Настройка NFS: NFS легко сконфигурировать. Все что нам надо - это добавить одну строку в конфигурационный файл /etc/exports :
Code Listing 5.6: /etc/exports |
# nano -w /etc/exports
NFS file systems being exported. See exports(5).
/diskless/eta eta(rw,sync,no_root_squash)
|
Обновление hosts: Еще одно важное дело - изменение файла /etc/hosts.
Code Listing 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 LiveCD. Следуйте стандартной процедуре установки, как описано в Gentoo Install Howto НО! с некоторыми отличиями. Для монтирования файловой системы сделайте следующее (здесь hdaX - раздел, в котором создана папка /diskless). Вам не надо монтировать другие разделы, так как все файлы располагаются в /diskless/eta.
Code Listing 5.8: монтирование файловой системы |
# mount /dev/hdaX /mnt/gentoo
|
Stage tarballs и chroot: Этот пример использует tarball stage3. Смонтируйте /proc в Вашу бездисковую директорию и выполните chroot в нее(директорию) для продолжения установки. Дальше - по инструкции вплоть до конфигурации ядра.
Warning: Будьте очень внимательны при разархивировании stage tarball. Не распакуйте
его в существующую систему. |
Code Listing 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 во время конфигурации ядра, не забудьте сделать доступными следующие опции (помимо рекомендуемых в руководстве по установке):
Code Listing 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
|
Теперь время настроить /etc/fstab нашего бездискового клиента.
Code Listing 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 defaults 0 0
|
Загрузчик. Не устанавливайте других загрузчиков, так как один у нас уже есть - pxegrub. Просто завершаете установку и перезагружаете сервер. Запустите службы, необходимые для загрузки новоиспеченного клиента: DHCP, TFTPD и NFS.
Code Listing 5.12: Запуск служб |
# /etc/init.d/dhcp start
# /etc/init.d/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 раздел! Вы можете отрезать в любом другом месте, доступном Вашей программе редактирования разделов жесткого диска, но мы поговорим об этом чуть позже.
Code Listing 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)
# 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/
Note: Конечно, существуют и другие инструменты для работы с разделами, но
автор не уверен/не интересуется, сможет ли PartitionMagic(tm) или любая
другая программа сделать то, что нам нужно. Проверить - это забота читателя. |
Взгляните на ту страницу руководства parted, где речь идет о
типе файловой системы, размер которой Вы собираетесь изменять, и узнайте,
сможет ли parted это сделать. Если нет, что ж, Вам не повезло. Прийдется
убить какой-нибудь раздел и создать по-новому, чтобы было место для Gentoo.
Вперед, качаем программу, устанавливаем. Возникает проблема. Мы хотим изменить
размер корневого раздела, следовательно нам нужно загрузить с дискеты минимальную
linux-систему и использовать предварительно скомпилированный parted для
редактирования /. Если в Вашем случае можно отмонтировать
выбранный раздел, оставаясь в Linux, Вам везет и нет необходимости делать
то, что описано ниже. Просто соберите parted и запустите его на разделе,
который хотите урезать. А вот то, что я сделал в своей системе.
Important: Убедитесь, что действия, которые Вы собираетесь проделать с разделом,
поддерживаются parted! |
Скачал tomsrtbt boot/root диск (свободное использование) из http://freshmeat.net/tomsrtbt , создал дискету, как описано в прилагающейся документации, вставил еще одну чистую дискету в дисковод и перешел к следующему шагу.
Note: Опять замечу, что Linux - синоним понятия "Этот путь не единственный". Наша цель - запустить parted на отмонтированном разделе жесткого диска и это можно сделать не только описанным способом. Вы можете использовать любой другой набор boot/root дискет, не только tomsrtbt. Вы можете вообще не выполнять данный шаг, главное, что нужно - отмонтировать файловую систему, которую Вы собираетесь использовать под Gentoo, и перекроить ее, используя parted. |
Code Listing 6.2: Создание вспомогательной дискеты |
# mkfs.minix /dev/fd0
480 inodes
1440 blocks
Firstdatazone=19 (19)
Zonesize=1024
Maxsize=268966912
|
Продолжим со сборкой parted. Если он еще не закачан и не распакован, сделайте это. А затем перейдите в каталог, куда Вы его распаковали. И здесь выполните следующий набор команд для сборки утилиты и записи ее на дискету.
Code Listing 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. Наберитесь терпения - изменение размера может занять больше
получаса на больших дисках. Загрузитесь с дискеты tomsrtbt, а после этого
замените загрузочную дискету на вспомогательную, которую мы только что
создали. Введите mount /dev/fd0 /floppy и parted будет доступен в папке
/floppy. Нам туда. Запускаете parted и перекраиваете нужный раздел жесткого
диска. Когда этот бесконечный процесс наконец завершится, все будет готово
для того, чтобы получить истинное наслаждение, устанавливая Gentoo.
Диск, с которым мы работаем - это тот, на котором находится раздел,
размер которого мы меняем. К примеру, если мы хотим изменить /dev/hda3,
то диск, соответственно, будет называться /dev/hda.
Code Listing 6.4: Команды, которые следует выполнить, загрузившись с tomsrtbt |
# 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
|
Important: Наберитесь терпения! Компьютер работает! Посмотрите на индикатор
обращения к жесткому диску (находится на корпусе), чтобы убедиться,
что это так. Процесс может занять от 2 до 30 минут. |
Когда процесс завершиться, перезагрузитесь в Вашу старую linux-систему. После этого откройте The Gentoo Handbook: Installing the Gentoo Installation Files и следуйте инструкциям. Дойдя до chroot, используйте следующую команду чтобы очистить переменные окружения:
Code Listing 6.5: Flushing the environment during chroot |
# env -i /usr/sbin/chroot /mnt/gentoo /bin/bash
|
Удачи!
The contents of this document are licensed under the Creative Commons -
Attribution / Share Alike license.
|