Установка Gentoo stage4, repos.conf, systemd.Подписка на Комментарии к "Установка Gentoo stage4, repos.conf, systemd."

Аватар zenon

Сначала надо выбать Live дистрибутив для первоначальной загрузки - по мне так Debian, можно Manjaro например, хотя на самом деле достаточно SystemRescueCd, главное до терминала добраться.

Основные отличия от stage3 - есть готовое ядро, устновлен портаж, выбран профиль по умолчанию [25] systemd.
Подготавливаем каталог для чрута:
sdaX - будующий корень.

# mkdir /mnt/gentoo
# mount -v /dev/sdaX /mnt/gentoo

Наши зеркала:

Загружаем свежий stage4.

# cd /mnt/gentoo
# wget -r -nd -l1 --no-parent -A 'stage4-amd64-systemd*.tar.bz2' https://mirror.yandex.ru/gentoo-distfiles/releases/amd64/autobuilds/current-stage3-amd64-systemd/

Распаковываем дерево нашей будущей системы, удаляем архив:

# tar xpjvvvf stage4-amd64-systemd-*.tar.bz2
# rm -v stage4-amd64-systemd-*.tar.bz2

Монтируем proc, sys, dev:

# mount -v --types proc /proc /mnt/gentoo/proc
# mount -v --rbind /sys /mnt/gentoo/sys
# mount -v --make-rslave /mnt/gentoo/sys
# mount -v --rbind /dev /mnt/gentoo/dev
# mount -v --make-rslave /mnt/gentoo/dev

Копируем или создаём resolv.conf:

# cp -v --dereference /etc/resolv.conf /mnt/gentoo/etc
# echo "nameserver 8.8.4.4" >> /etc/resolv.conf

Подготавливаем repos.conf:
Оригинальная настройка тут.

# mkdir --parents /mnt/gentoo/etc/portage/repos.conf
# cat /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
[DEFAULT]
main-repo = gentoo

[gentoo]
location = /usr/portage
sync-type = rsync
sync-uri = rsync://rsync.gentoo.org/gentoo-portage
auto-sync = yes
sync-rsync-verify-jobs = 1
sync-rsync-verify-metamanifest = yes
sync-rsync-verify-max-age = 24
sync-openpgp-key-path = /usr/share/openpgp-keys/gentoo-release.asc
sync-openpgp-key-refresh-retry-count = 40
sync-openpgp-key-refresh-retry-overall-timeout = 1200
sync-openpgp-key-refresh-retry-delay-exp-base = 2
sync-openpgp-key-refresh-retry-delay-max = 60
sync-openpgp-key-refresh-retry-delay-mult = 4

Ссылки раз, два
За протокол синхронизации отвечает параметр sync-type, поддерживаются rsync, git, svn, webrsync, cvs.
sync-uri - это url репозитория
auto-sync - выбор синхронизировать все репозитории, отмеченные флагом auto.
Для синхронизации, кроме обычной emerge --sync теперь есть утилита emaint.
В общем после появления /etc/portage/repos.conf стали доступны репозитории в любых VCS, layman разве что для списков оверлеев остался нужен.

Переходим в новое окружение:

# chroot /mnt/gentoo /bin/bash
# source /etc/profile && export PS1="(chroot) ${PS1}"

tmpfs

# test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
# mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
# chmod 1777 /dev/shm

make.conf, например так:

# cat /etc/portage/make.conf
# ACCEPT_KEYWORDS="~amd64"
COMMON_FLAGS="-O2 -march=native -pipe"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"
CHOST="x86_64-pc-linux-gnu"
# CPU_FLAGS_X86="mmx mmxext sse sse2 sse3 sse4_1 ssse3"
ACCEPT_LICENSE="*"
LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed"
MAKEOPTS="-j5 -l5 -s"
INPUT_DEVICES="evdev"
VIDEO_CARDS="nvidia"  # intel nvidia radeon vesa i965
ALSA_CARDS="hda-intel"
# FEATURES="$FEATURES collision-protect"
EMERGE_DEFAULT_OPTS="-v --keep-going"
# INSTALL_MASK=""
PORTAGE_NICENESS=19
PORTAGE_IONICE_COMMAND="ionice -c 3 -p \${PID}"
AUTOCLEAN="yes"
PORTDIR="/usr/portage"
LANG="en_US.UTF-8" # ru_RU.UTF-8
L10N="en ru"
LC_MESSAGES=C
USE="-bindist urandom bindist bzip2 idm bash-completion unicode -slang utf8"

Много глобальных юзов прописывать не советую, в переменной LANG на самом деле необходимости уже нет, за всё отвечает L10N.
Про cpu flags чуть ниже.

Подготовим каталог portage use и portage keywords:

# mkdir -p /etc/portage/package.use
# mkdir -p /etc/portage/package.keywords
# nano -w /etc/portage/package.use/world

Синхронизация:

# emaint sync -A    синхронизировать все репозитории
# emaint sync -a    синхронизировать репозитории отмеченные флагом auto
# emaint sync -r    синхронизировать указанный репозиторий

Читаем новости и проверяем профиль:

# eselect news read
# eselect profile list
# eselect profile set 25

Настраиваем локали:

# cat /etc/locale.gen
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8
# locale-gen

Просмотреть файл /usr/lib/locale/locale-archive можно с помощью команды localedef.

# localedef --list-archive

Его содержимое без изменений можно отобразить с помощью команды strings:

# strings /usr/lib/locale/locale-archive | less

Установить локаль можно так:

# eselect locale list
# eselect locale set 1

Проверить результат:

# localectl | grep "System Locale"
   System Locale: LANG=ru_RU.UTF-8

Vconsole - переключение клавиатуры консоли и шрифт:

# cat /etc/vconsole.conf
KEYMAP="ruwin_ct_sh-UTF-8"
FONT="ter-v14n" # установить media-fonts/terminus-font

Копируем новый файл временной зоны в /etc/localtime:

# cp -v /usr/share/zoneinfo/Europe/Volgograd /etc/localtime

Про CPU_FLAGS:
Флаги ещё в 15-ом году переехали из юзов в отдельную переменную.
Посмотреть их можно как всегда в /proc/cpuinfo:

# cat /proc/cpuinfo

Или, как сейчас нам предлагает handbook:

# emerge -av app-portage/cpuid2cpuflags
# cpuid2cpuflags
CPU_FLAGS_X86: mmx mmxext sse sse2 sse3 sse4_1 ssse3

Для того, чтобы выставить их глобально сейчас поступают вот так:

# echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags

Сеть:
Названия сетевых интерфейсов (udev) - мне приятнее старое доброе eth.
Нужны мак-адреса карты/карт:

# cat /etc/udev/rules.d/10-networket.rules
# enp15s0f0
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:w0:81:x0:fc:ca", NAME="eth0"
# enp15s0f1
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:w0:81:x0:fc:cb", NAME="eth1"    

Для получения настроек по DHCP:

# cat /etc/systemd/network/50-dhcp.network
[Match]
Name=eth*

[Network]
DHCP=yes

Не забыть включить сервис управления сетью и ssh:

# systemctl enable systemd-networkd.service
# nano /etc/ssh/sshd_config
# systemctl enable sshd.service

Остался grub, и при желании пересборка ядра:

# emerge -av sys-boot/grub
# grub-install /dev/sda
# nano /etc/default/grub
# grub-mkconfig -o /boot/grub/grub.cfg

Ядро:

# emerge -av sys-kernel/gentoo-sources
# eselect kernel list
# eselect kernel set X
# cd /usr/src/linux
# make mrproper
# zcat /proc/config.gz >/usr/src/linux/.config
# make oldconfig
# make menuconfig
# make && make install modules_install

