Пример установки Gentoo 2007.0 из stage3 вручную, без использования инсталляторов. Архитектура x86, ядро 2.6, ru_RU.UTF-8.
1. Скачать и записать:
|- /stages/
|- /snapshots/
2. Загрузка с LiveCD.
boot:
..........
livecd root #
Настройка сети: # net-setup eth0
Проверяем: # ping ya.ru
Если всё ок, можно открыть handbook:
# links
Включение DMA (если не включилось автоматически): # hdparm -d1 /dev/hda
Тестирование производительности диска: # hdparm -tT /dev/hda
Запуск демона SSH для удалённой установки: # /etc/init.d/sshd start
3. Разбиваем диск.
# cfdisk
Name Flags Part Type FS Type Size
hda1 boot primary Linux 64M
hda2 primary LinuxSwap (82) 1024M
hda3 primary Linux 10000M
hda4 primary Linux *Mhda1: Под /boot 32-64Мб.
hda2: Под swap 1-2Гб. Под swap не обязательно выделять отдельный раздел, можно использовать под него файл на жёстком диске (не пробовал).
hda3: Под root 10-15Гб.
hda4: Остальное под /home. Под distfiles, packages и под хлам типа музыки, фильмов и прочего.
Создаем файл подкачки.
Форматируем: # mkswap /dev/hda2
и активизируем: # swapon /dev/hda2
Форматируем linux-разделы.
/boot в ext2: # mke2fs /dev/hda1
/ и /home в reiserfs:
# mkreiserfs /dev/hda3
# mkreiserfs /dev/hda4
Монтирование разделов.
Теперь, когда разделы созданы, а файловые системы размещены, настало время смонтировать (подключить к системе) эти разделы. Смонтируем корневой, загрузочный и home разделы:
# mount /dev/hda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/hda1 /mnt/gentoo/boot
# mkdir /mnt/gentoo/home
# mount /dev/hda4 /mnt/gentoo/home
4. Распаковка установочных файлов Gentoo.
Проверяем дату/время: # date
Необходимо выставить время по UTC.
Корректируем: # date MMDDhhmmYYYY
Распаковываем тарбол со stage3:
# cd /mnt/gentoo
# tar -xvjpf /mnt/cdrom/stages/stage3-i686-2007.0.tar.bz2
Распаковываем дерево портеджей:
# tar -xvjf /mnt/cdrom/snapshots/portage-latest.tar.bz2 -C /mnt/gentoo/usr
Разберёмся с distfiles.
Все пакеты с исходными кодами должны храниться в папке по умолчанию /usr/portage/distfiles (с LiveCD она видна как /mnt/gentoo/usr/portage/distfiles). Пакеты при установке будут браться сначала оттуда, а в случае их отсутствия - скачиваться с интернета.
root-раздел не резиновый, distfiles планирую держать на home-разделе (/home/gentoo/distfiles).
# mkdir /mnt/gentoo/home/gentoo
# mkdir /mnt/gentoo/home/gentoo/distfiles
Для обладателей LiveCD(DVD), с записанными на нём distfiles, необходимо скопировать всю папку distfiles с LiveCD:
# cp -rv /mnt/cdrom/distfiles /mnt/gentoo/home/gentoo
5. Настройка параметров компиляции.
Для оптимизации Gentoo вы можете создать ряд переменных, которые повлияют на поведение Portage. Для хранения ваших настроек предназначен конфигурационный файл Portage - /etc/make.conf.
# nano /mnt/gentoo/etc/make.conf
CHOST="i686-pc-linux-gnu"
В переменной CHOST определяется, для какой архитектуры скомпилирована система. В ней уже должно быть установлено правильное значение. Не изменяйте эту переменную, т.к. это может повредить вашу систему. Если переменная CHOST, по-вашему, выглядит неправильно, возможно, вы используете не тот архив stage3.
CFLAGS="-O2 -march=prescott -pipe -fomit-frame-pointer"
В -march=впишите_своё. Узнать тип процессора можно по: # cat /proc/cpuinfo
Примеры march смотрим в .
Не использовал "-ffast-math":
Уберите "-ffast-math"! Генерируемый gcc код "-ffast-math" с любыми "-O" может приводить к неправильным результатам вычислений. Рекомендую для вашего случая использовать вместо "-ffast-math" что-то типа "-m3dnow -mfpmath=sse". Будет и быстрее и стабильнее. "-fomit-frame-pointer" можно вообще убрать: оно по дефолту включено еще в "-O2".
Не использовал "-О3", ибо непонятно.
Добавил MAKEOPTS="-j2", но взял на заметку:
Было подобное с компиляцией ядра в виртуальной машине, причем проблема случайным образом то повторялась, то нет. Дал больше памяти - проблема исчезла. Имхо дело в опции MAKEOPTS="-j2". Видимо двум экземплярам компилятора памяти не хватает, надо в один поток компилить.
Тут же сразу добавил: LINGUAS="ru", чтобы пакеты ставились с русскоязычным интерфейсом, если он есть.
При наличии distfiles на локальном фтп, можно прописать зеркало: GENTOO_MIRRORS=";
(В корне фтп должна находиться папка distfiles, содержащая пакеты.
Внимание. Не все пакеты скачиваются с зеркала, за некоторыми идёт обращение сразу, по жёстко прописанному адресу, в интернет, невзирая на то, что пакеты есть на зеркале.)
Прописываем путь к distfiles: DISTDIR="/home/gentoo/distfiles"
Путь для хранения бинарных версий пакетов: PKGDIR="/home/gentoo/packages"
Две строки для elogv:
PORTAGE_ELOG_CLASSES="warn error log qa"
PORTAGE_ELOG_SYSTEM="save"
Любители использовать нестабильные (ещё находящиеся в стадии тестирования) пакеты, могут сразу же прописать: ACCEPT_KEYWORDS="~x86"
6. Установка базовой системы Gentoo.
Перед тем, как перейти в новую среду, осталось сделать одно дело: скопировать информацию о DNS (системе доменных имен) в файл /etc/resolv.conf. Это нужно, чтобы при переходе сохранить работоспособность сети. В файле /etc/resolv.conf содержатся адреса серверов имен, используемых в вашей сети.
Копирование информации о DNS (параметр "-L" нужен, чтобы случайно не скопировать символьную ссылку):
# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
(с) handbook
Монтирование файловых систем /proc и /dev.
Смонтируйте файловую систему /proc в /mnt/gentoo/proc, чтобы после изменения корневого каталога устанавливаемая система смогла обращаться к информации, предоставляемой ядром, а затем создайте привязку монтирования файловой системы /dev.
Монтирование /proc и /dev:
# mount -t proc none /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev
Переход в новую среду:
# chroot /mnt/gentoo /bin/bash
# env-update && source /etc/profile
Всё, вы оказались "внутри" вашего будущего Линукса. Команда chroot поменяла корневую вершину на /mnt/gentoo и она стала для вас /. Вы внутри Линукса на жестком диске. На LiveCD всегда можно переключиться к примеру в другой консоли (Alt+F2, Alt+F3 и т.д.).
Настройка Portage.
Если есть интернет: # emerge --sync
Остальные: # emerge --metadata
На предложение обновить portage, делаем: # emerge portage
Обновляем, если необходимо, конфиги: # dispath-conf
(всегда обновляем внимательно, смотрим что удаляет и что добавляет, и решаем, нужно нам это или нет)
Выбор нужного профиля. *опционально* *пример*
Выяснение используемого профиля: # ls -FGg /etc/make.profile
lrwxrwxrwx 1 48 Apr 8 18:51 /etc/make.profile -> ../usr/portage/profiles/default-linux/x86/2006.1/
Выяснение всех существующих профилей: # ls /usr/portage/profiles/default-linux/x86/ -l
drwxr-xr-x 2 portage portage 160 Май 8 04:39 2006.0
drwxr-xr-x 4 portage portage 176 Фев 12 23:36 2006.1
drwxr-xr-x 4 portage portage 176 Апр 14 06:06 2007.0
...
Как видно, существует более новый профиль (2007.0), можно переключиться на него, хотя это делать и не обязательно (пока текущий профиль не объявлен "deprecated").
# ln -snf /usr/portage/profiles/default-linux/x86/2007.0 /etc/make.profile
Для некоторых архитектур также предусмотрены подпрофили desktop и server. Если есть желание, можете выбрать desktop. USE-флагов по умолчанию прибавится. Я предпочитаю прописывать нужные флаги самостоятельно.
Настройка переменной USE.
Для начала поставим ufed: # emerge ufed
Смотрим какие USE-флаги у нас уже прописаны: # emerge --info
Находим там строчку "USE=…" и смотрим флаги. Определённо нам не нужен ipv6. Запускаем # ufed, набираем "ipv6" и снимаем крестик (отключаем). Справа видно краткое описание флага. [Enter] - Y - сохранить изменения. В /etc/make.conf добавится переменная USE="-ipv6". Думаю, принцип понятен.
Не советую пока добавлять новые флаги.
Региональные параметры GLIBC
Скорее всего, вы будете использовать в системе один-два набора региональных параметров. Нужные регионы можно указать в /etc/locale.gen:
# nano /etc/locale.gen
ru_RU.UTF-8 UTF-8
# Если есть желание, можно добавить и другие локали:
#en_US ISO-8859-1
#en_US.UTF-8 UTF-8
#ru_RU.KOI8-R KOI8-R
Следующий шаг — запустить locale-gen. Это сгенерирует настройки для всех регионов, указанных в файле /etc/locale.gen:
# locale-gen
7. Настройка ядра.
Наверное, самый продолжительный и ответственный пункт. От того, как вы настроите ядро, будет зависеть, загрузится ли ваша система вообще или нет. Советую делать очень внимательно и пошагово, руководствуясь мануалом по настройке ядра (ссылка ниже).
Установка временной зоны.
Устанавливаем свой часовой пояс:
Ищем свою зону: # ls /usr/share/zoneinfo/
Устанавливаем: # cp /usr/share/zoneinfo/Asia/Krasnoyarsk /etc/localtime (мой часовой пояс)
Проверьте дату/время: # date
Установка исходных кодов ядра: # emerge gentoo-sources
Должен поставиться один пакет - gentoo-sources, если это не так, читаем handbook.
Далее будем настраивать ядро, а для этого желательно знать какое железо стоит на машине. Смотрим во второй консоли (Alt+F2):
# lspci (входит в состав пакета pciutils)
# lsmod (отображает список модулей, которые загрузил LiveCD)
А в первой переходим к конфигу ядра:
# cd /usr/src/linux
# make menuconfig
Настройку ядра производил по этому руководству:
После настройки сохраняем изменения и выходим.
Компилируем ядро: # make && make modules_install
Копируем ядро в /boot: # cp arch/i386/boot/bzImage /boot
8. Настройка параметров системы.
Параметры файловых систем.
Описываем свойства своей файловой системы в /etc/fstab:
# nano -w /etc/fstab
У меня получилось:
/dev/hda1 /boot ext2 noauto,noatime 1 2
/dev/hda3 / reiserfs noatime 0 1
/dev/hda2 none swap sw 0 0
/dev/hda4 /home reiserfs exec,rw 0 1
/dev/hdc /mnt/cdrom iso9660 noauto,user,ro 0 0
#/dev/fd0 /mnt/floppy auto noauto,user 0 0
shm /dev/shm tmpfs nodev,nosuid,noexec 0 0Параметры сети.
Установка имени узла (машины): # nano /etc/conf.d/hostname
HOSTNAME="gentoo"
Пример настройки сетевой: # nano /etc/conf.d/net
config_eth0=( "192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255" )
routes_eth0=( "default via 192.168.1.1" )
dns_servers_eth0="192.168.1.1"
dns_domain_lo="WORKGROUP" # рабочая группа?
Добавление net.eth0 в уровень запуска default (автозагрузка):
# rc-update add net.eth0 default
Указание сведений об узлах сети: # nano /etc/hosts
127.0.0.1 gentoo.WORKGROUP gentoo localhost
Параметры системы.
Задаем пароль администратора: # passwd
Устанавливаем более приятный шрифт для консоли:
# emerge terminus-font
# nano /etc/conf.d/clock
CLOCK="local" (вместо UTC)
TIMEZONE="Asia/Krasnoyarsk" (измените на свою)
CLOCK_OPTS="--directisa" (только для ноутбуков)
Локализация: # nano /etc/env.d/02locale
LC_ALL=""
LANG="ru_RU.UTF-8"
LC_NUMERIC="POSIX"
# nano /etc/rc.conf
UNICODE="yes"
# nano /etc/conf.d/consolefont
CONSOLEFONT="ter-k14n"
# nano /etc/conf.d/keymaps
KEYMAP="ru-ms" # можно попробовать "-u ru4"
SET_WINDOWKEYS="yes" # Опционально
DUMPKEYS_CHARSET="koi8-r"
9. Установка нужных системных средств.
Установка системной службы журналирования:
# emerge syslog-ng
# rc-update add syslog-ng default
Утилиты для обслуживания файловых систем:
# emerge reiserfsprogs
10. Настройка начального загрузчика.
Установка GRUB: # emerge grub
Создание grub.conf: # nano /boot/grub/grub.conf
default 0
timeout 10
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title=Gentoo
root (hd0,0)
kernel /boot/bzImage root=/dev/hda3
Запускаем grub: # grub
grub> root (hd0,0) //раздел с /boot
grub> setup (hd0)
grub> quit
Где: hd0,0 - раздел /boot (/dev/hda1), первый 0 - номер винта (hda=0, hdb=1 и т.д.), второй 0 - номер раздела (hda1 = 0, hda2 = 1 и т.д.
setup hd0 - установка в MBR первого винта в системе.
Размонтирование всех разделов и перезагрузка.
# exit
cdimage # cd
cdimage ~# umount /mnt/gentoo/boot /mnt/gentoo/home
cdimage ~# umount /mnt/gentoo/dev /mnt/gentoo/proc
cdimage ~# umount /mnt/gentoo
cdimage ~# reboot
11. Послесловие.
Если система загрузилась - поздравляю! Значит вы удачно сконфигурировали ядро, по-крайней мере для загрузки ^_^
Проверьте дату/время: # date
Проверьте набор/отображение русских букв (переключение раскладок - правый Ctrl).
Запустите # nano, обратите внимание на строки меню внизу, корректно ли отображаются?
# locale выдаёт ru_RU.UTF-8 везде, кроме LC_NUMERIC?
Возможные проблемы:
Err: Ошибка сразу после заставки grub
Неверно сконфигурирован grub, неверно указан раздел /boot. Можно поправить прямо в меню выбора системы, кнопки e - edit, b - boot.
Err: Ошибка при монтировании root: Kernel panic… Unable to mount root fs on unknown-block(0,0)
Если винт IDE - в ядре не включена его поддержка.
Device Drivers --->
<*> ATA/ATAPI/MFM/RLL support --->
<*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support --->
<*> Include IDE/ATA-2 DISK supportтам же, ниже: [*] PCI IDE chipset support
<*> Intel PIIXn chipsets support (мой чипсет)Обязательно включать поддержку в ядро, а не модулями.Hint: Загружаемся с LiveCD и редактируем ядро:
cdimage ~# mount /dev/hda3 /mnt/gentoo
cdimage ~# mount /dev/hda1 /mnt/gentoo/boot
cdimage ~# mount /dev/hda4 /mnt/gentoo/home
cdimage ~# mount -t proc none /mnt/gentoo/proc
cdimage ~# mount -o bind /dev /mnt/gentoo/dev
cdimage ~# chroot /mnt/gentoo /bin/bash
# env-update && source /etc/profile
# cd /usr/src/linux
# make menuconfig
# make && make modules_install
# cp arch/i386/boot/bzImage /boot
# exit
cdimage ~# umount /mnt/gentoo/boot /mnt/gentoo/home
cdimage ~# umount /mnt/gentoo/dev /mnt/gentoo/proc
cdimage ~# umount /mnt/gentoo
cdimage ~# reboot
(возможно некорректное отображение рамочек в menuconfig)
