Open Way | Systems | Distro | Shell | Desktop | Applications
Network | Development | Download | OfftopicКарта сайта
FreeNotesФорум POSIX.ru
На главную страницу

Gen-To: How-To по установке Gentoo

Дмитрий Д. Царьков aka ddc
Версия 1 - 2006.02.26
Версия 2.0, которая по-хорошему должна была стать 1.0 - 2006.08.10

От автора: Этого труда не было бы, если бы не героическая помощь уважаемых участников форума Linuxforum - alv (обсуждение, редакторская правка), Juliette (корректорская правка, обсуждение), TeMy4uH (корректорская правка). Многие другие помогали советом, порой даже неосознанно или не зная этого. Большое Вам всем спасибо!

Кроме того не могу не предупредить читателя о том, что эта редакция текста готовится мной, уже не имеющим к Gentoo никакого отношения: с недавнего времени я стал счастливым пользователем FreeBSD. Так что если для Вас это является источником напряжения или недоверия - Вы всегда свободны отложить эту статью и воспользоваться чем-то ещё.

От редактора: перед вами подробное руководство по установке Gentoo, рассчитанное на начинающих пользователей этого дистрибутива (а возможно, и начинающих пользователей Linux вообще). Правда, некоторые соображения автора, касающиеся наиболее ответственной процедуры - разметки диска, субъективны, а иные мне показались спорными. И потому я сопроводил их собственными комментариями, выделенными явным образом (От редактора: вот так - А.Ф.). Правда, они столь же субъективны, и также могут показаться спорными. Так что рассчитываем на обсуждение в широких массах... - Алексей Федорчук

Оглавление

  1. Вводная
  2. Работа с разделами
    1. Gentoo в роли единственной ОС
    2. Gentoo, сосуществующую с другими ОС
    3. Gentoo и Windows с загрузкой из Windows
  3. Подготовка окружения Gentoo
    1. Stage? Какой stage?
    2. Подготовка к бою
  4. Установка базовой системы
    1. Смена окружения
    2. Portage-специфичные настройки
    3. Сборка базовой системы
    4. Конфигурирование новой системы
    5. Русификация/локализация/кириллизация
  5. Загрузчик
    1. GrUB
    2. NTLdr
  6. Доустановка
    1. Завершение установки системы
    2. Создание резервной копии
    3. Напутствие

Вводная

Среди всех дистрибутивов GNU/Linux Gentoo выделяется особо, ибо представляет собой самый продуманный и разработанный Source-based дистрибутив, уже обзаведшийся отличной репутацией и целой массой поклонников. И если Вы чётко знаете, какой именно софт хотите видеть у себя на компьютере, а мысли о долгой компиляции и стойкой интернет-зависимости Вас не пугают, Gentoo - это Ваш выбор, в реализации которого Вам поможет эта статья.

На сайте Gentoo для установки предлагается скачать один из нескольких образов установочных дисков, но все они обладают ярдом недостатком. Только в LiveCD-версии установочного диска возможно работать, пока система устанавливается, да и то набор ПО исчезающе мал, да и LiveCD предлагается только для архитектуры x86 (в версии для субархитектур x86, i586 и i686). А ведь на некоторых компьютерах установка может длиться больше суток! Могут быть и другие причины невозможности или нежелательности использования дисков от Gentoo. Например, они могут не содержать требуемого сетевого драйвера, как это было в моём случае, или просто нет времени на выкачивание образа диска. Так или иначе, установочные диски от Gentoo могут не подойти, но желание установить Gentoo может не пропасть.

Именно поэтому моя статья посвящена вопросу установки Gentoo Linux (а именно версии 2006.0) с произвольной развёрнутой системы GNU/Linux. В этих целях подойдёт любой имеющийся в хозяйстве LiveCD или какой-либо (уже установленный) дистрибутив GNU/Linux. В дальнейшем будет предполагаться, что на момент начала установки пользователь имеет какой-либо LiveCD (или установленный на жёсткий диск дистрибутив; впрочем, я буду исходить из того, что пользователь использует для установки LiveCD SLAX, хотя сам предпочитаю GRML, который предоставляет более удобную командную строку) и компьютер, с которого есть выход в интернет. Кроме того, если пользователь желает видеть иные ОС (помимо Gentoo) на своём компьютере - они все должны быть установлены до установки Gentoo. В особенности Windows.

Ну и совсем перед переходом к делу скажу несколько слов об использовании этой статьи. Одной из особенностей Gentoo является тот факт, что в установке можно делать перерывы, причём делать их можно почти в любой момент, и до определённого этапа Вам даже не придётся повторять совершённые ранее действия. Кроме того, устанавливать Gentoo можно по-разному. Этот вариант сложился в моём понимании вопроса как наиболее оптимальный, но если Вы будете отступать от него, возможно Вы добьётесь лучших результатов. Так или иначе, главное при сборке Gentoo - знать, что именно делаешь в данный момент, и вооружившись этим знанием мы переходим к собственно творческому процессу.

Работа с разделами

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

Что касается базовой концепции, тот тут всё просто: пространство диска разбито на фрагменты - разделы; все разделы Linux видит как устройства, доступные по именам /dev/hd + маленькая латинская буква начиная с "a" + число от "1" до "4" для физических разделов и от "5" до безконечности - для логических. Так первый физический раздел на диске будет называться /dev/hda1, первый логический - /dev/hda5 (даже если нет hda1, hda2 и т.д.).