.
Перезагрузка. :)
.
.
Примечания:
1. Про bindist - этот флаг отключает при сборке программ некоторые блоки кода, которые по каким-либо причинам попадают под лицензионные ограничения (например алгоритмы шифрования, кодеки).

2. Будет хорошим решением добавить unicode к глобальным USE-флагам, а затем при необходимости пересобрать sys-libs/ncurses и sys-libs/slang. Portage это сделает автоматически при обновлении системы, если он был запущен с опциями --changed-use или --newuse.
Также понадобится пересобрать пакеты, зависящие от них, чтобы изменения USE вступили в силу. Используемая утилита (revdep-rebuild) входит в пакет app-portage/gentoolkit.

# revdep-rebuild --library libncurses.so.5
# revdep-rebuild --library libslang.so.1

3. Выбор зеркала через mirrorselect:

# emerge -av app-portage/mirrorselect
# emerge --ask --update sys-apps/portage

Выбор из всех зеркал:

# mirrorselect -i

Только русских:

# mirrorselect -i -c Russia

Следующая команда определит 3 самых быстрых сервера, загружая по 100 Кб с каждого.

# mirrorselect -s3 -b10 -D
# mirrorselect -s3 -b10 -D -c Russia

4. Пересборка toolchain:

# emerge -av sys-devel/binutils sys-libs/glibc sys-devel/gcc

5. TMPFS в fstab

# echo "tmpfs /tmp tmpfs rw,nosuid,noatime,nodev,size=4G,mode=1777 0 0" >> /etc/fstab

6. Экспорт списка UUID разделов sda:

# blkid | grep sda >> /etc/fstab

7. zsh:

# emerge -av app-shells/zsh app-shells/gentoo-zsh-completions app-shells/zsh-completions

Переход в чрут с использованием zsh:

# chroot /mnt/gentoo /bin/zsh
# source /etc/zsh/zprofile && export PS1="(chroot) ${PS1}"
# env-update

8. Обновить или пересобрать всё:

# emerge -avuDN system world
# emerge -avueDN system world

9. repos.conf на git:

# cat /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
[DEFAULT]
main-repo = gentoo

[gentoo]
location = /usr/portage_git
sync-type = git
sync-uri = https://github.com/gentoo-mirror/gentoo.git
auto-sync = yes
priority = 1000

В make.conf изменяем переменную либо сносим всё, что есть в /usr/portage, потому что при синхронизации репозитория нужен подготовленный пустой каталог для git:

PORTDIR="/usr/portage_git"

10. Локаль в systemd (только после перезагрузки в собранную систему):
Поверить список доступных:

# localectl list-locales

Установить требуемую локаль:

# localectl set-locale LANG=ru_RU.UTF-8

Проверить результат:

# localectl | grep "System Locale"
   System Locale: LANG=ru_RU.UTF-8

Список раскладок и настроек работать не будет до перезагрузки в систему.

# localectl list-keymaps | grep ru
# localectl list-keymaps | grep -i ru
# find /usr/share/keymaps -type f | grep ru

Временная конфигурация (Loadkeys)

# loadkeys раскладка_клавиатуры
# loadkeys ruwin_alt_sh-UTF-8

Просмотр настроек клавиатуры:

# localectl status
   System Locale: LANG=en_US.utf8
                  LC_NUMERIC=POSIX
                  LC_TIME=POSIX
       VC Keymap: n/a
      X11 Layout: n/a

Передать параметры ядру можно при загрузке системы:

vconsole.keymap=, vconsole.keymap_toggle=, vconsole.font=, vconsole.font_map=, vconsole.font_unimap=

.
Мануал нуждается в поправках, особенно литературных, можно, даже нужно прямо тут, в комментариях.
Ищу картинку в начало, дабы не скучно было ;)
Старый мануал тут.
Не уверен про /etc/env.d/02locale на systemd.

Похожие материалы:

Добавить комментарий