Gentoo Linux. Типовая установка.
Gentoo — Source-based дистрибутив Linux. Что это значит? Это значит что все придется собирать из исходных кодов, то есть компилировать и устанавливать. Не ручками конечно, не пугайтесь. Для этого есть специальная программа — emerge. Она все сама откомпилирует и установит, только попросите.
Для чего нужен такой дистрибутив? Не проще ли Ubuntu поставить? В некоторых случаях проще Ubuntu. Ставится быстро, настраивается тоже. С обновлениями проблем нет. Для рабочей станции — самое оно, если не предъявляется каких либо специфических требований (хитрое шифрование содержимого диска «спецпрограммой», к примеру). В этом случае заморачиваться не стоит.
Так для чего оно тогда нужно? Нужен Gentoo тогда, когда хотят «заточить» машинку для определенного рода задач и только под них. Когда стоит задача собрать из старой машинки маршрутизатор с BGP и OSPF. Некоторым категорически не нравится, что на их сервере X-ы «отжимают» нужную для Apache память и ресурсы процессора. Кто-то терпеть ненавидит перезагружать сервер после каждого обновления. Кому-то не нравятся модули ядра и ему хочется чтобы ядро было монолитным и включало в себя только необходимые на конкретной машине драйвера. И чтоб ничего лишнего. Кому-то чего-то не хватает в стандартных дистрибутивах. А кто-то просто любит собирать все своими руками. Вот для таких случаев Gentoo идеально подходит. На рабочие станции его тоже можно устанавливать, при желании. Он не хуже той-же Ubuntu справится.
Основным преимуществом Gentoo является высокая гибкость. Это конструктор. Конструктор с достаточно мелкими деталями. Причем подходит он под многие архитектуры процессоров. И разобраться в принципах его работы не сложно.
В общих чертах, основными компонентами Gentoo являются: загрузчик системы (bootloader), ядро Linux, набор программного обеспечения составляющий базовую систему (так называемый system set) и система portage.
Загрузчик предназначен для загрузки ядра в оперативную память и передачи ему управления. Самым распространенным в последнее время загрузчиком является grub2. Но никаких жестких требований, использовать именно его, нет. Можно устанавливать и другие. В частности lilo, elilo или grub-static.
Ядро — это и есть сам Linux. Если вкратце, это прослойка между железом и софтом. Включает в себя драйвера для железа, файловые системы, сетевые протоколы, механизмы виртуализации и др. Подробнее схему ядра Linux можно посмотреть на картинке честно «спионеренной» отсюда.
Набор программного обеспечения system предоставляет базовый функционал системы. Включает в себя достаточно большой список пакетов. Просмотреть его можно выполнив команду:
# emerge -eavp system.
Система portage — система управления программным обеспечением в Gentoo. Все операции установки, обновления и удаления производятся с ее помощью посредством команды emerge. Это гибкая система установки, позволяющая с помощью USE флагов управлять параметрами сборки ПО.
Все вышеперечисленное, можно определить как базовую систему (минимально-необходимый набор, обеспечивающий корректную загрузку и функционирование системы). Все остальное ПО уже устанавливается в зависимости от назначения конкретной машины.
Процесс загрузки Gentoo выглядит следующим образом. Bootloader загружает ядро в память и запускает его. Ядро инициализируется (разворачивает собственные структуры, подключает устройства и т.д) и передает управление openrc (процессу init). Этот процесс проверяет корректность монтирования разделов, указанных в файле /etc/fstab, и запускает службы, необходимые для запуска системы. Когда все необходимые службы запущены, он инициализирует консоли, через которые осуществляется вход в систему.
Как устанавливается Gentoo? Процесс установки базовой системы достаточно простой. Состоит из следующих фаз:
- Получение livecd и запись его на физический носитель.
- Загрузка с физического носителя.
- Подготовка диска (разбивка, форматирование и монтирование)
- Распаковка на диски установочных файлов (файл stage)
- chroot в устанавливаемую систему
- Обновление системы portage до актуальной версии
- Настройка и сборка ядра
- Установка загрузчика
- Настройка установленной системы
- Перезагрузка в установленную систему
- Обновление системы до актуального состояния и установка требуемого ПО
- Создание образа системы (опционально)
Как все это выглядит на практике? Попробую продемонстрировать на примере. Есть у меня в загашнике старый «конь»:
- Процессор: Intel(R) Celeron(R) CPU 2.53GHz
- Материнская плата: ECS P4M800-M
- ОЗУ: 2Gb.
- HDD: IDE 80Gb
- Привод DVD
Старье конечно, но его вполне можно использовать для тестирования установки. Устанавливать буду базовую систему с голой консолью и минимальным набором служб на основании которой можно будет собирать уже что-нибудь полезное.
Получение livecd и запись его на физический носитель.
Что такое livecd? Это загрузочный ISO образ Gentoo. Найти его можно на сайте gentoo.org или на зеркалах Gentoo. На текущий момент для архитектуры x86 (в нашем случае это «оно») есть два варианта образов: минимальный установочный CD или LiveDVD. Минимальный установочный CD — содержит минимально-необходимый объем программного обеспечения для загрузки Gentoo в консольном режиме и установки системы. В LiveDVD есть возможность загрузить Gentoo как в консольном, так и в графическом режиме. К тому же, LiveDVD поддерживает, кроме архитектуры x86, еще и amd64. Скачиваем любой из них.
После того как образ скачан, его нужно записать на носитель. Записать можно как на CD/DVD диск, так и на флешку. Главное чтоб машина, на которую будет производится установка, поддерживала нужный способ загрузки. Для записи на флешку можно использовать программу unetbootin.
Загрузка с физического носителя.
Загружаемся с носителя. Будет выведен список вариантов загрузки. Если загружаемся с LiveDVD, будет выведен список вариантов загрузки в графическом режиме. В минимальном установочном CD графического режима нет. Перед выводом приглашения командной строки, будет отображен список вариантов загружаемых ядер. В обоих случаях можно загружать ядро по умолчанию (если архитектура соответствует x86).
При загрузке с LiveDVD, по окончанию загрузки запускается X сервер (графический режим). Изредка (в частности на старых машинах), с ним случаются проблемы и отображается только черный экран. В таких случаях, нужно нажать Ctrl+Alt+F1 для перехода в консоль.
В минимальном установочном CD по окончанию загрузки будет выведено приглашение командной строки.
Прежде чем начать работу в консоли, поясню один момент. В bash есть такая штука, как автодополнение. При наборе команд (особенно путей к файлам) очень помогает. Например, вместо того чтобы набирать вот это — cd /usr/share/bash-completion, можно набрать так: cd /u/sh/bash (Там где — нажимается кнопка Tab).
Так как, при установке Gentoo нужно будет много скачивать из интернета, настройка сети это первоочередная задача. Посмотрим на состояние сетевых интерфейсов:
livecd ~ # ifconfig -a
enp0s18: flags=4163 mtu 1500
inet 192.168.1.190 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20ad:b7f7:ffe3:d64f prefixlen 64 scopeid 0x20
inet6 fe80::216:ecff:fe0b:b218 prefixlen 64 scopeid 0x20
ether 00:16:ec:0b:b2:18 txqueuelen 1000 (Ethernet)
RX packets 182116 bytes 184614667 (176.0 MiB)
RX errors 0 dropped 2593 overruns 0 frame 0
TX packets 124405 bytes 14502484 (13.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 0 (Local Loopback)
RX packets 1310 bytes 23684 (23.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1310 bytes 23684 (23.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Присутствует два сетевых интерфейса. enp0s18 — встроенная сетевая карта Ethernet.
Второй интерфейс lo — локальная петля (Local Loopback).
Так как, у нас в сети есть DHCP сервер, сетевой интерфейс уже настроен с параметрами, выданными сервером.
Что делать если нужно настраивать вручную? Настраивать с помощью ifconfig. Следующая команда установит интерфейсу enp0s18 адрес 192.168.1.8 с маской 255.255.255.0
livecd ~ # ifconfig enp0s18 192.168.1.8 netmask 255.255.255.0
Добавим маршрут по умолчанию для доступа в интернет через шлюз 192.168.1.1.
livecd ~ # route add default gw 192.168.1.1
Зададим DNS сервер 192.168.1.1.
livecd ~ # nano -w /etc/resolv.conf
| /etc/resolv.conf |
| nameserver 192.168.1.1 |
Проверим прохождение ICMP пакетов
livecd ~ # ping ya.ru
Если все путем, можно идти дальше.
Следующим шагом нужно установить правильную дату и время. Если этого не сделать, то в последующем возможны неприятные неожиданности. Устанавливается дата и время командой date с аргументом в виде ДДММччммГГГГ (День, Месяц,час,минуты,Год)
livecd ~ # date 060214212015
Устанавливать Gentoo можно как и непосредственно за компьютером, на который производится установка, так и удаленно (по сети, через ssh клиент). Для удаленной работы требуется несколько дополнительных телодвижений: установить пароль root’а и запустить sshd. Конфиг sshd править не обязательно (предполагается, что в локальной сети хакеры не водятся).
livecd ~ # passwd root
livecd ~ # /etc/init.d/sshd start
Теперь можно подключиться по ssh со своего рабочего места.
# ssh -l root 192.168.1.8
Password:
livecd ~ #
Подготовка диска
Как вообще найти диск в Linux? Для начала нужно сказать, что Linux работает с устройствами компьютера через файлы. Их еще нодами (node) называют. Чтение/запись с устройства производится путем чтения/записи из соответствующего файла. Хранятся все эти файлики в каталоге /dev . Диски, как и другие устройства, следует искать именно там.
Как узнать имя нужного диска? С этим тоже все просто. Имя диска составное. Состоит оно из наименования устройства и его номера на шине. Если диск IDE, то имя диска должно начинаться с hd (Hard Drive). Если диск SCSI, SATA или USB, то имя начинается с sd (SCSI Drive). Почему SATA тоже определяются как SCSI? Потому, что ядро Linux работает с SATA и USB устройствами посредством эмуляции SCSI. В современных ядрах IDE диски тоже работают через эмуляцию SCSI.
Проверим какие диски присутствуют в системе. Сначала поищем IDE диски:
livecd ~ # ls /dev/hd*
ls: cannot access /dev/hd*: No such file or directory
livecd ~ # ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda5 /dev/sdb /dev/sdb4
Обнаружилось два диска: sda (с тремя разделами sda1, sda2 и sda5) и sdb (с одним разделом sdb4). Первый диск это IDE диск, хоть он и отображается как SCSI, а второй это загрузочная флешка.
Работать будем с первым. Создадим на нем разделы.
Какие именно разделы и в каких количествах нужны — определяется в зависимости от назначения системы. Это довольно большая тема. В нашем случае это не особенно важно, по-этому подробно останавливаться на этом не будем. Зачем их вообще создавать? Неужели нельзя поставить все на один раздел? Можно поставить и на один раздел. Только в этом случае, при заполнении диска до 100% будут проблемы. Серьезные. Во первых. Не будет файла подкачки (Как в Windows). В Linux для этих целей выделяется отдельный раздел. Желательно вначале диска для большей скорости чтения/записи. Во вторых — системные журналы имеют свойство распухать при активном использовании системы. И для них тоже желательно создавать отдельный раздел. И под систему желателен свой раздел. А уж для пользовательских данных отдельный раздел просто необходим. То есть, создадим 4 раздела:
- — Подкачка. Размер раздела под подкачку предлагается делать ОЗУ*2. У нас 2Gb ОЗУ. Значит нужен раздел 4Gb.
- — Корневая файловая система. 10Gb для нее в нашем случае достаточно.
- — Раздел для каталога /var. Основной объем там занимают лог-файлы. 6Gb для них думаю даже много.
- — Пользовательский раздел.
Для разметки диска в Linux используется программа fdisk (Для работы с разделами диска более 2Tb следует использовать parted). Fdisk вносит изменения в таблицу разделов только после команды w . Если ,во время работы с программой, вам вдруг захотелось «вернуть все в зад» — введите команду q и изменения не будут сохранены. Так что, если что-то будет сделано неправильно — не беда (если вы команду w еще не давали). И так, приступим.
livecd ~ # fdisk /dev/sda
Welcome to fdisk (util-linux 2.24.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help):
Говорит, скажите m для справки. Кому интересно — нажмите. Справка там короткая и понятная.
Для просмотра текущей разметки скажем p
Command (m for help): p
Disk /dev/sda: 76.7 GiB, 82347195904 bytes, 160834367 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1a0019ff
Device Boot Start End Blocks Id System
/dev/sda1 * 63 16386299 8193118+ 7 HPFS/NTFS/exFAT
/dev/sda2 16386300 160810649 72212175 f W95 Ext'd (LBA)
/dev/sda5 16386363 160810649 72212143+ 7 HPFS/NTFS/exFAT
Это старая разметка. Нам она ни к чему, по-этому удалим все разделы. Делается это с помощью команды d .
Command (m for help): d
Partition number (1,2,5, default 5): 1
Partition 1 has been deleted.
Command (m for help): d
Partition number (2,5, default 5):
Partition 5 has been deleted.
Command (m for help): d
Selected partition 2
Partition 2 has been deleted.
Command (m for help): p
Disk /dev/sda: 76.7 GiB, 82347195904 bytes, 160834367 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1a0019ff
Command (m for help):
Как видим, после введения команды d , fdisk спрашивает какой раздел удалять. Если нужно удалить какой-то конкретный раздел — указываем номер раздела. А если все-равно какой — можно не указывать. Будет удален тот, который предлагается по умолчанию. Теперь таблица пуста. Приступим к созданию новых разделов. Сначала, обычно, создается файл подкачки (swap).
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-160834366, default 2048):
Last sector, +sectors or +size (2048-160834366, default 160834366): +4G
Created a new partition 1 of type 'Linux' and of size 4 GiB.
Command (m for help): p
Disk /dev/sda: 76.7 GiB, 82347195904 bytes, 160834367 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1a0019ff
Device Boot Start End Blocks Id System
/dev/sda1 2048 8390655 4194304 83 Linux
Command (m for help):
Здесь fdisk спросил какой раздел нужен (первичный или расширенный), номер первого сектора и номер последнего сектора или размер раздела. Раздел лучше создавать первичный, если хватает номеров разделов. Номер стартового сектора менять без нужды не следует. А вместо последнего я указал размер в 4 гигабайта. Создадим еще три раздела: под корневой каталог 10Gb, под /var — 6Gb и все оставшееся под /home («все оставшееся» — это в поле Last sector ничего указывать не нужно). В результате получилось вот так:
Command (m for help): p
Disk /dev/sda: 76.7 GiB, 82347195904 bytes, 160834367 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1a0019ff
Device Boot Start End Blocks Id System
/dev/sda1 2048 8390655 4194304 83 Linux
/dev/sda2 8390656 29362175 10485760 83 Linux
/dev/sda3 29362176 41945087 6291456 83 Linux
/dev/sda4 41945088 160834366 59444639+ 83 Linux
Command (m for help):
Теперь нужно задать правильные типы разделов. У дисков с sda2 по sda4 типы выставлены правильно(id=82, System=Linux). А у sda1 нужно указать, что это диск под swap. Делается это с помощью команды t .
Command (m for help): t
Partition number (1-4, default 4): 1
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'.
Command (m for help): p
Disk /dev/sda: 76.7 GiB, 82347195904 bytes, 160834367 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1a0019ff
Device Boot Start End Blocks Id System
/dev/sda1 2048 8390655 4194304 82 Linux swap / Solaris
/dev/sda2 8390656 29362175 10485760 83 Linux
/dev/sda3 29362176 41945087 6291456 83 Linux
/dev/sda4 41945088 160834366 59444639+ 83 Linux
Command (m for help):
Теперь типы дисков выставлены правильно. Можно сохранять таблицу разделов.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
Проверим наличие созданных разделов в файловой системе.
livecd ~ # ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 /dev/sdb /dev/sdb4
Как видим, все в порядке. Присутствуют 4 раздела на диске sda. Теперь можно приступать к форматированию разделов. Для начала создадим раздел swap.
livecd ~ # mkswap /dev/sda1
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=3098b520-44cb-4e06-8da6-acacea756127
Теперь нужно отформатировать остальные разделы. Linux поддерживает множество файловых систем. Если к файловой системе имеются какие-либо требования, можно посмотреть их характеристики и подобрать наиболее подходящую под требования. В нашем случае таких требований нет и можно использовать любую. Например ReiserFS.
livecd ~ # mkreiserfs /dev/sda2
mkreiserfs 3.6.24
Guessing about desired format.. Kernel 3.16.5-gentoo is running.
Format 3.6 with standard journal
Count of blocks on the device: 2621440
Number of blocks consumed by mkreiserfs formatting process: 8291
Blocksize: 4096
Hash function used to sort names: "r5"
Journal Size 8193 blocks (first block 18)
Journal Max transaction length 1024
inode generation number: 0
UUID: 89a0cb9e-a201-41c0-94f0-7ed1c0d4c976
ATTENTION: YOU SHOULD REBOOT AFTER FDISK!
ALL DATA WILL BE LOST ON '/dev/sda2'!
Continue (y/n):y
Initializing journal - 0%. 20%. 40%. 60%. 80%. 100%
Syncing..ok
ReiserFS is successfully created on /dev/sda2.
Утилита предупреждает о потере данных на форматируемом разделе и спрашивает подтверждение форматирование. Жмем y . Так-же форматируем sda3 и sda4.
livecd ~ # mkreiserfs /dev/sda3
livecd ~ # mkreiserfs /dev/sda4
Файловые системы на разделах созданы. Теперь их необходимо примонтировать к текущей файловой системе. Что это значит? Работа с разделами в Linux сильно отличается от Windows. В Windows разделы доступны в виде дисков (C:,D. Z:). И чтобы получить доступ к данным на разделе, нужно указывать диск, на котором они находятся (C:\autoexec.bat). В Linux такого нет, разделы монтируются к текущей корневой файловой системе. И корневая файловая система только одна.
Раздел можно примонтировать к любому каталогу в корневой файловой системе. НО, файлы в этом каталоге станут недоступны до размонтирования этого каталога. По-этому монтировать на работающей системе желательно в специально созданные для этих целей каталоги.
Структура каталогов в Linux определена в Filesystem Hierarchy Standard (FHS). По русски можно почитать здесь.
Для временного монтирования (подключаемых дисков, или других разделов) предназначен каталог /mnt . Сюда и будем монтировать.
В нашем случае, нам нужно примонтировать раздел sda2 (на нем будет корневая ФС устанавливаемой ОС) к корневой файловой системе. Создать там два каталога (var и home) для монтирования разделов sda3 и sda4. Затем примонтировать туда разделы.
livecd / # mkdir /mnt/nd
livecd / # mount /dev/sda2 /mnt/nd
livecd / # mkdir /mnt/nd/var
livecd / # mkdir /mnt/nd/home
livecd / # mount /dev/sda3 /mnt/nd/var
livecd / # mount /dev/sda4 /mnt/nd/home
Активируем раздел подкачки.
livecd / # swapon /dev/sda1
Распаковка на диски установочных файлов
livecd ~ # cd /mnt/nd/home
livecd home # wget -c https://distfiles.gentoo.org/releases/x86/autobuilds/current-stage3-i686/stage3-i686-20141209.tar.bz2
Затем нужно распаковать архив в корень устанавливаемой системы.
livecd home # cd /mnt/nd
livecd nd # tar -xjvpf home/stage3-i686-20141209.tar.bz2
Когда архив распакован, монтируем файловую систему /dev, /sys и /proc в корень устанавливаемой системы. Это нужно для того, чтобы после смены корня файловой системы, программы могли получить доступ к устройствам компьютера и внутренним структурам ядра.
livecd nd # mount -o bind /dev /mnt/nd/dev
livecd nd # mount -o bind /proc /mnt/nd/proc
livecd nd # mount -o bind /sys /mnt/nd/sys
Теперь все готово к смене корня файловой системы (chroot).
Базовая установка Gentoo Linux

Существует 2-е технологии построения дисков. MBR и GPT.
Первая из которых имеет 32-битные идентификаторы для начального сектора и длины разделов. И поддерживают три типа разделов: первичные (primary), расширенные (extended) и логические (logical). Первичные разделы хранят информацию о себе в самом MBR — очень маленьком кусочке пространства (обычно 512 байт) в самом начале диска. Из-за такого маленького объема, поддерживаются только четыре первичных раздела (например, от /dev/sda1 до /dev/sda4 ).
К сожалению каждый размер имеет ограничение в 2Tb, из-за 32-битных идентификаторов. Поэтому я буду использовать GPT.
Опишу более подробный пример здесь, еще ниже пример для “скоростной установки”.
Включаем флаг загрузки на раздел MBR
fdisk /dev/sda
Welcome to fdisk (util-linux 2.24.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): a
Partition number (1,2, default 2): 1
The bootable flag on partition 1 is disabled now.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
Разработка схемы разбиения диска
| Раздел | Файловая система | Размер | Описание |
|---|---|---|---|
| /dev/sda1 | (начальный загрузчик) | 4МБ | загрузочный раздел BIOS |
| /dev/sda2 | ext2 | 512МБ | загрузочный раздел |
| /dev/sda3 | (swap) | 32000МБ | раздел подкачки |
| /dev/sda4 | ext4 | оставшаяся часть диска | корневой раздел |
Установка метки GPT
#parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type ‘help’ to view a list of commands.
(parted) mklabel gpt
Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Yes
Если мы хотим, чтобы наш диск имел MBR, используйте mklabel msdos .
Создаем разделы
Для начала сообщим parted, с какой единицой измерения мы будем работать.
unit mib
Теперь создадим загрузочный раздел в 4Mb для GRUB
Для того, чтобы создать раздел в 4 Mb, сообщим parted, создать раздел от 1Мб до 5Мб
(parted) mkpart primary 1 5
(parted) name 1 grub
(parted) set 1 bios_grub on
(parted) print
Model: ATA ST2000DM001-1CH1 (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 5243kB 4194kB grub bios_grub
Повторим данные шаги для остальных разделов.
Создаем остальные разделы
(parted) mkpart primary 5 517
(parted) name 2 boot
(parted) mkpart primary 517 32517
(parted) name 3 swap
(parted) mkpart primary 32517 -1
(parted) name 4 rootfs
Конец диска минус один мегабайт (обозначается “-1”)
Просмотр текущей картины разделов
Model: ATA ST2000DM001-1CH1 (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 5243kB 4194kB grub bios_grub
2 5243kB 517MB 512MB boot
3 517MB 32.5GB 32.0GB swap
4 32.5GB 2000GB 1968GB rootfs
Выходим из parted командой quit
Более быстрый пример разбиения
Проверим текущее разбиение дисков
parted /dev/sda
А затем введем новую команду Parted .
Используем команду rm [номер] для удаления раздела, который нам не нужен.
Мы собираемся начать с чистого жесткого диска.
Нам понадобится загрузочный раздел, раздел подкачки swap и немного дискового пространства. Используем следующие три команды:
mkpart primary ext2 0 32mb
mkpart primary linux-swap 32mb [32 + RAM]mb
mkpart primary ext4 [32 + RAM]mb -1s

Соглашаемся или просто игнорируем любые дополнительные запросы.
Создаем файловые системы
Выходим из Parted с помощью команды quit .
Теперь нам надо с помощью следующих команд создать в разделах файловые системы:
# mkfs.ext2 /dev/sda1
# mkfs.ext4 /dev/sda3

Вывод будет приблизительно следующий, в зависимости от созданных разделов.
Создаем файл подкачки swap
mkswap /dev/sda2
Монтирование разделов
Прежде, чем мы продолжим, мы должны смонтировать разделы.
Сделаем это, смонтировав сначала память как /mnt/gentoo :
# mount /dev/sda3 /mnt/gentoo
Создаем внутри каталог загрузки boot :
# mkdir /mnt/gentoo/boot
Смонтируем каталог boot :
# mount /dev/sda1 /mnt/gentoo/boot
Устанавливаем время
Убедимся, что часы правильно настроены на универсальное время UTC, для этого просто введем команду date .
Если это не так, то задаем время UTC с помощью следующей команды:
# date MMDDhhmmYYYY
.. где ММ — месяц, DD — день/дата и т.д.

Подбор зеркала
Переходим в точку монтирования, которую только что создали, с помощью команды cd , а затем вводим следующую команду для того, чтобы получить список зеркал, используемых для работы с архивом stage3 :
# links http://www.gentoo.org/main/en/mirrors.xml
Не забываем, что необходимо прописать настройки сети, ибо нам потребуется доступ в интернет.
# links http://mirror.yandex.ru/gentoo-distfiles/releases/amd64/autobuilds/current-stage3-amd64/

Выбираем необходимый stage3 и скачиваем его.


Распаковываем архив
Распаковываем архив, который скачали, с помощью следующей команды:
# tar xvjpf stage3-*.tar.bz2
Как только архив будет распакован, откроем конфигурационный файл с помощью редактора nano :
# nano -w /mnt/gentoo/etc/portage/make.conf
И затем мы сможем начать настраивать некоторые из параметров.
Задаем параметры, используемые по умолчанию
Параметры, уже указанные по умолчанию в конфигурационном файле, должны подходить для большинства систем. Мы также можем указать, сколько сразу можно параллельно выполнять процессов компиляции, добавив для этого в конце файла следующую команду:
MAKEOPTS=«-j[X]»
… где X указывает количество ядер, которые у вас есть плюс один.
Сохраняем результат и выходим с помощью команды Ctrl+X .
Приблизительно конфиг будет такой:
# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
CFLAGS=«-O2 -pipe»
CXXFLAGS=«${CFLAGS}«
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.
CHOST=«x86_64-pc-linux-gnu»
# These are the USE flags that were used in addition to what is provided by the
# profile used for building.
USE=«bindist mmx sse sse2»
PORTDIR=«/usr/portage»
DISTDIR=«${PORTDIR}/distfiles»
PKGDIR=«${PORTDIR}/packages»
MAKEOPTS=«-j9»
Подготавливаем среду для сборки
Все почти готово для того, чтобы начать сборку.
Запомните в среде детали настройки сети/DNS с помощью следующей команды:
# cp -L /etc/resolv.conf /mnt/gentoo/etc/
Далее, смонтируем файловые системы /proc , а затем привяжем их к /dev и /sys с помощью следующих команд:
# mount -t proc none /mnt/gentoo/proc
# mount —rbind /sys /mnt/gentoo/sys
# mount —rbind /dev /mnt/gentoo/dev
Переходим в среду сборки
Среда сборки является технически новой средой Linux. Сначала нам нужно сделать некоторые изменения с тем, чтобы мы могли в нее войти — в основном это касается каталога для пользователя root , что мы делаем с помощью команды chroot :
# chroot /mnt/gentoo /bin/bash
# source /etc/profile
# export PS1=»(chroot) $PS1″
Настройка дерева Portages
Произведем синхронизацию Portages для получения более свежих версий
emerge-webrsync
emerge —sync
Профиль установки
Теперь с помощью задания определенного профиля сборки нам нужно выбрать, какую систему Gentoo мы будем собирать. Есть три профиля, два из которых — Desktop (настольный компьютер) и Server (сервер). Это позволит определить тип пакетов, которые мы используем. Задайте профиль с помощью следующей команды:
# eselect profile set 3
Значение 2 соответствует настольному компьютеру; для сервера измените значение на 3
Настройка время в ядре
Список доступных часовых поясов можно узнать с помощью команды:
ls /usr/share/zoneinfo
Для Москвы, мы сделаем следующее:
# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
# echo «Europe/Moscow» > /etc/timezone
Теперь пришло время загрузить наше ядро. Во-первых, получим gentoo-sources с помощью команды:
# emerge gentoo-sources
С помощью следующей команды проверьте, чтобы на версию ядра gentoo-sources была ссылка:
# ls -l /usr/src/linux
Теперь можем начать изменять флаги ядра, введя следующую команду:
# cd /usr/src/linux
# make menuconfig
Активируем необходимые параметры ядра модули

Убеждаемся в том, что изменили только те параметры ядра, которые нам необходимы.
Активируем любые другие необходимые модули. После этого выходим из режима настройки.
Компиляция ядра
Итак, наступило время компилировать ядро.
# make && make modules_install
На это потребуется некоторое время, зависящее от количества модулей и параметров, которые мы активировали.
После того, как все будет завершено, установим ядро с помощью следующей команды:
cp arch/x86/boot/bzImage /boot/kernel-[X]-gentoo
… где X будет числом, которое будет нам указано на последнем шаге, в нашем случае 3.16.5-gentoo
Загружаем модули
Нам необходимо указать, какие модули ядра мы хотим загрузить. Чтобы узнать, какие модули доступны, используем команду:
# find /lib/modules/[X]/ -type f -iname ‘*.o’ -or -iname ‘*.ko’ | less
Монтирование файловой системы
Мы должны указать, как разделы, которые мы создали, будут монтироваться при загрузке. Откройте файл fstab с помощью команды:
# nano -w /etc/fstab
А потом установим следующие параметры так, чтобы файловая система у нас работала должным образом:
/dev/sda1 /boot ext2 defaults,noatime 0 2
/dev/sda2 none swap sw 0 0
/dev/sda3 / ext4 noatime 0 1
Примерно fstab будет выглядеть таким образом
# /etc/fstab: static file system information.
#
# noatime turns off atimes for increased performance (atimes normally aren’t
# needed); notail increases performance of ReiserFS (at the expense of storage
# efficiency). It’s safe to drop the noatime options if you want and to
# switch between notail / tail freely.
#
# The root filesystem should have a pass number of either 0 or 1.
# All other filesystems should have a pass number of 0 or greater than 1.
#
# See the manpage fstab(5) for more information.
#
#
# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
#/dev/BOOT /boot ext2 noauto,noatime 1 2
#/dev/ROOT / ext3 noatime 0 1
#/dev/SWAP none swap sw 0 0
#/dev/cdrom /mnt/cdrom auto noauto,ro 0 0
#/dev/fd0 /mnt/floppy auto noauto 0 0
/dev/sda1 /boot ext2 defaults,noatime 0 2
/dev/sda2 none swap sw 0 0
/dev/sda3 / ext4 noatime 0 1
Настройка сети
После перезагрузки системы нужно настроить сеть.
Сначала перейдем в конфигурационный файл:
# nano -w /etc/conf.d/net
И добавим, например, следующее для DHCP:
config_eth0=«dhcp»
Если используем статический IP-адрес, то пишем:
config_eth0=«192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255»
routes_eth0=«default via 192.168.0.1»
Сохраним файл, а затем сделаем его загружаемым с помощью команд:
# cd /etc/init.d
# ln -s net.lo net.eth0
# rc-update add net.eth0 default
Настройка пользователя root
Устанавливаем пароль пользователя root с помощью стандартной команды passwd . Затем натсроем некоторые основные сервисы, отредактировав для этого следующий файл:
# nano -w /etc/rc.conf
И настройку аппаратных часов:
# nano -w /etc/conf.d/hwclock
Если это не время UTC, то добавляем в файл параметр clock=»local»
Настраиваем локаль
Укажем в системе свои региональные настройки (локаль).
Нам нужно будет отредактировать следующий файл:
nano -w /etc/locale.gen
ru_RU.UTF-8 UTF-8
en_US.UTF-8 UTF-8
Сохраняем, выходим, а затем набираем locale-gen .
Устанавливаем эту локаль в /etc/env.d/02locale как используемую по умолчанию:
LANG=«ru_RU.UTF-8»
LC_COLLATE=«C»
А затем перезагрузим среду с помощью следующей команды:
# env-update && source /etc/profile
Начальная загрузка
Необходимо установить начальный загрузчик GRUB с тем, чтобы мы могли после перезагрузки загрузиться в систему Gentoo. Откомпилируем его с помощью команды:
emerge grub
Теперь создадим файл grub.conf и приготовимся добавить необходимые настройки.
Код для GRUB
default 0
timeout 15
title Gentoo Linux
root (hd0,0)
kernel /boot/kernel-3.[version]-gentoo
root=/dev/sda3
title Gentoo Linux (rescue)
root (hd0,0)
kernel /boot/kernel-[version]-gentoo
root=/dev/sda3 init=/bin/bb
Убедимся, что используем правильный номер ядра. (вместо [version])
Сохраняем изменения и выходим.
Прежде всего, установим необходимые файлы GRUB2 в /boot/grub .
Если предположить, что первый диск (тот, откуда система загружается)
называется /dev/sda , то следующая команда сделает это за нас:
grub2-install /dev/sda
Для генерации финальной конфигурации GRUB2, выполните команду grub2-mkconfig
# grub2-mkconfig -o /boot/grub/grub.cfg
В выводе команды должно быть указано, что найдено хотя бы одно ядро
Linux так как оно нужно для загрузки системы. Если вы используете
initramfs , либо использовали genkernel для компиляции ядра, также
должен определиться правильный образ initrd . Если этого не
произошло, перейдите в /boot и проверьте его содержимое
с помощью команды ls .
Если файлы и в самом деле отсутствуют, вернитесь к инструкциям
по конфигурации и установке ядра.
Установка Gentoo Linux.
Установка Gentoo Linux. Почему люди выбирают Gentoo? Как минимум потому, что Gentoo — самый быстрый из пингвинов. Хотя, как и везде, есть свои недостатки. Дженту (она же гента) относится к source-based linux distributions, за счет чего повышается скорость работы, но приходится тратить время на компиляцию пакетов. В этой статье, расскажу и покажу, как установить Gentoo Linux.
Начнем установку Gentoo Linux
После загрузки диска, появится окно:
Жмем enter, после чего начнется загрузка LiveCD.
Предлагают выбрать раскладку, пока оставим как есть, жмем enter.
После загрузки LiveCD Gentoo Linux
(Если, после ввода команды, ничего не выводиться на экран, то это означает, что команда прошла успешно).
Приготовьтесь, установка Gentoo Linux, довольно-таки долгий процесс. Нужно проверить подключение к интернету. Во время загрузки гента попыталась подключить по dhcpcd.
livecd ~# ping -c3 google.com
Если у вас статический адрес, тогда нужно его прописать, с помощью команды ifconfig, а DNS прописать в /etc/resolv.conf. Настройка сети это уже отдельная тема.
Далее, нам нужно разбить диск. Для этого я предпочитаю использовать утилиту fdisk.Как пользоваться утилитой fdisk в Linux, также есть псевдографическая утилита cfdisk. О том, как же лучше разбить диск и о файловой системе Linux, я писал в предыдущем посте — разбить диск для Linux.
Предположим, что мы разбили диск на 4 раздела: /boot, swap, /usr, /home. Теперь нам нужно отформатировать наши разделы. При помощи команды mkfs, мы форматируем раздел, в указанную после точки файловою систему. Атрибут -L задает лейбл(метку), нашему разделу. Для загрузочного раздела boot, журналируемая файловая система ненужна, поэтому используем ext2, а для всех остальных ext4.
livecd ~# mkfs.ext2 -L boot /dev/sda1
livecd ~# mkfs.ext4 -L root /dev/sda3
livecd ~# mkfs.ext4 -L home /dev/sda4
И при помощи команды mkswap, форматируем раздел подкачки (swap).
livecd ~# mkswap -L swap /dev/sda2
Сразу же, командой swapon, подключаем раздел подкачки.
livecd ~# swapon /dev/sda2
Далее, нам нужно смонтировать остальные раздел, командой mount, первым монтируем раздел root, в паку /mnt/gentoo.
livecd ~# mount /dev/sda3 /mnt/gentoo
В паке /mnt/gentoo, нам нужно создать одноименные папки под разделы .
livecd ~# mkdir /mnt/gentoo/
В эти папки монтируем boot и home.
livecd ~# mount /dev/sda1 /mnt/gentoo/boot
livecd ~# mount /dev/sda4 /mnt/gentoo/home
Если, захотите создать, отдельно разделы /tmp /var, им нужно дать права chmod 1777.
livecd ~# chmod 1777 /mnt/gentoo/tmp
Переходим в каталог /mnt/gentoo.
livecd ~# cd /mnt/gentoo
Сюда, нам нужно скачать файлы. Для удобства, воспользуемся консольным браузером links. Открываем браузер и выбираем mirrors (стрелкой вниз).
Выбираем подходящие зеркало (стрелка вниз).
Далее, выбираем «releses».
Тут, выбираем нужную архитектуру, в нашем случае «x86/».
Здесь, выбираем «stage3-i686-20130528.tar.bz2».
И для того, чтобы скачать, нажимаем «d», после загрузки, чтобы выйти из браузера links, нажимаем букву «q».
livecd gentoo # ls
boot home lost+found stage3-i686-20130528.tar.bz2
livecd gentoo # tar xvjpf stage3-*.tar.bz2
После распаковки, можно отредактировать файл make.conf. Указав соответствующие параметры оптимизации. (Для новичков рекомендую оставить как есть)
livecd gentoo # nano /mnt/gentoo/etc/portage/make.conf
Далее, выбираем зеркало для установки. (стрелкой вниз и нужное нам зеркала выбираем пробелом, жмем «enter»)
livecd gentoo # mirrorselect -i -o >>/mnt/gentoo/etc/portage/make.conf
После чего, можно проверить «make.conf». Если все хорошо, нужно скопировать информацию о DNS. DNS адреса хранятся в файле «/etc/resolv.conf».
livecd gentoo # cp -L /etc/resolv.conf /mnt/gentoo/etc/
Смонтируем файловую систему /proc в /mnt/gentoo/proc.
livecd gentoo # mount -t proc none /mnt/gentoo/proc
Затем, создаем привязку монтирования файловых систем /dev и /sys.
livecd gentoo # mount —rbind /sys /mnt/gentoo/sys
livecd gentoo # mount —rbind /dev /mnt/gentoo/dev
Переходим в новую среду Gentoo Linux (Установка Gentoo Linux)
С помощью chroot, изменяем корневой каталог с «/» на «/mnt/gentoo».
livecd gentoo # chroot /mnt/gentoo /bin/bash
Перезагрузим некоторые настройки /etc/profile в память, с помощью source.
livecd / # source /etc/profile
И напоследок, чтобы не забыть где мы находимся.
livecd / # export PS1=»(chroot) $PS1″
Устанавливаем (распаковываем) снимок дерева Portage.
(chroot) livecd / # mkdir /usr/portage
(chroot) livecd / # emerge-webrsync
Внимание!
Если у вас, после команды:
(chroot) livecd / # emerge-webrsync
возникнет следующая ошибка…
. Section ‘gentoo’ in repos.conf refers to repository without repository name set in ‘/usr/portage/profile/repo_name’ emerge-webrsync: error: Repository ‘gentoo’ not found
Нужно просто ввести следующие команды:
mkdir -p /usr/portage/profiles
echo «gentoo» > /usr/portage/profiles/repo_name
(chroot) livecd / # emerge-webrsync
(chroot) livecd / # emerge —sync
Посмотрим какие профили доступны в системе.
(chroot) livecd / # eselect profile list
Available profile symlink targets:
Выбираем нужный нам вариант, лично я планирую установить KDE, поэтому выбираю номер 5.
(chroot) livecd / # eselect profile set 5
Далее, нам нужно отредактировать «make.conf», а именно настроить переменную «USE». Для начала можно просмотреть весь список USE-флагов.
(chroot) livecd / # less /usr/portage/profiles/use.desc
(прокрутка стрелками, выход клавиша «q»)
В переменной «USE», указываются значения, которые влияют на параметры компиляции. Например, параметр «qt4», включает компиляцию с поддержкой «qt4», для всех программ, которые могут поддерживать «qt4». А минус перед параметром, например, «-gtk» отключает поддержку «gtk».
Предположим, мы будем устанавливать KDE, тогда открываем make.conf.
(chroot) livecd / # nano /etc/portage/make.conf
И дописываем следующие флаги.
USE=»-gtk -gnome qt4 kde dvd alsa cdr unicode»
Настроим часовой пояс, сначала посмотрим варианты.
(chroot) livecd / # ls /usr/share/zoneinfo
Предположим, что мы в Москве.
(chroot) livecd / # cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Устанавливаем часовой пояс.
(chroot) livecd / # echo «Europe/Moscow» > /etc/timezone
(chroot) livecd / # nano /etc/locale.gen
Добавим в файл «locale.gen» русский.
(chroot) livecd / # locale-gen
Установка ядра Gentoo Linux. (Установка Gentoo Linux)
Покажу простой пример, будем ставить genkernel. Если кому-то, что-то не устроит, то в любой момент можно собрать собственное ядро.
С помощью команды «emerge» устанавливаем исходные коды Gentoo Linux.
(chroot) livecd / # emerge gentoo-sources
Собираем и устанавливаем ядро genkernel. Это длительный процесс.
(chroot) livecd / # emerge genkernel
(chroot) livecd / # genkernel all
Теперь ставим необходимые программы. Описывать я их не буду, кому интересно можно нагуглить (Установка Gentoo Linux — длительный процесс).
(chroot) livecd / # emerge udev syslog-ng grub dhcpcd vixie-cron
Уточняем название созданного образа ядра и initrd. Позже, во время настройки Grub, эта информация пригодится.
(chroot) livecd /# ls /boot/kernel* /boot/initramfs*
Устанавливаем в автозагрузку демоны «udev», который мы собрали.
(chroot) livecd /# rc-update add udev boot
Редактируем «fstab». fstab — конфигурационный фал, указываются точки подключения разделов, порядок подключения, хранить информацию о разделах дисков и файловых систем.
(chroot) livecd /# nano /etc/fstab
В моем случае он выглядит так:
Далее, настроим интернет.
(chroot) livecd /# nano /etc/conf.d/net
Для автоматического получения ip (dhcp), добавим такую строчку:
А для статического ip, прописываем следующие (указав свои данные):
config_eth0=»192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255″
routes_eth0=»default via 192.168.0.1″
eth0 — это имя сетевой карты, у вас может быть другим, чтобы посмотреть доступные сетевые интерфейсы, наберите команду: ifconfig.
Чтобы сетевые интерфейсы запускались при загрузке, нужно сделать следующие:
(chroot) livecd /# cd /etc/init.d
(chroot) livecd init.d # ln -s net.lo net.eth0
(chroot) livecd init.d # rc-update add net.eth0 default
(chroot) livecd init.d # cd /
Если у вас есть PCMCIA, тогда нужно установить пакет «pcmciautils».
(chroot) livecd /# emerge pcmciautils
Для использования PPPoE нужно установить «ppp».
(chroot) livecd /# emerge ppp
Самое главное, установим пароль супер пользователя «root», набрав:
(chroot) livecd /# passwd
При вводе пароля «root», пароль не отображается.
Дальше, установим раскладку клавиатуры.
(chroot) livecd /# nano /etc/conf.d/keymaps
Настроим параметр часов. Введем значение clock=»local»
(chroot) livecd /# nano /etc/conf.d/hwclock
Также можно настроить /etc/rc.conf, но я оставлю как есть.
Добавляем в автозагрузку журналирование и крон.
(chroot) livecd /# rc-update add syslog-ng default
(chroot) livecd /# rc-update add vixie-cron default
Установка Gentoo Linux на этом не закончена, теперь самое главное.
Настройка загрузчика GRUB. (Установка Gentoo Linux)
В файле «grub.conf» основном нужно подправить версию ядра. Версию ядра, мы с вами, смотрели командой: «ls /boot/kernel* /boot/initramfs*».
(chroot) livecd /# nano /boot/grub/grub.conf
# Загрузка пункта по умолчанию.
# сколько ждать до начала загрузки, в секундах.
# симпатичная заставка Grub.
title Gentoo Linux 3.8.13
# раздел с файлом ядра.
kernel /boot/genkernel-x86-3.8.13-gentoo root=/dev/ran0 real_root=/dev/sda3 udev vga=0x318
#udev — менеджер устройств для новых версий ядра Linux
# vga=0x318 — это разрешение экрана 1024х768
#Если у вас установлен Windows #Например, Windows находится на /dev/sda8 title Windows XP rootnoverify (hd0,7) makeactive chainloader +1
Установим загрузчик GRUB.
(chroot) livecd /# grep -v rootfs /proc/mounts > /etc/mtab
(chroot) livecd /# grub2-install /dev/sda
Генерируем файл grub.cfg
(chroot) livecd /# grub2-mkconfig -o /boot/grub/grub.cfg
Удалим архив, скаченный в начале установки.
(chroot) livecd /# rm /stage3-*.tar.bz2*
Установка Gentoo Linux закончена. Выходим из среды «chroot», перезагружаемся (не забывая вытащить диск).
(chroot) livecd /# exit
(chroot) livecd /# reboot
После перезагрузки, войдем в систему под суперпользователем root. Пароль для пользователя root, мы ввели вовремя установки, командой «passwd»
Password: (ваш пароль root)
Теперь, нужно добавить нового пользователя (username — имя нового пользователя).
localhost ~# useradd -m -G users,wheel,audio -s /bin/bash username
Введем пароль для нового пользователя.
localhost ~# passwd username
Password: (введите пароль для username)
Re-enter password: (повторить пароль)
Загрузка Gentoo Live CD из ISO при помощи grub4dos
Это, на самом деле, развлечение для настоящих джедаев, зато весело) Для загрузки я использовал USB Stick Kingston DataTraveler 16G. Grub4Dos можно скачать (а заодно и узнать о нем побольше) здесь: http://grub4dos.sourceforge.net/ Понадобятся:
- livecd/minimal-образ gentoo 2008.0 или позже
- usb flash
- grub4dos
Итак, для начала нужно установить (тем или иным способом из вики) Grub4Dos на нужный нам носитель. В моем случае это выглядело так:
./bootlace.com /dev/sdi cp grldr /mount/flash/ cp menu.lst /mount/flash/menu.lst.example
Ничего сложного, в общем-то. Ясно, что /dev/sdi — это мой usbflash, причем FAT32 раздел /dev/sdi1 примонтирован к /mount/flash (grub4dos работает с FAT16, FAT32, NTFS, EXT2). Далее, я скопировал нужные мне .iso образы в /mnt/flash/iso и сделал menu.lst в соответствии с руководством по загрузке iso (ссылку можно найти в вики) Честно говоря, делать руками это немного лень, поэтому вот простенький скриптик (выполняется в корне примонтированного накопителя, в моем случае /mount/flash)
#!/bin/bash echo "color black/cyan yellow/cyan" > menu.lst echo "timeout 30" >> menu.lst echo >> menu.lst for iso in iso/*.iso ; do echo "title $iso" >> menu.lst echo "map /$iso (hd32)" >> menu.lst echo "map --hook" >> menu.lst echo "root (hd32)" >> menu.lst echo "chainloader" >> menu.lst echo >> menu.lst done
Пустые строки я вставил исключительно для красоты. В результате, получился вот такой menu.lst:
color black/cyan yellow/cyan timeout 30 title iso/gparted-livecd-0.3.4-9.iso map /iso/gparted-livecd-0.3.4-9.iso (hd32) map --hook root (hd32) chainloader title iso/install-amd64-minimal-2008.0.iso map /iso/install-amd64-minimal-2008.0.iso (hd32) map --hook root (hd32) chainloader title iso/install-x86-minimal-2008.0.iso map /iso/install-x86-minimal-2008.0.iso (hd32) map --hook root (hd32) chainloader
Дальнейшие шаманства начинаются уже после загрузки основного загрузчика, короче говоря, можно брать полученный usbflash и вставлять его в целевую машину.
При загрузке появится стандартное меню типа Grub, в котором, естественно, нужно выбрать желаемый iso-образ. Для определенности, пусть это будет install-x86-minimal-2008.0.iso После нажатия [Enter] появится приглашение выбрать ядро для загрузки (стандартное приглашение gentoo livecd). Нужно запустить ядро с параметрами:
debug cdroot=/dev/loop0
gentoo cdroot=/dev/loop0 debug
Пара слов, зачем это делается: параметр debug, помимо вывода большого количества довольно подробной информации о загрузке, которая нужна крайне редко, запускает отладочный шелл (ash), аккурат перед началом заполнения tmpfs-ового root’a, или, если угодно, перед монтированием cdrom’a, что дает возможность настроить /dev/loop0 на нужный образ. В свете вышеизложенного, совершенно ясно, что делает cdroot=/dev/loop0: говорит init, что cdrom надо искать на /dev/loop0 После того, как установка запустит отладочную консоль, нужно примонтировать наш usbflash-накопитель, скажем, на /root или /temp (обе папки не используются), или на вновьсозданную, и направить /dev/loop0 на iso/install-x86-minimal-2008.0.iso:
mkdir /flash && mount /dev/sdb1 /flash losetup /dev/loop0 /flash/iso/install-x86-minimal-2008.0.iso
После этого можно с чистой совестью нажать Ctrl-D, и система начнет загружаться во вполне штатном режиме. Если вызвать reboot или halt, то система будет ругаться на невозможность отмонтировать loop0, однако этот факт можно с чистой совестью игнорировать. В следующий раз расскажу, как запускать gparted-livecd-0.3.4-9.iso (более новые версии не пробовал). Делается это вполне аналогично с той разницей, что аналогичный отладочный шелл запускается при ошибке, и мудрить с параметрами ядра не приходится. (учитывая то, что gparted livecd основан на gentoo, аналогичность нисколько не удивляет)