Итак, несмотря на то что в интернетах много материала по установке Gentoo из chroot (и это не считая рукокниги) оказалось, что тема все еще актуальна и востребована.
Установка будет описываться исходя из того, что читающий уже имеет некоторые навыки в среде GNU/Linux и имеет установленный (и рабочий) какой либо другой дистрибутив.
Для начала нам потребуется раздел на котором будет размещаться базовая система которую мы в последствии будем собирать. Подробно на этом я останавливаться не буду, вы всегда можете установить Gparted в любом дистрибутиве и переразметить диск отрезав если нужно место под новый раздел. Тоже самое можно сделать загрузившись с загрузочной флешки (или CD) которые предоставляет прекрасный проект SystemRescueCD.
После скачиваем два тарболла содержащие базовую, прекомпилированную систему (stage3) и тарболл с деревом портов (portage). Скачивать лучше под архитектуру amd64, но если ваш процессор не поддерживает данную архитектуру вы можете скачать stage3 под i686.
>> Скачать stage3-amd64
>> Скачать portage
>> Скачать stage3-i686
Следующим шагом нужно создать целевую директорию в которой непосредственно и будет производиться сборка и подмонтировать в нее раздел. Для примера это будет директория /gentoo
sudo mkdir /gentoo
sudo mount /dev/sdXy /gentoo
где «X» это буква физического диска(e.g a,b,c,d), а «y» номер раздела на этом физическом диске. После монтирования копируем в /gentoo скачанный тарболл stage3 так:
sudo cp stage3-'date'.tar.bz2 /gentoo
и переходим в эту директорию в терминале командой
cd /gentoo
Распаковываем тарболл stage3 в /gentoo
sudo tar -xvjpf stage3-'date'.tar.bz2
не забываем что ключи -xjpf обязательны. «x» — распаковать, «j» передает параметры утилите tar что архив пожат bzip2 и именно этот декомпрессор нужно использовать, «p» — сохраняет права на файлы, похерив которые ваша базовая система будет с вероятностью 100% неработоспособна, «f» — передает параметр распаковки в файл (не указав этот параметр tar будет пытаться записать выходные файлы на магнитную ленту). Ключ «v» необязателен, но рекомендуем, и включает режим verbose (разговорчивый режим) в котором будет детально показан процесс распаковки и отображены ошибки в случае их возникновении.
Распаковав базовую систему stage3 мы сможем наблюдать в /gentoo свою будущую систему. Теперь мы можем удалить далее уже ненужный архив stage3 командой
sudo rm stage3-'date'.tar.bz2
Теперь скопируем и разархивируем скачанный нами тарболл дерева портов(portage) в новую систему. Дерево портов находится относительно новой системы в /usr, а относительно системы из которой производится сборка этот путь будет выглядеть так /gentoo/usr
sudo cp portage-'date'.tar.bz2 /gentoo/usr
cd usr
(Не /usr, а именно usr)
sudo tar -xvjpf portage-'date'.tar.bz2
sudo rm portage-'date'.tar.bz2
Распаковав дерево портов нужно сделать chroot в эту систему, что грубо говоря позволяет запустить вашу Gentoo из любого другого дистрибутива посредством смены расположения корневой директории и окружения. Делается это (при условии что /gentoo у нас уже смонтирован) такой последовательностью команд:
sudo mount -t proc none /gentoo/proc
sudo mount -o bind /dev /gentoo/dev
sudo chroot /gentoo /bin/bash
Теперь мы в нашей Gentoo, что видно по изменившемуся пользователю в терминале. Как вы видите это гораздо проще чем скачивать семисотмегабайтный LIveCD и нарезав пытаться установить Gentoo с него. Тем более, скажу вам по секрету — с LiveCD мне так ни разу и не удалось нормально установить этот дистрибутив.
Для начала установим дату и обновим переменные окружения:
date 013018582011
(Первым пишется месяц, потом число, потом часы,минуты и год)
env-update && source /etc/profile
Сейчас нам требуется обновить дерево портов (оно конечно свежее, но лучше обновить). Для этого нам потребуется наличие интернет соединения. Если у вас есть роутер с поднятым DHCP интерфейсом, то возможно интернет уже есть на вашей машине. Проверить можно например попинговав yandex:
ping ya.ru
Если пинг не проходит, то надо настраивать сетевое подключение и посмотреть определилась ли вообще ваша сетевая карта. Для выполним команду
/sbin/ifconfig
Если вы видите как минимум два сетевых интерфейса eth0 и lo, то драйвер вашей сетевой карты нормально определился и сетевой интерфейс поднят. Теперь присупим к его настройке. Если вы используете PPPoE подключение инициализируемое не роутером, а самим компьютером, то можете прочитать ADSL при старте в Gentoo
Я использую роутер и статические IP адреса на машинах и опишу процесс настройки на этом примере. Те кто имеют отличный от этого способ подключения могут почитать рукокнигу. Открываем для правки файл в котором будут настройки сетевого интерфейса eth0:
nano -w /etc/conf.d/net
прописываем туда следующее
config_eth0=( "192.168.1.4 netmask 255.255.255.0 broadcast 192.168.1.255" ) routes_eth0=( "default via 192.168.1.1" )
dns_servers_eth0="195.38.32.3"
Собственно понятно, что в первой строке прописан статический IP адрес, широковещательный канал и маска подсети, во второй прописаны маршруты. В данном случае все пакеты по умолчанию отправляются на роутер у которого IP адрес 192.168.1.1. В третьей строке собственно DNS сервера провайдера. Эти настройки вам необходимо изменить в соответствии с особенностями вашей сети. Теперь создадим симлинк, чтобы при старте интерфейс eth0 поднимался одновременно с локальным интерфейсом loopback (net.lo)
ln -s /etc/init.d/net.lo /etc/init.d/net.eth0
Теперь проверим есть ли net.lo в составе запускаемых сервисов командой:
rc-config list |grep net.lo
Если его там нет, то добавляем:
rc-config add net.lo boot
Проверим наличие интернета также попинговав Яшу. Если интернет в chroot системе не работает, а в основной системе работает, тогда cоздадим файл /etc/resolv.conf и выполним
echo 'nameserver 195.38.32.3' > /etc/resolv.conf
195.38.32.3 это DNS сервер моего провайдера, вам естественно нужно сменить на свой.
Обновим дерево портов командой
emerge -avq --sync
Приступим к настройке конфигурационных файлов. Первым будет естественно make.conf. Откроем его для редактирования и впишем CFLAGS. Не буду тут описывать какие флаги использовать для каждого процессора, с ними вы всегда сможете ознакомиться с помощью Safe_Cflags Приведу пример для своего текущего и предыдущего процессора, соответственно это Core2Duo E8400 и Core2Duo E6320. Для E8400 под архитектуру amd64 флаги GCC выглядят так:
CFLAGS="-march=core2 -O2 -msse4.1 -ftree-vectorize -funroll-loops -mcx16 -msahf -g0 --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=6144 -pipe"
Для E6320 для i686 так: (E6320 поддерживает EMT64)
CFLAGS="-O2 -g0 -march=core2 -mmmx -mssse3 --param l1-cache-size=32 --param l1-cache-line-size=32 --param l2-cache-size=4096 -fomit-frame-pointer -mfpmath=sse,387 -pipe"
Пропишем некоторые переменные в /etc/make.conf
LINGUAS="ru"
GENTOO_MIRRORS="http://mirror.yandex.ru/gentoo-distfiles/"
зеркало откуда будем скачивать исходники. Yandex в моем случае лучший вариант.
INPUT_DEVICES="mouse keyboard"
Устройства ввода. Мышь и клавиатура
ALSA_CARDS="hda-intel"
Звук. У меня HDA Intel ALC888, для других соответственно hda-intel заменить на нужное
MAKEFLAGS="-j3"
Сколько ядер CPU задействовать при сборке. Значение расчитывается так: Количество ядер CPU+1. Для четырехядерника будет «-j5»
LANG="ru_RU.UTF-8"
Тут думаю все понятно. Системная кодировка и язык.
VIDEO_CARDS="nvidia"
Используемая видеокарта. (eg. nvidia, intel…etc)
DISTDIR="/Sources/"
Директория куда будут сохраняться скачанные исходники для последующей сборки.
PORTAGE_TMPDIR="/tmp"
Указывает portage использовать директорию /tmp для сборки и временных файлов которую для ускорения сборки лучше монтировать в RAM.
FEATURES="parallel-fetch -ccache -sandbox"
Используемые «фичи» системы portage. Как видите я использую только parallel-fetch что включает паралленьную закачку при сборке
PORTDIR_OVERLAY="/usr/local/portage"
Директория для локальных оверлеев. Туда можно добавлять свои ебилды и собирать их с помощью portage
ACCEPT_LICENSE="*"
Чтобы в будущем не мучаться с ограничением лицензий лучше сразу прописать «Принять все» Если в вас живет маленький Stallman можете пропустить этот пункт.
Поправим некоторые системные конф. файлы. Нас интересуют:
/etc/conf.d/clock, /etc/conf.d/consolefont, /etc/conf.d/hostname, /etc/conf.d/keymaps, /etc/locale.gen, /etc/rc.conf, /etc/fstab, /etc/hosts, /etc/env.d/02locale
/etc/conf.d/clock
Системные часы. Файл достаточно хорошо прокомментирован и трудностей возникнуть не должно.
/etc/conf.d/consolefont
Шрифт используемый в консоли (фреймбуфер). Чтобы на начальном этапе использовать нормальный шрифт с поддержкой кириллицы в консоли и не собирать иксы и кучу ненужных шрифтов прописываем
CONSOLEFONT="ter-k14n.psf.gz"
Внизу я прикреплю этот файл шрифта который до загрузки в систему надо положить в директорию
/usr/share/consolefonts
/etc/conf.d/hostname
Собственно имя хоста. Имя вашего компьютера, например
HOSTNAME="gentoo"
/etc/conf.d/keymaps
Раскладки клавиатуры в консоли (не влияет на иксовый эмулятор терминала). Я переключаю раскладку по CAPS_LOCK поэтому у меня выглядит так:
KEYMAP="ruwin_cplk-UTF-8"
SET_WINDOWKEYS="yes"
/etc/locale.gen
Список поддерживаемых системой локалей. Достаточно иметь одну ru_RU UTF-8, остальные можно или стереть или закоментить. Можно прямо после правки запустить
locale-gen
в
/etc/rc.conf
впишем:
UNICODE="yes" EDITOR="/bin/nano"
/etc/fstab
Опции монтирования разделов, в том числе и корневого. Если у вас вся система на одном разделе достаточно прописать в него:
/dev/sda1 /boot ext4 noauto,user,defaults 0 1 /dev/sda5 / ext4 noatime,nodiratime,dev,exec 0 1 естественно используемую файловую систему и раздел надо исправить на используемые вами. none /tmp tmpfs nr_inodes=200k,nodev,mode=01777,size=4G
Позволяет монтировать директорию /tmp в RAM которую у нас будет использовать portage для сборки о чем я уже писал выше.
/etc/hosts
Устанавливаем имя хоста
/etc/env.d/02locale
Руссификация.
LC_ALL="" LANG="ru_RU.UTF-8" LC_NUMERIC="POSIX"
Теперь обязательно запустим passwd и установим пароль root. Если этого не сделать, то залогиниться в новой системе мы не сможем из — за отсутствия пароля. Вводим его и подтверждаем
Далее пожалуй самый сложный момент для новичков — ядро. Дело в том что в Gentoo Linux не содержит в составе какое либо ядро и вам придется собрать его самим. На первом этапе можно собрать его с помощью genkernel. Я всегда и всем рекомендую иметь отдельный размером около 200Мб раздел под /boot для того чтобы можно спокойно загрузить вашу новую систему с ядром скажем от другого, уже установленного дистрибутива. Для этого достаточно лишь запаковать его модули и распаковать в /lib/modules целевой системы. Ядро можно собрать прямо из chroot и подмонтировав общий /boot в /boot собираемой системы установить его. Например из chroot команда будет выглядеть так:
mount /dev/sda1 /boot
а относительно главной соответветственно
sudo mount /dev/sda1 /gentoo/boot
На мой взгляд ни в одной статье нельзя полностью описать процесс установки, настройки и сборки Gentoo Linux. Это не Ubuntu где этот процесс идентичен, в Gentoo Linux каждая установка уникальна. Даже после прочтения рукокниги остается множество мелких нерешенных вопросов ответы на которые приходится искать в Интернете. Эта статья не перевод хэндбука, а скорее частный случай по установке и первоначальной настройке в которой возможно вы подчерпнете для себя что то новое что не описано в хэндбуке или других подобных гайдах.
Приложение | Размер |
---|---|
ter-k14n.psf_.gz | 1.76 кб |