Фотогалереи

Услуги

Помощь при использовании сайта

Установка Gentoo Linux из chroot

Итак, несмотря на то что в интернетах много материала по установке 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_.gz1.76 кб
4.8
5 votes
Ваша оценка: Нет


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".
Аватар пользователя zeroed

Arch Linux - наше все! Ставиться мгновенно и не надо ниче конпелять днями и ночами. Не чуть не медленнее генты работает, сплошная выгода во всем.

Аватар пользователя admin
zeroed пишет:

Arch Linux - наше все! Ставиться мгновенно и не надо ниче конпелять днями и ночами. Не чуть не медленнее генты работает, сплошная выгода во всем.

Да никто даже с тобой в этот бесмысленный спор вступать не будет - тут дело вкуса, предпочтений...etc.

Согласен, Gentoo долго собирать, но все же отличия по производительности есть и они заметны на глаз и явно не в пользу Арча. Я юзал Арч и этот дистрибутив мне нравился, но когда я понял что слишком много времени трачу на кастомизацию в нем под себя я подумал, что гораздо проще будет собрать Gentoo. Что собственно и сделал. Gentoo нужна только тогда, когда четко понимаешь зачем она тебе.

Аватар пользователя anonymous

Спасибо! После этой статьи допёр чего и куда, хотя дальше (иксы и т. д.) накосячил слегка, вписал ~x86 в make.konf вместо x86, а когда разобрался, то glibc откатывать показалось сложнее чем переустановить с нуля.
Gentoo оживила бук, - ранее Linux был для меня областью к экспериментам, а сейчас пересел только на них, т. к. новый, добытый по глупости, винт с сектором 4096 байт ей не нравится насмерть вешает XP, для семёрки машинка весьма слабовата. Линух оказался наименее болезненным решением, а вообще без винды оказывается можно жить!

Аватар пользователя admin

"~" довольно опасно делать. Особенно новичку, так как может повылазить много всяких глюков справиться с которыми не всегда возможно. Лучше сидеть на stable и размаскировывать необходимый софт если в его новой версии появился какой либо нужный функционал.

P.S. Жить без винды можно, а иногда и нужно.