Теперь с результатом. Мы можем желать:

  1. Gentoo в роли единственной ОС;
  2. Gentoo, сосуществующую с Windows;
  3. Gentoo и Windows с загрузкой из Windows1.

При выборе наиболее подходящего варианта стоит понимать, что последнее предложение при видимой простоте чревато пренеприятнейшими последствиями, а первое - наиболее благоприятно для домашнего компьютера, если Вы (и те, с кем Вы этот компьютер делите) и так не используете Windows, либо знаете аналоги используемого Вами под Windows ПО.

Gentoo в роли единственной ОС

Этот случай - самый простой, все остальные будут являться его усложнением.

Итак, что нам нужно для установки Linux? Нам нужно место для (1) системы, (2) пользовательских файлов и (3) раздела подкачки. Начнём с конца.

Для решения вопроса о размере и положении раздела подкачки нам необходимо осознать, зачем он нужен. Итак, в своей работе ОС использует оперативную память. Но оперативной памяти может не хватать для текущих задач, так что система использует специально заготовленное место на жёстком диске как фрагмент оперативной памяти. Кроме того, раздел подкачки используется для сохранения данных из оперативной памяти при "спящем режиме". Имеет смысл делать этот раздел размером в удвоенный объём оперативной памяти. Что касается места для раздела подкачки, то было бы правильней отправить его в ту часть жёсткого диска, в которой операции чтения/записи происходят быстрее всего - в самое начало.

Для распределения остальных частей системы (программ и документов) нам потребуется понимание структуры каталогов Linux, которая подчинена стандарту FHS (Перевод В. Костромина). Собственно, по прочтении стандарта уже можно сделать все необходимые выводы, но если делать это лень, не хочется, непривычно или просто боязно, можно послушать мои мудрые советы.

От редактора: Прочитать указанный документ очень полезно. Однако читатель должен отдавать себе отчет, что это - отнюдь не догма, и даже не руководство к действию, а скорее протокол о благих намерениях, коими вымощена дорога... ну сами знаете куда. Собственно, это весьма детализированная претензия на универсализм - и именно потому майнтайнеры многих дистрибутивов FHS откровенно игнорируют (особенно в тех его частях, в которых он отступает от вековых Unix-традиций) - А.Ф.

От автора: Если внимательно изучить установку Gentoo, то можно заметить, что Gentoo Linux достаточно уверенно, последовательно и удачно следует указанному документу. И хотя в дружной семье дистрибутивов GNU/Linux уродов ощутимо больше, чем полноценных дистрибутивов, Gentoo всё же остаётся на высоте. - Д.Ц.

Теперь мы можем разделить структуру каталогов Linux на пять частей:

  1. Загрузчик (/boot);
  2. базовая система (/bin, /etc и /sbin);
  3. псевдокаталоги (/dev, /mnt и /tmp);
  4. внебазовая часть системы (/var, /opt и /usr);
  5. пользовательсие данные и программы (ветви каталога /home и /root).

Логично предположить, что третий пункт в перечислении почти не требует дискового пространства. Также несложно догадаться, что корневой каталог должен располагаться вместе с базовой системой. Поскольку её (базовой системы) размер не так велик, вполне можно отвести ей 256 Мб (можно и больше; поскольку я пуглив как лань и очень щедр, моя базовая система ютилась на 512 Мб). Поскольку этот раздел будет примонтирован в режиме чтения/записи, идеальный формат для него - журналируемые файловые системы ext3 или ReiserFS.

А вот раздел /boot наоборот большую часть времени не будет примонтирован вообще. Поскольку данных на нём содержится очень мало, мы отведём для него 24 Мб из расчёта на вольготное размещение нескольких ядер, собранных в экспериментальных целях. Хотя лично мне всегда хватало 17 Мб. Поместить /boot стоит в самое начало диска - дабы избежать любых проблем на любом железе.

Раздел /var служит для хранения часто изменяющихся файлов, которые сохраняются при перезагрузке. Поэтому для этого раздела требуется место поближе к началу диска и скоростная файловая система, достаточно безопасная для сохранения данных при внезапном выключении компьютера (при зависании, отключении питания или прыжка любимого кота на клавиатуру). На данный момент я не вижу конкурентов ReiserFS в этой области. Что касается размера раздела, то тут нужно помнить о том, что именно в /var Portage производит сборку программ, так что разумным будет размер в пределах 3 Гб (такие требования предъявляет, к примеру, OpenOffice.org; если Вы согласны довольствоваться бинарным OpenOffice.org или обойтись без него, а равно если собираетесь указать Portage другое место для сборки ПО, можете уменьшить размер этого раздела, но не более чем до 1,5 Гб).

От редактора: насколько я помню, OOo для промежуточных продуктов компиляции запрашивает 8-9 ГБайт; самостоятельная сборка его представляется мне достаточно бессмысленной - времени она требует очень много, а оптимизации практически не поддаётся - так что проще использовать прекомпилированный пакет; в этом случае в /var/куда_там_в_Gentoo_компилятся_объектные_модули резонно монтировать tmpfs: при памяти от 512 MБайт и swap от 1 ГБайт этого обычно хватает, а процесс сборки ускоряется ощутимо. - А.Ф.

