Установка gentoo
Feb. 21st, 2018 01:40 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Что-то я каждый раз с новой железякой начинаю рыться в интернете, что там да как.
Для начала грузимся с systemResque. Скачать образ можно отсюда, а здесь почитать, как его записать на флешку. Мне пришлось грузиться в режиме "disable kernel-mode-settings", т.к. стандартный зависал на попытке получения системного времени из hardware clock.
Прежде всего, если это новый компьютер, заменяем GPT на MBR. Естественно, в биосе отключаем всякую идиотскую муть вроде EFI и т.п. ненужного дерьма.
Дальше сперва-наперво настраиваем сеть (ifconfig, route, /etc/) и по необходимости устанавливаем переменные XXX_proxy. На рабочем компьютере у меня по умолчанию NAT с форвардингом отключены, поэтому от рута надо запустить скриптик:
До скачивания образа нужно разбить диск. Я последнее время целиком системный диск делаю корнем, чтобы не париться. В случае с ноутбуком (где несчастных 465ГБ жесткого диска) это тем более необходимо. (кстати, оказалось, что на заказанном ноутбуке несмотря на явное "операционная система: отсутствует" была зачем-то установлена дебильная десятка; хорошо хоть не наляпали уродливых этикеток). Файловая система — reiserfs или ext4. Предпочитаю reiserfs (главное - не забыть потом при настройке ядра включить ее поддержку в ядро).
Монтируем корень в /mnt/gentoo и качаем туда stage3 (stage3 проще взять с зеркала yandex). Кстати, проверять целостность витой пары можно при помощи свитча: суем в соседние гнезда концы шнурка, если соответствующие светодиоды загорятся, все ОК.
Удобней всего сразу же зайти по ssh на "пациента" (для этого сначала надо сменить пароль рута). Тогда можно копипасту втыкать из браузера и т.п. Stage3 лучше сразу взять "no-multilib". Скайп не нужен.
Распаковываем stage3 (tar -xf).
Дальше копируем make.conf из существующей системы в целевую, редактируя необходимое (лучше поменьше оставлять разрешающих флагов). Вот так, например:
Сразу же можно заполнить информацию о прокси, DNS и настройках сети; скопировать /etc/profile.d и т.п. Или сделать это позже.
Еще лучше бы сохранить весь выхлоп lsmod, чтобы потом, когда что-то не заработает, можно было быстро определить, какой модуль ядра забыл собрать.
Перенесем в новую систему /var/lib/portage/world из старой, оставив нужное.
Дальше готовимся к чруту:
И делаем чрут в /mnt/gentoo. После этого синхронизируемся (emerge-webrsync); проверяем, правильный ли профиль (eselect profile list) и обновляем system.
Пока обновляется система, устанавливаем временнýю зону:
После этого обязательно надо запустить emerge --config timezone-data, чтобы системное время не показывало UTC!
Добавляем строчки
в /etc/locale.gen (вторая строчка в принципе и не нужна, но пусть будет на всякий случай). Запускаем locale-gen и при помощи eselect locale устанавливаем локаль по умолчанию в КОИ8-Р. Обязательно надо проверить, чтобы в /etc/rc.conf значением параметра unicode было "NO" (или он был закомментирован), иначе в консоли не будет русского.
Теперь можно начать в одной вкладке терминала установку системы (так как файл world уже сформирован, все нужные пакеты "залпом" будут установлены), разве что придется сначала немного подправить частные USE-флаги (кое-какая гадость, например, не может с флагом -qt, ей нужно явно какой-нибудь qtx поставить; частично можно портировать эти файлы со старой системы). На стадии заполнения частных USE-флагов поможет вот такое упрощение:
Тем временем, пока компилируется "мир", ставим исходники свежего ядра:
И при помощи make menuconfig, посматривая на имеющееся железо, конфигурируем, а затем собираем ведро. Здесь, в разделе "Включаем обязательные опции" описано, что нужно не забыть включить в ведро (+ NLS КОИ8-Р и поддержку reiserfs).
Сделать это одновременно на ноутбуке вечером не успел. А когда пришел с утра, оказалось, что из 800 с лишним пакетов еще установилось не все: осталось 244. А ноутбук тормозит так, что даже на нажатие любой клавиши реагирует спустя полминуты-минуту. Вот такая гадость этот двухъядерный AMD. Восьмиядерный i7 намного веселей (особенно когда еще 32ГБ оперативы есть)! Пришлось перезагрузить ноутбук и продолжить.
При необходимости можно создать initrd:
После сборки и установки ядра с модулями устанавливаем загрузчик:
После этого можно перезагружаться и проверять, что было забыто при конфигурировании ядра.
Для начала грузимся с systemResque. Скачать образ можно отсюда, а здесь почитать, как его записать на флешку. Мне пришлось грузиться в режиме "disable kernel-mode-settings", т.к. стандартный зависал на попытке получения системного времени из hardware clock.
Прежде всего, если это новый компьютер, заменяем GPT на MBR. Естественно, в биосе отключаем всякую идиотскую муть вроде EFI и т.п. ненужного дерьма.
Дальше сперва-наперво настраиваем сеть (ifconfig, route, /etc/) и по необходимости устанавливаем переменные XXX_proxy. На рабочем компьютере у меня по умолчанию NAT с форвардингом отключены, поэтому от рута надо запустить скриптик:
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t filter -A FORWARD -p all -s 192.168.99.0/24 -d 192.168.2.0/23 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -d 192.168.2.0/23 -j SNAT --to-source 192.168.3.225
До скачивания образа нужно разбить диск. Я последнее время целиком системный диск делаю корнем, чтобы не париться. В случае с ноутбуком (где несчастных 465ГБ жесткого диска) это тем более необходимо. (кстати, оказалось, что на заказанном ноутбуке несмотря на явное "операционная система: отсутствует" была зачем-то установлена дебильная десятка; хорошо хоть не наляпали уродливых этикеток). Файловая система — reiserfs или ext4. Предпочитаю reiserfs (главное - не забыть потом при настройке ядра включить ее поддержку в ядро).
Монтируем корень в /mnt/gentoo и качаем туда stage3 (stage3 проще взять с зеркала yandex). Кстати, проверять целостность витой пары можно при помощи свитча: суем в соседние гнезда концы шнурка, если соответствующие светодиоды загорятся, все ОК.
Удобней всего сразу же зайти по ssh на "пациента" (для этого сначала надо сменить пароль рута). Тогда можно копипасту втыкать из браузера и т.п. Stage3 лучше сразу взять "no-multilib". Скайп не нужен.
Распаковываем stage3 (tar -xf).
Дальше копируем make.conf из существующей системы в целевую, редактируя необходимое (лучше поменьше оставлять разрешающих флагов). Вот так, например:
CFLAGS="-pipe -O2 -march=native"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"
ENABLE="7zip alsa bash-completion cleartype corefonts djvu dri dri2 enca ffmpeg fuse \
gnuplot gost mencoder mplayer ntfs opengl openmp pdf rar spell threads truetype ttf type1 v4l2 \
X x264 xorg"
# All that must be disabled
DISABLE="-abiword -bluetooth -consolekit -doc -eds -go -gnome -gtk3 -handbook \
-java -joystick -libav -libproxy -networkmanager -perl -phonon -policykit -pulseaudio \
-python -ruby -rust -systemd -udisks -upower -wallpapers -webkit"
USE="${ENABLE} ${DISABLE}"
VIDEO_CARDS="radeon"
FEATURES="$FEATURES parallel-fetch -xattr"
LINGUAS="ru ru_RU en"
L10N="ru en en-GB"
AUTOCLEAN="yes"
GENTOO_MIRRORS="http://mirror.yandex.ru/gentoo-distfiles/
http://gentoo.bloodhost.ru/
http://mirror2.corbina.ru/gentoo-distfiles/
http://gentoo.inode.at/
http://de-mirror.org/gentoo/
http://mirror.bytemark.co.uk/gentoo/
"
ACCEPT_KEYWORDS="amd64"
PORTDIR="/usr/portage"
DISTDIR="${PORTDIR}/distfiles"
PKGDIR="${PORTDIR}/packages"
PORTAGE_TMPDIR="/tmp"
EMERGE_DEFAULT_OPTS="-v -j4 --load-average=7 --with-bdeps y --keep-going y --quiet-build n --autounmask n"
MAKEOPTS="-j4"
PORTAGE_NICENESS="13"
PORTAGE_IONICE_COMMAND="ionice -c 3 -p \${PID}"
Сразу же можно заполнить информацию о прокси, DNS и настройках сети; скопировать /etc/profile.d и т.п. Или сделать это позже.
Еще лучше бы сохранить весь выхлоп lsmod, чтобы потом, когда что-то не заработает, можно было быстро определить, какой модуль ядра забыл собрать.
Перенесем в новую систему /var/lib/portage/world из старой, оставив нужное.
Дальше готовимся к чруту:
mount -t proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
И делаем чрут в /mnt/gentoo. После этого синхронизируемся (emerge-webrsync); проверяем, правильный ли профиль (eselect profile list) и обновляем system.
Пока обновляется система, устанавливаем временнýю зону:
echo "Europe/Moscow" > /etc/timezone
После этого обязательно надо запустить emerge --config timezone-data, чтобы системное время не показывало UTC!
Добавляем строчки
ru_RU.KOI8-R KOI8-R ru_RU.UTF-8 UTF-8
в /etc/locale.gen (вторая строчка в принципе и не нужна, но пусть будет на всякий случай). Запускаем locale-gen и при помощи eselect locale устанавливаем локаль по умолчанию в КОИ8-Р. Обязательно надо проверить, чтобы в /etc/rc.conf значением параметра unicode было "NO" (или он был закомментирован), иначе в консоли не будет русского.
Теперь можно начать в одной вкладке терминала установку системы (так как файл world уже сформирован, все нужные пакеты "залпом" будут установлены), разве что придется сначала немного подправить частные USE-флаги (кое-какая гадость, например, не может с флагом -qt, ей нужно явно какой-нибудь qtx поставить; частично можно портировать эти файлы со старой системы). На стадии заполнения частных USE-флагов поможет вот такое упрощение:
function x() { echo "$1 $2" >> $(echo $1 | sed 's|/.*||'); emerge -uDN world; }
Тем временем, пока компилируется "мир", ставим исходники свежего ядра:
echo "sys-kernel/gentoo-sources ~amd64" >> /etc/portage/package.keywords/sys-kernel
emerge -1 sys-kernel/gentoo-sources
И при помощи make menuconfig, посматривая на имеющееся железо, конфигурируем, а затем собираем ведро. Здесь, в разделе "Включаем обязательные опции" описано, что нужно не забыть включить в ведро (+ NLS КОИ8-Р и поддержку reiserfs).
Сделать это одновременно на ноутбуке вечером не успел. А когда пришел с утра, оказалось, что из 800 с лишним пакетов еще установилось не все: осталось 244. А ноутбук тормозит так, что даже на нажатие любой клавиши реагирует спустя полминуты-минуту. Вот такая гадость этот двухъядерный AMD. Восьмиядерный i7 намного веселей (особенно когда еще 32ГБ оперативы есть)! Пришлось перезагрузить ноутбук и продолжить.
При необходимости можно создать initrd:
genkernel --install --no-ramdisk-modules initramfs
После сборки и установки ядра с модулями устанавливаем загрузчик:
grub-install /dev/sda --target=i386-pc
grub-mkconfig -o /boot/grub/grub.cfg
После этого можно перезагружаться и проверять, что было забыто при конфигурировании ядра.