Openbox. Открывай свою коробку!
emerge -av openbox
Теперь вспомним, что мы обычно видим при входе в систему? Правильно, запрос имени и пароля. Причём, довольно красивый запрос. Для этого служат *dm, как то xdm(базовая и не очень красивая), kdm(относится к KDE), gdm(относится к GNOME). В хэндбуке также описан SLiM. Вот его и поставим.
emerge -av slim
Теперь нужно всё настроить так, чтобы slim включался автоматически после загрузки, а потом запускал openbox.
Crax, pax, fax!
X
Или
startx
Как и следовало ожидать, ничего не получилось. Вылетела ошибка:
(EE) S3VIRGE(0): Internal error: invalid bpp (32) in S3VScreenInit
А ещё написано, что у нас нет конфига, поэтому грузится дефолтный. Надо создать. А чтобы не писать с нуля, скопируем образец и будем его изменять:
cp /etc/X11/xorg.conf.example /etc/X11/xorg.conf
Далее, как и в случае с GRUB, настройке можно посвятить отдельную книгу. Позже вставлю сюда, что получилось в итоге. Сейчас неудобно доставать.
йаУзелок
man cp
Нам нужны:
-p Сохраняет исходные параметры файла, такие как владелец, группа, права доступа (включая suid и sgid биты), время последней модификации и время последнего доступа к файлу. В случае, если установка владельца или группы приводит к ошибке, suid и sgid биты сбрасываются. (Заметим, что впоследствии исходный файл и его копия могут иметь разное время последнего доступа, так как операция копирования является доступом к исходному файлу).
-R Копировать каталоги рекурсивно; правильно обрабатывать ситуации, когда попадаются объекты, не являющиеся обычными файлами или каталогами. (Так, копией FIFO или специального файла будет также являться FIFO или специальный файл).
-P Не разименовывает никакие символьные ссылки, ни заданные в списке параметров, ни встретившиеся во время рекурсивного копирования. Просто копирует их как символьные ссылки.
-v Чтоб всё-всё видеть))
Очевидно также, что не нужно копировать /proc и /dev.
Поэтому попробуем так:
cp /{bin,boot,etc,home,lib,opt,root,sbin,sys,usr,var} -RPpv /mnt/exthdd/rover
Я так понимаю, /dev, /proc, /tmp создадутся автоматически. Пишем:
df -i
Сейчас на корневом разделе 198400 айнодов. С таким числом заполняется 56% диска. Значит придётся увеличить их число раза в 2 при создании новой файловой системы. Хотя, почему обязательно Ext3? Попробую-ка создать ReiserFS. В ней, говорят айНоды динамически создаются. И ориентация на кучу мелких файлов не помешает - дерево портежей ведь и есть большая куча мелких файлов.
Загружаемся с Minimal Live CD, монтируем внешний диск, создаём новую ReiserFS на жёстком диске и подключаем его.
mkdir /mnt/exthdd
mount /dev/sda1 /mnt/exthdd
mkreiserfs /dev/hda1
mount /dev/hda1 /mnt/gentoo
cd /mnt/exthdd/rover
cp * -RPpv /mnt/gentoo
Попробуем загрузиться. А поддержку-то в ядре выключили! Рэйзер не заработает((
Снова грузимся с CD и делаем:
mount /dev/hda1 /mnt/gentoo
mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev
chroot /mnt/gentoo /bin/bash
mount /dev/sda1 /mnt/exthdd
env-update
source /etc/profile
Теперь делаем дело. Точнее все дела:
grub //Заново установим GRUB
emerge reiserfsprogs
cd /usr/src/linux
make menuconfig
make clean && make && make modules_install
mv /boot/linux-2.6.25-gentoo-r7 /boot/linux-2.6.25-gentoo-r7.old
cp ./arch/x86/boot/bzImage /boot/linux-2.6.25-gentoo-r7
Ядро чистилось/собиралось/ставилось ровно 1 час.
Ну что, ребут?
reboot
Так вот. До конца опять не загрузилась. Хоть файловую систему теперь видит. Надо создать в папке /dev пару ссылок на устройства, без которых консоь не запустится:
mknod -m 660 console c 5 1
mknod -m 660 null c 1 3
Так должно получиться. Блин, говорит, что фаловая система не ext2! Ясен пень! А он её e2fsck-ом проверяет! Меняем fstab...
"Ура! Заработало!" (с) Кот Матроскин
Кстати, теперь занято не 56%, а всего 40%. Ине определённо нравится эта файловая система! Пытаемся снова установить Иксы. Осталось всего 40 пакетов.
Ну всё, спокойной ночи.
GUI = Graphical && User && Interface
INPUT_DEVICES="mouse keyboard"
VIDEO_CARDS="s3virge"
А теперь пора:
emerge -av xorg-x11 && date
Всё, я пошёл спать, утром узнаю, во сколько закончилась компиляция (сейчас 00:10 22.09.2008)
UPD: Так, установка сказала, что кончилось место. Посмотрел df, а там нету /dev/hda1 :-( Проверил fstab, выяснил, что забыл там поставить слэш в строке для /dev/hda1. Исправил, перезегрузил, ставлю снова.
UPD2: Всё рано не хватвает места. Перенёс /var/tmp на внешний жёсткий. Пусть всё компилится там, а на ноут копируются только готовые бинарники.
Тогда и только тогда, когда...
nano /etc/fstab
Вписываем туда одну строку для единственного раздела:
/dev/hda1 ext2 noatime 0 1
Изменим сетевое имя компа на что-то отличное от localhost. Оно, кстати отображается в консольном приглашении после имени пользователя и @:
nano /etc/conf.d/hostname
Финальная прямая к запуску системы. Устанавливаем пароль суперпользователя:
passwd
После этого я на всякий случай добавил EXTENDED_KEYMAPS="ru" в /etc/conf.d/keymaps
При необходимости редактируем /etc/conf.d/clock
Устанавливаем необходимые системные утилиты.
- Служба логгирования будет записывать всё, что происходит в системе.
emerge syslog-ng
Добаляем её в автозапуск:
rc-update add syslog-ng default
Я его не установил. Компиляция запарывалась на gtype.c - Системный планировщик (демон синхронизации)
emerge vixie-cron
Добаляем её в автозапуск:
rc-update add vixie-cron default
emerge grub
Заходим в настройку загрузчика:
nano /boot/grub/grub.conf
Настройка загрузчика заслуживает отдельного обсуждения, поэтому я приведу то, что получилось у меня:
Ядра - чистый изумруд!
emerge -av gentoo-sources
Опция v нужна для того, чтобы при установки выводился максимум информации, опция a - для того, чтобы перед установкой можно было посмотреть на то, что ты собираещься установить, и в случае чего отменить установку.
Исходники лежат в папке /usr/src. В любой момент на действующее ядро должна указывать ссылка /usr/src/linux. Идём в эту папку и начинаем настраивать ядро:
cd /usr/src/linux
make menuconfig
Это очень ответственный этап. Если мы не включим что-то нужное, система будет работать криво. А если включим всё, получится монстр, которому понадобится десятипроцессорный кластер для работы.
Processor type and features -> Processor Family -> PentiumII/Celeron(pre-Coopermine)
X File Systems -> Reiser FS
Bus Options -> PCCard support -> ***
(M) Sound -> ALSA -> PCI Devices -> ESS ES1938/1946/1969 (Solo-1)
(X) Sound -> OSS
Вроде, всё. Теперь собираем ядро и устанавливаем модули (например, для звука):
make && make modules_install
Копируем полученное ядро туда, откуда оно будет запускаться при старте системы:
cp ./arch/x86/boot/bzImage /boot/linux-2.6.25-gentoo-r7
"Дом хороший, даже печка есть..."
fdisk /dev/hda1
Смотрю существующую таблицу:p
Удаяю все разделы:d
Создаю свой раздел:n
p //Раздел первичный
1 //Номер раздела
Проверяю, что получилось: p
Сохраняю таблицу разделов:w
Теперь создаём на нашем единственном разделе файловую систему:
mke2fs /dev/hda1
Отсутствие сети заставляет перенести необходимые файлы на внешнем жёстком диске. Ну нет у меня большой флэшки! А потребуются два файла:
- Stage3-*.tar.bz2 - готовая версия файловой системы, которую нужно просто залить на пустой раздел, чтобы сделать из него раздел с Gentoo
- Portage-*.tar.bz2 - дерево "портежей" - информация обо всём доступном для установки программном обеспечении
mkdir /mnt/exthdd
И монтируем его (разумеется, подключив кабель к ноуту):
mount /dev/sda1 /mnt/exthdd
Теперь берём файлы:
cp /mnt/exthdd/stage3*.tar.bz2 /mnt/gentoo
cp /mnt/exthdd/portage*.tar.bz2 /mnt/gentoo
И распаковываем их:
tar xvjpf /mnt/gentoo/stage3*.tar.bz2
tar xvjf /mnt/gentoo/stage3*.tar.bz2 -C /mnt/gentoo/usr
Теперь настало время войти в свежеприготовленную систему. Но сначала нужно подключить к ней некоторые части нашей "живой" системы:
mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev
Вот теперь можно:
chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile
export PS1="(chroot) $PS1"
Всё! Мы дома! Пора его обустроить.