От автора: 9 Гб - это требования к месту сборки OpenOffice.org в FreeBSD, в Gentoo Linux он собирается и на 3 Гб. Что же касается осмысленности его сборки, то при процессоре с частотой выше 1 ГГц всегда можно найти время для сборки OpenOffice.org из исходников, и собрано он будет против Ваших библиотек и с Вашими USE-флагами, коих на момент издания последней версии статьи существует ровно 14. - Д.Ц.

Что касается /opt и /usr, то эти разделы выполняют одну общую задачу - хранят код и данные исполняемых программ. Близость их задач заставляет задуматься о том, не стоит ли объединить их в одном разделе? Мой вывод: стоит! Мы отведём для один один раздел, после чего (позже) создадим символическую ссылку из /opt на /usr/opt. Также мы сделаем ещё одну ссылку, благодаря которой перенесём исходники (distfiles) из /usr в /home (что является вполне разумным выбором для новичка в Gentoo - если вдруг что-нибудь случится, исходники заново качать не придётся). Размер раздела в 4 Гб в таком случае выглядит вполне разумным выбором.

От редактора: я категорический сторонник выделения на отдельные файловые системы ветвей /usr/portage и /usr/portage/disfiles; кроме надёжности (а скачивание тарбалла с деревом портежей также требует времени или трафика), это позволяет, путём подбора оптимальных файловых систем и размера их логического блока, прибавить пять копеек производительности - А.Ф.

Вопрос с пользовательскими данными решается проще всего - эти данные требуют достаточно много места, но совершенно нечувствительны к скорости чтения/записи или местоположению на диске, а потому правильней всего расположить в конце диска по остаточному принципу. Осталось только отметить, что каталог /root мы открепим от базовой системы и перенесём в /home/root в целях экономии места. В качестве файловой системы для пользовательских данных можно использовать всё те же ext3 или ReiserFS.

От редактора: /home - обычно самый большой (на хорошем безлимитном канале забить музыкой и киношками пару сотен гигабайт - не проблема), поэтому ext3 я для него категорически не советовал бы - при аварийном завершении работы она, не смотря на все своё журналирование, все равно принудительно подвергается процедуре проверки целостности, а на 200 ГБайт это ого-го сколько времени; если размер /home ОЧЕНЬ велик - есть смысл подумать об XFS - именно для таких разделов она и предназначена; а вот отчленение /root от корня - просто неправильно: в аварийных ситуациях, когда на старте системы может не смонтироваться ничего, кроме /, суперпользователь рискует остаться без своих привычных конфигов - А.Ф.

От автора: Отчасти поддержу критику редактора в мой адрес. Файловую систему ext3 я не люблю и не использую, и вообще не вижу смысла в существовании журналируемых файловых систем кроме ReiserFS и Reiser4. А вот касаемо использования XFS я бы не был столь оптимистичен: положительные особенности этой файловой системы заключаются в более высоких скоростных показателях при больших размерах файлов (более 4 Гб, если мне не изменяет память), а вот к размеру раздела эта ФС безразлична. - Д.Ц.

Итого у нас получилось 6 разделов. Поскольку в x86-совместимых компьютерах не может быть более четырёх физических разделов, нам придётся создавать логические разделы:

Для того, чтобы всё это сделать, исполняем fdisk /dev/hda. В появившейся командной строке исполняем p для просмотра списка разделов. Если разделы есть, удаляем их командой d.

Когда все разделы удалены, создаём новые командой n, после чего командой a делаем второй раздел загрузочным и меняем тип первого раздела командой t. Раздел должен быть типа 82 ("Linux swap / Solaris"). Для сохранения результатов и выхода нажимаем w.

Когда работа в fdisk закончена, исполняем:

mke2fs /dev/hda1
mkswap /dev/hda2
mkreiserfs /dev/hda3
mkreiserfs /dev/hda5
mkreiserfs /dev/hda6
mkreiserfs /dev/hda7
swapon /dev/hda1
mkdir /mnt/gentoo
mount /dev/hda2 /mnt/gentoo
cd /mnt/gentoo
mkdirhier boot home/root/distfiles var usr usr/opt usr/portage
mount /dev/hda1 /mnt/gentoo/boot
mount /dev/hda5 /mnt/gentoo/var
mount /dev/hda6 /mnt/gentoo/usr
mount /dev/hda7 /mnt/gentoo/home
ln -s home/root root
ln -s opt usr/opt
ln -s root/distfiles usr/portage/distfiles

Всё, теперь переходим к подготовке окружения Gentoo.

Gentoo, сосуществующую с другими ОС

Здесь всё немного меняется, поскольку в игру вступают дополнительные разделы для других ОС, а пользовательские данные расщепляются. Поскольку не все ОС так неприхотливы в вопросе расположения на диске, мы установим все ОС, кроме Gentoo, сразу после нашего загрузчика (или раздела подкачки, если планируем его использовать).

Что касается данных пользователя, то помимо данных администратора и пользовательских настроек, которые не пригодятся в других ОС, у пользователя есть файлы с музыкой, текстами, картинками, фильмами и прочим контентом, который хотелось бы иметь доступным из под каждой ОС, установленной на компьютере. Чтобы это стало возможно, мы создадим раздел для таких данных, отформатировав его в FAT. Его размер мы рассчитаем по остаточному принципу. Кроме того, создавать раздел /home в таком случае не целесообразно, а потому дерево портэжей и исходники у нас останутся в разделе /usr, который мы по такому случаю увеличим.

От редактора: очень спорно: использование под данные FAT лишает возможности какого-либо разграничения доступа к файлам, что на домашней машине, используемой также женами, детьми и другими домашними животными, может иметь весьма печальные последствия (прецеденты известны); лучше хранить это мультимедийное хозяйство на линуксовой файловой системе, а для доступа к нему из Windows использовать explore2fs или соответствующий plug-in для Total Commander; правда, в этом случае выбор файловой системы сведётся к ext2/ext3, остальных, насколько я знаю, они не понимают - А.Ф.

От автора: На самом деле, вопрос жён, детей и домашних животных решается созданием нескольких разделов FAT по кол-ву пользоватлей. И если вся эта домашняя живность так вредоносна и разрушительна, разделы можно монтировать через пользовательские скрипты входа в систему (~/.bash_login, ~/.zsh_login или ~/.csh_login по вкусу), а вот использование explore2fs или соответствующих плагинов для Total Commander'а никого ещё ни до чего кроме суицида не доводило. - Д.Ц.

Итого:

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

От редактора: для уменьшения раздела FAT/VFAT/FAT32 можно использовать традиционный FIPS - запускается в сеансе эмуляции DOS; а вот сократить раздел NTFS можно как раз линуксовыми средствами - parted и его "мордами" qparted и gparted; правда, это требует установленного пакета ntfstools а из LiveCD в работоспособном состоянии я встречал его только на Knoppix - А.Ф.

Самостоятельно нужно будет передвинуть раздел с Windows (диск C:) так, чтобы до него на диске оставалось свободное место в объёме удвоенной оперативной памяти + 24 Мб. при этом размер раздела с Windows должен быть сведён к разумному минимуму, а "Мои документы" должны быть перенесены на другой раздел, который будет отстоять от раздела с Windows на 12,5 Гб, занимать всё место до конца жёсткого диска и быть логическим.

Остальное мы сделаем вместе. Исполняем fdisk /dev/hda. В появившейся командной строке создаём недостающие разделы командой n, после чего командой f исправляем таблицу разделов, командой a делаем первый раздел загрузочным и меняем тип второго раздела командой t. Раздел должен быть типа "82" ("Linux swap/Solaris"). Для сохранения результатов и выхода нажимаем w.

Когда работа в fdisk закончена, исполняем:

mke2fs /dev/hda1
mkswap /dev/hda2
mkreiserfs /dev/hda5
mke2fs /dev/hda6
mkreiserfs /dev/hda7
swapon /dev/hda2
mkdir /mnt/gentoo
mount /dev/hda6 /mnt/gentoo
cd /mnt/gentoo
mkdirhier boot var usr usr/home/root usr/opt usr/portage mnt/windows mnt/mydocs
mount /dev/hda1 /mnt/gentoo/boot
mount /dev/hda5 /mnt/gentoo/var
mount /dev/hda7 /mnt/gentoo/usr
ln -s usr/home home
ln -s home/root root
ln -s opt usr/opt

Всё, теперь переходим к подготовке окружения Gentoo.

Gentoo и Windows с загрузкой из Windows

Этот вариант имеет смысл выбирать в том случае, если Windows планируется оставить в качестве основной (как вариант - рабочей) ОС, а Gentoo поселить рядом для изучения/развлечения.

По разметке этот вариант похож на предыдущий с небольшой перестановкой: каталог /boot в отдельный раздел в этом случае выноситься не должен, а раздел подкачки должен быть расположен за разделом Windows. Выглядеть это будет так:

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

Самостоятельно нужно будет передвинуть раздел с Windows (диск C:) так, чтобы он начинался с самого начала диска и имел минимально разумный раздел; "Мои документы" должны быть перенесены на другой раздел, который будет отстоять от раздела с Windows на 12,5 Гб + удвоенный размер оперативной памяти, занимать всё место до конца жёсткого диска и быть логическим.

Остальное мы сделаем вместе. Исполняем fdisk /dev/hda. В появившейся командной строке создаём недостающие разделы командой n, после чего последовательными командами x, f и r исправляем таблицу разделов, командой a делаем первый раздел загрузочным и меняем тип второго раздела командой t. Раздел должен быть типа "82" ("Linux swap / Solaris"). Для сохранения результатов и выхода нажимаем w.

Когда работа в fdisk закончена, исполняем:

mkswap /dev/hda5
mkreiserfs /dev/hda6
mke2fs /dev/hda7
mkreiserfs /dev/hda8
swapon /dev/hda5
mkdir /mnt/gentoo
mount /dev/hda7 /mnt/gentoo
cd /mnt/gentoo
mkdirhier boot var usr usr/home/root usr/opt usr/portage mnt/windows mnt/mydocs
mount /dev/hda6 /mnt/gentoo/var
mount /dev/hda8 /mnt/gentoo/usr
ln -s usr/home home
ln -s home/root root
ln -s opt usr/opt

Всё, теперь переходим к подготовке окружения Gentoo.

Подготовка окружения Gentoo

В этом разделе всё будет проходить по заветам Руководства пользователя Gentoo (Gentoo Handbook).

Stage? Какой stage?

Раньше перед установкой системы пользователь должен был решить, что он хочет компилировать, а что можно оставить как есть. Теперь такого выбора нет, а потому с помощью любимого менеджера закачек скачиваем файл stage3-x86-[версия].tar.bz2 (x86 или amd64) и слепок с текущего дерева портэжей, разархивируем их:

cd /mnt/gentoo
tar -xjpvf stage*
tar -xjvf portage* -C usr

Подготовка к бою

Теперь, когда мы заготовили "лежанку" для нашей системы, требуется провести некоторую настройку, необходимую для дальнейшей работы. В любимом текстовом редакторе открываем /mnt/gentoo/etc/make.conf и редактируем его, сверяясь с документацией к gcc. У меня получилось вот что:

CFLAGS="-march=atlon-xp -O3 -fomit-frame-pointer -pipe"
CHOST="i686-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"

От редактора: если для временных продуктов компиляции использовать tmpfs, необходимости во флаге -pipe не будет - А.Ф.

Отлично. Теперь добавляем в тот же /mnt/gentoo/etc/make.conf функции MAKEOPTS="-j2" (эта опция ускорит установку системы), USE="" (в этой строке мы позже укажем наши программные преференции) и LINGUAS="ru" (вписываем наш язык системы; впрочем у меня эта переменная окружения вместо "ru" приравнена к "en", что будет вполне неплохим выбором и для Вас, если английским Вы владеете неплохо и предпочитаете более точный англоязычный интерфейс родному, но неточному и неудобному русскоязычному). Редактор (и файл в нём) пока не закрываем.

Установка базовой системы

Смена окружения

Теперь переходим в новое окружение. Эта операция нужна нам того, чтобы наши дальнейшие действия воспринимались как работа в Gentoo, а не в имеющейся системе. Для этого открываем консоль и в ней выполняем 2:

mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev
cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
chroot /mnt/gentoo /bin/bash
env-update;source /etc/profile

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

Portage-специфичные настройки

Прежде чем мы продолжим, нам необходимо обновить дерево портежей, что с лёгкостью достигается командой emerge --sync.

Теперь нам надо настроить переменную окружения USE - мощнейший инструмент настройки системы. В этой переменной хранится информация о том, какие дополнительные особенности программ мы хотим включить при сборке. К примеру, редактор gVim поддерживает несколько графических библиотек. Так, если мы включим флаг gtk, gVim будет использоваться с интерфейсом к GTK+, иначе с интерфейсом к Motif.

Итак, проверяем USE на наличие лишних флагов. Для этого открываем файл /mnt/gentoo/usr/portage/profiles/use.desc и выполняем emerge info в той консоли, в которой мы переходили в новое окружение. В выводе этой команды ищем строку USE="" и читаем её. Если что-то нужно убрать, вписываем в USE="" с минусом, если добавить - просто вписываем (без минуса). Удобно держать все флаги в алфавитном порядке, причём отдельно флаги с минусом, и отдельно - без минуса. У меня получилось следующее:

USE="3dnow Xaw3d a52 aac aalib acpi bash-completion bluetooth bzip2 cdr clamav dvd dvdr dvdread exif extras fbcon ffmpeg flac ftp gcj gdbm gif hal iconv imagemagick javascript lcms libclamav -mad mime mmx mng nptl offensive ogg pda pic png posix samba slang sse svg sysvipc tetex threads tidy tiff unicode usb vorbis wifi wmf xine xvid -berkdb -emboss -gnome -gstreamer -imlib -java -motif -oss -xmms"

Помимо прочего стоит включить в USE такие флаги как nls, pic и unicode - они понадобятся далее.

Чтобы при установке и последующих обновлениях glibc не тратить время на пересборку ненужных локалей, отредактируем (всё в том же текстовом редакторе) /mnt/gentoo/etc/locales.build, удалив имеющиеся там пункты и добавив ru_RU.UTF8/UTF8. После этого создаём файл /mnt/gentoo/etc/portage/package.use, куда вписываем sys-libs/glibc userlocales.

Здесь видимо стоит остановиться подробней. Так в Gentoo используется система файлов настройки Portage, имеющая особую иерархию, образуемую порядком чтения файлов. Т.е. сначала переменным присваиваются значения из первого файла, потом читается второй файл, настройки из которого добавляются к имеющимся. В случае конфликта приоритетом пользуются флаги файла, читаемого позже.

Самым первым читается /etc/make.profile, который вообще не рекомендуется изменять. Именно в этом файле задаются основные переменные, используемые в Portage. Следующим читается /etc/make.conf, в который пользователь вносит общие настройки для всех пакетов. Далее идут файлы /etc/portage/package.mask, /etc/portage/package.unmask и /etc/portage/package.use.

Первые два используются для наложения/снятия масок на файлы. Маски препятствуют установке файла, так что если внести строку >категория/пакет-версия в файл /etc/portage/package.mask, то этот пакет будет установлен только в версии не ниже указанной, а если добавить запись <=категория/пакет-версия в файл /etc/portage/package.unmask, то маска будет снята с указанного пакета в версиях от самой ранней до указанной включительно. Значки > и <= здесь называется atom и устанавливает зависимость от версии. Всего есть несколько видов таких зависимостей: > (последующая версия), >= (указанная или последующая версия), = (только указанная версия), <= (указанная или предшествующая версия), < (предшествующая версия).

Файл /etc/portage/package.use содержит сведения об индивидуальных флагах USE, и его синтаксис выглядит вот так: категория/пакет-версия флаг1 флаг2.

Эти три файла в совокупности читаются последними. Впрочем, кроме них читаются ещё и файлы, содержащие переменные окружения, которые могут понадобиться в процессе сборки (например, из /etc/env.d/02locale считываются LC_ALL и LANG), но эти настройки не могут пересекаться с специфичными для Portage.

Поменяв флаги USE пересобирём мир (калька с англоязычного "world", применяемого для указания всех портэжей в системе; не запутайтесь - в FreeBSD это слово обозначает гораздо меньший набор ПО), чтобы откалибровать её под свои нужды:

emerge -e world
emerge --depclean
emerge -uD world

Сборка базовой системы

Маленькое, но довольно полезное действие нужно совершить, прежде чем мы перейдём к доукомплектации нашей системы: нужно установить временную зону. Для этого отыскиваем в директории /usr/share/zoneinfo/ самую близкую к вашему местоположению географическую привязку и копируем её в файл /etc/localtime. В моём случае команда выглядела так:

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

Следующим шагом нам надо собрать и настроить ядро. Это делается с помощью специального скрипта в ядре, который предлагает пользователю интуитивно понятный интерфейс и некую степень автоматизации процесса. Хотелось бы отметить, что в ядре есть некая обязательная часть и дополнительные опции. Эти опции в большинстве случаев могут быть выкинуты из ядра, скомпилированы как модули или компилированы в ядро. Последнее имеет смысл для всего, что постоянно сопровождает компьютер: поддержка его основного железа и любых протоколов и файловых систем разделов на жёстком диске. Модулями можно сделать всякие подключаемые устройства, файловые системы на них и протоколы, связанные только с ними, а всё остальное вообще не нужно - если что, можно подключить дополнительно.

Итак, в консоли с окружением Gentoo исполняем следующее:

USE="-doc symlink" emerge gentoo-sources
cd /usr/src/linux
make menuconfig bzImage modules modules_install
cp arch/*/boot/bzImage /boot/kernel-`date --rfc-3339=date`
cp .config /boot/config-`date --rfc-3339=date`
make clean
cd /boot/
ln -s kernel-`date --rfc-3339=date` kernel

Исполнение этих команд займёт систему надолго, так что можно смело пойти заняться своими делами. Однако будет исключительно полезно почитать мануалы (инструкции) к командам управления пакетами: man portage, man ebuild, man 5 ebuild и man emerge. Прочтение этих инструкций займёт немного времени, но очень сильно поможет в быстром освоении и правильном использовании системы в дальнейшем.

Теперь доустановим некоторые необходимые утилиты:

Итак, опустив лишнее и добавив свои драйверы, исполняем:

emerge prelink syslog-ng vixie-cron reiserfsprogs dhcpcd slocate grub mirrorselect terminus-font

Конфигурирование новой системы

С помощью команды passw задаём пароль администратора. Теперь мы должны произвести необходимую настройку и доводку. Открываем и редактируем /mnt/gentoo/etc/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.
#
# See the manpage fstab(5) for more information.
#

# <fs>      <mountpoint> <type>   <opts><dump> <pass>

# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
/dev/hda1   /boot        ext2     noauto              0 0
/dev/hda2   none         swap     sw                  0 0
/dev/hda3   /            reiserfs noatime,notail      0 0
/dev/hda5   /var         reiserfs noatime,notail      0 0
/dev/hda6   /usr         reiserfs noatime,notail      0 0
/dev/hda7   /home        reiserfs noatime,notail      0 0
/dev/hdc    /mnt/cdrom   iso9660  noauto,ro,users     0 0
/dev/fd0    /mnt/floppy  auto     noauto              0 0

# NOTE: The next line is critical for boot!
proc        /proc        proc     defaults            0 0
none        /tmp         tmpfs    defaults            0 0

# glibc 2.2 and above expects tmpfs to be mounted at /dev/shm for
# POSIX shared memory (shm_open, shm_unlink).
# (tmpfs is a dynamically expandable/shrinkable ramdisk, and will
#  use almost no memory if not populated with files)
shm         /dev/shm     tmpfs    nodev,nosuid,noexec 0 0

При втором:

# /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.
#
# See the manpage fstab(5) for more information.
#

# <fs>      <mountpoint> <type>   <opts><dump> <pass>

# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
/dev/hda1   /boot        ext2     defaults            1 2
/dev/hda2   none         swap     sw                  0 0
/dev/hda3   /mnt/windows auto     defaults            0 0
/dev/hda5   /var         reiserfs noatime             0 0
/dev/hda6   /            ext2     defaults            1 2
/dev/hda7   /usr         reiserfs noatime             0 0
/dev/hda8   /mnt/mydocs  vfat     noatime             0 0
/dev/hdc    /mnt/cdrom   iso9660  noauto,ro,users     0 0
/dev/fd0    /mnt/floppy  auto     noauto              0 0

# NOTE: The next line is critical for boot!
proc        /proc        proc     defaults            0 0
none        /tmp         tmpfs    defaults            0 0

# glibc 2.2 and above expects tmpfs to be mounted at /dev/shm for
# POSIX shared memory (shm_open, shm_unlink).
# (tmpfs is a dynamically expandable/shrinkable ramdisk, and will
#  use almost no memory if not populated with files)
shm         /dev/shm     tmpfs    nodev,nosuid,noexec 0 0

При третьем:

# /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.
#
# See the manpage fstab(5) for more information.
#

# <fs>      <mountpoint> <type>   <opts><dump> <pass>

# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
/dev/hda1   /mnt/windows auto     defaults            0 0
/dev/hda5   none         swap     sw                  0 0
/dev/hda6   /var         reiserfs noatime             0 0
/dev/hda7   /            ext2     defaults            1 2
/dev/hda8   /usr         reiserfs noatime             0 0
/dev/hda9   /mnt/mydocs  vfat     noatime             0 0
/dev/hdc    /mnt/cdrom   iso9660  noauto,ro,users     0 0
/dev/fd0    /mnt/floppy  auto     noauto              0 0

# NOTE: The next line is critical for boot!
proc        /proc        proc     defaults            0 0
none        /tmp         tmpfs    defaults            0 0

# glibc 2.2 and above expects tmpfs to be mounted at /dev/shm for
# POSIX shared memory (shm_open, shm_unlink).
# (tmpfs is a dynamically expandable/shrinkable ramdisk, and will
#  use almost no memory if not populated with files)
shm         /dev/shm     tmpfs    nodev,nosuid,noexec 0 0

После удачного завершения редактирования /mnt/gentoo/etc/fstab открываем /etc/conf.d/net.example, раскомментируем и правим соответствующие строки и сохраняем как /etc/conf.d/net, правим /mnt/gentoo/etc/conf.d/hostname и /mnt/gentoo/etc/conf.d/domainname.

Теперь нужно приказать системе запускать некоторые сервисы при загрузке:

rc-update add syslog-ng default
rc-update add vixie-cron default
rc-update add domainname default
rc-update add net.eth0 default

Русификация/локализация/кириллизация

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

От редактора: под локализацией обычно понимают учёт местных (locale) языково-культурных особенностей, она напрямую не связана ни с поддержкой национальных языков (NLS), ни с обеспечением ввода/вывода символов, отличных от чистой латиницы; поэтому правильная установка локали (в формате язык_СТРАНА.предпочтительный_набор_символов, в наших условиях это будет выглядеть как ru_RU.koi8-r или, при тяге к прогрессу, ru_RU.utf8) через переменные пользовательского окружения почти обязательна (иначе возможны всякие неожиданности); при этом пользователя никто не обязывает читать коряво переведённые на русский сообщения или русские man-страницы: с помощью соответствующих переменных окружения можно сохранить английский как язык вывода системных сообщений, точку вместо запятой как десятичный разделитель (это требуется некоторым счётным программам), и так далее; а вот для суперпользователя практически необходимо сохранить умолчальную локаль (POSIX, она же C): некоторые программы просто отказываются собираться при другой локали - А.Ф.

Так вот, локазизацию Gentoo не умеет, так что выбор сокращается. Лично я ограничиваюсь кириллизацией, но этот выбор не навязываю.

Итак, в первую очередь нам потребуется задать локаль. Для этого мы создадим файл 02locale в каталоге /etc/env.d/. Если мы жаждем русификации, на надо вписать туда только LC_ALL=ru_RU.utf8. Если же речь идёт о кириллизации, то потребуется целых четыре строки:

LANG="ru_RU.utf8"
LC_ALL=""

Но помимо настроек локали нам требуется настроить экранный шрифт и параметры раскладки. Первое делается после установки шрифтов (emerge terminus-font в файле /etc/conf.d/consolefont: устанавливается консольный шрифт (CONSOLEFONT="ter-u14n"), после чего настраивается таблица перекодирования (CONSOLETRANSLATION="koi8-r").

Теперь осталось только указать значения раскладки клавиатуры в файле /etc/conf.d/keymaps (KEYMAP="-u ru-ms" и DUMPKEYS_CHARSET="koi8-r").

Всё, наша система установлена и сконфигурирована. Но до свободного полёта её пока не хватает возможности загрузиться.

Загрузчик

Если Вы помните, немного раньше, когда мы выбирали вариант разбивка диска, было три варианта. Если Вы выбрали первые два, мы будем настраивать GrUB, если третий, то ещё и NTLdr (но установку и настройку GrUB всё равно провести надо).

GrUB

Для установки GrUB выполняем в консоли с окружением Gentoo командуgrub. В появившейся командной строке GrUB, подставляя вместо X и Y цифры, соответствующие номенклатуре раздела (hd + номер диска начиная с нуля + номер раздела подряд начиная с нуля):

root (hdX,Y)
setup (hdX)

Если собираетесь загружать Linux силами Windows, то вместо (hdX) надо указать (hdX,Y) из предыдущей строки. Для завершения установки GrUB выполните quit.

Теперь в любимом текстовом редакторе создаём /boot/grub/grub.conf (или, если он уже есть) правим его, делая следующее:

timeout 5
default 1   # Здесь мы выбираем систему, которая загрузится по умолчанию
splashimage=(hdX,Y)/boot3/grub/splash.xpm.gz

title=Gentoo GNU/Linux
root (hdX,Y)
kernel /boot/kernel

Здесь возможен ряд дополнительных опций:

Установка GrUB завершена. Теперь, если мы не собираемся настраивать NTLdr, перезагружаемся, чтобы проверить работоспособность свежеустановленной Gentoo.

NTLdr

Этот метод загрузки интересен тем, что грузиться Linux будет с помощью загрузчика Microsoft NTLdr, идущего в комплекте с ОС от Microsoft. Для реализации такой схемы нам потребуется чистая флэш-карта или (в худшем случае) отформатированная дискета (она должна быть вставлена в дисковод).

Хочу предупредить читателя: я сам этого не делал, хотя знаю успешные случаи. Поскольку я не в курсе подробностей, изложу этот метод загрузки пошагово и схематично (все действия производятся в новой специально открытой консоли):

mount /mnt/mydocs
dd if=/dev/hda7 of=/mnt/mydocs/bsect.lnx bs=512 count=1
umount /mnt/mydocs
reboot

Теперь загружаемся под Windows, копируем файл D:\bsect.lnx в корень диска C:\ открываем в Блокноте (Notepad) файл C:\boot.ini, куда добавляем строку C:\bsect.lnx="Gentoo GNU/Linux". Перезагружемся, выбрав при загрузке пункт Gentoo GNU/Linux.

Доустановка

Завершение установки системы

Теперь мы находимся в базовой системе Gentoo, и перед нами встаёт выбор: либо мы ждём, пока установится наше пользовательское ПО (это может занять вплоть до недели), либо продолжаем работу и установку с LiveCD. Если мы делаем выбор в пользу ожидания, мы просто запускаем команды доустановки (в моём случае emerge nvidia-glx nvidia-settings w3m vim kde koffice k3b amarok ktorrent psi) и занимаемся своим делом, время от времени посматривая на экран и проверяя, не случилось ли чего. Выбор в пользу LiveCD означает перезагрузку, повторное монтирование всего и вся.

При этом может оказаться, что Вам требуется снять или, наоборот, поставить какой-нибудь флаг USE. Это вполне можно сделать путём внесения изменений в файл /etc/make.conf, однако после каждого такого изменения необходимо выполнять команду emerge --deep --newuse world.

Когда же процесс доустановки (и перезагрузки, если мы доустанавливали с LiveCD) будет завершён, надо будет провести вот такую операцию:

emerge --sync
emerge -e system
emerge -e system
emerge -e world
emerge --depclean
emerge -e world
etc-update

Такие сложности связаны с тем, что система была собрана нами на чужом ядре, с чужими /proc и /dev, которые могут отличаться от наших. А эти отличия могли при определённых условиях сказаться на нашем сборочном окружении, которое, возможно, теперь создаёт некорректные бинарники. Поэтому нам надо пересобрать это окружение, чтобы оно пришло в соотетствие нашему ядру (первый раз "emerge -e system"), пересобрать его, чтобы оно рказалось целостным (второй раз "emerge -e system"), пересобрать мир для того, чтобы получить каждый пакет с нужными собственными возможностями (первый раз "emerge -e world"), "срезать всё лишнее" ("emerge --depclean") и пересобрать мир второй раз для того, чтобы каждый пакет собрался с правильным пониманием окружающей среды (второй раз "emerge -e world"). Ну а чтобы система в результате оказалась посвежей, мы обрамили эти команды командами обновления дерева портэжей ("emerge --sync") и обновлением конфигурационных файлов ("etc-update").

Чтобы не заниматься обновлением системы вручную, настроим её на автоматическое еженедельное обновление. Для этого создадим в каталоге /etc/cron.weekly/ файл update.cron со следующим содержанием:

#! /bin/sh
emerge --sync
emerge --depclean
emerge -fuD world
emerge -uD world
env-update
source /etc/profile
etc-update

После этого останется только исполнить команду:

chmod +x /etc/cron.weeky/update.cron

Создание резервной копии

В дальнейшем какая-нибудь ошибка может напрочь убить систему. Чтобы это событие стало менее серьёзной проблемой, имеет смысл сделать резервную копию всего содержимого корневого каталога (вместо hda2 подставьте свой раздел):

dd if=/dev/hda2 | bzip2 -cz9 > /root/sysarch.tar.bz2

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

Напутствие

Всё, наша система доустановлена и донастроена. Осталось лишь подрехтовать настройки красивостей и почитать мануалы к установленным программам. Когда же и они будут прочитаны, милости просим на LinuxForum за ответами на дальнейшие вопросы (NB: также в этом отношении полезны Gentoo WiKi (русскоязычная страница), Gentoo Portage и Форумы Gentoo) и межпользовательской интеграцией и на OSRC.info за новостями из мира ОС.

Счастливого пути!


1 Использование этого метода возможно только при наличии ОС семейства NT (Microsoft Windows NT 3.5, Microsoft Windows NT 4.0, Microsoft Windows 2000, Microsoft Windows XP, Microsoft Windows 2003 и Microsoft Windows Vista).

2 Все последующие команды ввода выполняем в этой же консоли.

3 Вместо (hdX,Y)/boot надо подставлять путь к данным загрузчика. Так, если они лежат на разделе корневого каталога, находящегося на втором разделе первого диска, то путь будет выглядеть так: (hd0,1)/boot. Если же они расположены на отдельном разделе, идущем первым на первом диске, то вместо (hdX,Y)/boot нужно указывать только (hd0,0). В последнем случае фрагмент пути /boot опускается и в дальнейшем.

4 Коды разрешений:

640x480 800x600 1024x768 1280x1024
256 0x301 0x303 0x305 0x307
32k 0x310 0x313 0x316 0x319
64k 0x311 0x314 0x317 0x31A
16M 0x312 0x315 0x318 0x31B

капитальный скотч москва редкий сейчас. камень новая песок речной. Хотите работать в HeadHunter: работа. Составление резюме.