Рубрики
gentoo Конспект

Конспект: gentoo UEFI + GPT

0.Вводное:

Страница загрузки:
https://www.gentoo.org/downloads/

live cd:
https://bouncer.gentoo.org/fetch/root/all/releases/amd64/autobuilds/20220612T170541Z/install-amd64-minimal-20220612T170541Z.iso
https://bouncer.gentoo.org/fetch/root/all/releases/amd64/autobuilds/20220605T170549Z/livegui-amd64-20220605T170549Z.iso


Официальная wiki gentoo на русском:
https://wiki.gentoo.org/wiki/Handbook:AMD64/ru

Не официальное:
https://pingvinus.ru/note/gentoo-easy-install
https://an9wer.github.io/2020/06/06_Gentoo%20installation.html

Настройка сети ручная:
ip a  a 192.168.1.100 dev eth0
ip route add default via 192.168.1.1
Настройка сети dhcp:
dhcp eth0
dhcpcd -HD eth0

Настройка DNS:
ping ya.ru
vim /etc/resolv.conf

Посмотреть текущий ip:
ip a

Смена пароля тукущего пользователя:
!!! Если требования к паролю кажутся очень завышенными, то редактируем файл /etc/security/passwdqc.conf
!!! min=1,1,1,1,1
!!! useradd -m -G wheel,audio,video <имя пользователя>
!!! passwd <имя пользователя>
passwd

Запуск sshd на livecd:
rc-service sshd start

!!! Теперь мы можем подключится по ssh и продолжить установку.

1.Рекомендованная разметка диска UEFI+GPT:

Раздел	    Описание                                      Код для fdisk
/dev/vda1	Системный (и загрузочный) раздел EFI (ESP)    -> код 1
/dev/vda2	Раздел подкачки                               -> код 19
/dev/vda3	Корневой раздел                               -> код 20

Разметка диска:
fdisk /dev/vda
p - показать разметку
g - сделать gpt таблицу
d - удалить
n - создать раздел (enter enter +256M)
n - создать раздел (enter enter +2G)
n - создать раздел (enter enter enter)
t - установить тип раздела (1 1)
t - установить тип раздела (2 19)
t - (не требуется 20 по умолчанию для нового раздела ) установить тип раздела (3 20)

Накатываем файловые системы и включаем swap
mkfs.vfat -F 32 /dev/vda1
mkfs.ext4 /dev/vda3
mkswap /dev/vda2
swapon /dev/vda2

2. Подготовка к установке stage3

Создаем директорию:
mkdir /mnt/gentoo
Монтируем:
mount /dev/vda3 /mnt/gentoo

Переходим в каталог  /mnt/gentoo:
cd /mnt/gentoo

Скачиваем stage3:
!!! Выбор правильного базового архива для системы впоследствии может сэкономить значительное количество времени, затраченное на установку.
!!! Рекомендуется выбрать multilab \ systemd
wget https://bouncer.gentoo.org/fetch/root/all/releases/amd64/autobuilds/20220612T170541Z/stage3-amd64-desktop-systemd-20220612T170541Z.tar.xz

Распаковываем только что скаченный архив stage3:
!!! Убедитесь, что указаны те же самые параметры (xpf и --xattrs-include='*.*').
!!! x указывает на извлечение (extract)
!!! p для сохранения (preserve) прав доступа и f для обозначения, что мы хотим извлечь файл (file)
!!! а не стандартный ввод. --xattrs-include='*.*' позволит также сохранить расширенные атрибуты во всех пространствах имен хранящиеся в архиве
!!! --numeric-owner используется для того, чтобы убедиться что идентификаторы пользователей и групп распаковываемых файлов останутся такими же
!!! как и задумывались командой Gentoo по подготовке релизов (даже если предприимчивые пользователи не используют официальный установочный носитель Gentoo)

tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner


Настройка параметров компиляции:
!!! какой редактор выбрать решать вам, но в процессе установки у меня пропадал vim
!!! везде в руководстве используют nano -w
nano -w /mnt/gentoo/etc/portage/make.conf
vim  /mnt/gentoo/etc/portage/make.conf

Значения по умолчанию для (/mnt/gentoo/etc/portage/make.conf):
# Флаги компилятора, используемые для всех языков
COMMON_FLAGS="-march=native -O2 -pipe"
# Используйте те же настройки для обеих переменных
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
# Использование большого количества процессов может значительно повлиять на потребление памяти.
# Хорошая рекомендация — имейте не менее 2 Гб свободной оперативной памяти на каждый #поток (так, например, для -j6 потребуется не менее 12 ГиБ).
# Чтобы избежать нехватки памяти, уменьшите количество процессов
MAKEOPTS="-j2"

Необязательно: Выбор зеркала
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
mkdir --parents /mnt/gentoo/etc/portage/repos.conf
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf

3. Копирование DNS:


cp --dereference /etc/resolv.conf /mnt/gentoo/etc/

4. Монтирование разделов

Монтирование необходимых файловых систем для продолжения установки:
!!! /proc/ — псевдофайловая система (она выглядит как обычные файлы, но на самом деле генерируется на лету), через которую ядро Linux предоставляет информацию для окружения
!!! /sys/ — псевдофайловая система, как и /proc/, которую она однажды заменит, также она более структурирована, чем /proc/
!!! /dev/ — это обычная файловая система, частично управляемая менеджером устройств Linux (обычно udev), которая содержит все файлы устройств
!!! /run/ — временная файловая система, используется для генерации файлов на лету used, таких как PID файлы или файлы блокировки
!!! Параметр --make-rslave необходим для дальнейшей поддержки systemd в ходе установки.
mount --types proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev
mount --bind /run /mnt/gentoo/run
mount --make-slave /mnt/gentoo/run

Переход в новое окружение:
!!! Выполнить последовательно по одной
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"

5. Установка и обновление portage

Настройка Portage:
!!! emerge-webrsync - для загрузки снимка используется только протоколы HTTP/HTTPS,а также когда необходимо снизить нагрузку канал сети
emerge-webrsync

Необязательно: Обновление репозитория ebuild-файлов Gentoo
emerge --sync
emerge --sync --quiet

Чтение новостей:
eselect news list
eselect news read
man news.eselect

Выбор подходящего профиля:
eselect profile list
eselect profile set 2

Обновление набора @world:
emerge --ask --verbose --update --deep --newuse @world

Необязательно: Настройка переменной USE:
!!! Полное описание всех доступных USE-флагов можно найти в файле /var/db/repos/gentoo/profiles/use.desc.
less /var/db/repos/gentoo/profiles/use.desc
Простой способ проверить какие настройки используются для USE:
emerge --info | grep ^USE - собственно не будем ничего мудрить вывод этой команды нам пригодится для сборки нашей системы


Необязательно: Добавим флаги USE:
!!! Можно обойтись без них, так как у каждого приложения свои флаги уже выставлены
!!! Если USE-флаг определён в /etc/portage/make.conf, он будет добавлен (или удалён, если перед USE-флагом написан знак -) в список по умолчанию.
!!! USE флаги могут быть удалены добавлением знака - перед флагом. Например, чтобы выключить поддержку для графических окружений X, нужно задать -X
nano -w /etc/portage/make.conf
------------------------------
USE="X kde bash-completion curl apache2 djvu doc gui gzip handbook man mmap lzma lz4 lzo mysql networkmanager pdf perl php plasma python rdp ssl systemd"
------------------------------


Настройка переменной ACCEPT_LICENSE
vim /etc/portage/make.conf
--------------------------
ACCEPT_LICENSE="*"
--------------------------

Установка vim:
emerge --ask app-editors/vim

6. Язык / время / locale

 ntpd -q -g

Временная зона:
echo "Europe/Moscow" > /etc/timezone
emerge --config sys-libs/timezone-data
ln -sf ../usr/share/zoneinfo/Europe/Moscow /etc/localtime

Настройка локалей:
nano -w /etc/locale.gen
-----------------------
en_US ISO-8859-1
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8
-----------------------
Генерируем локали:
locale-gen

Выбор локали:
!!! Это всё ещё можно сделать вручную с помощью файла /etc/env.d/02locale (для Systemd с помощью файла /etc/locale.conf)
eselect locale list
eselect locale set 8

Заново перезагружаем окружение:
env-update && source /etc/profile && export PS1="(chroot) ${PS1}"

7. kernel, ручная сборка ядра:

Настройка ядра Linux:
emerge --ask sys-kernel/linux-firmware
emerge --ask sys-kernel/gentoo-sources
eselect kernel list
eselect kernel set 1
!!! Гайд https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Kernel/ru
!!! virtio https://wiki.gentoo.org/wiki/QEMU/Linux_guest
cd /usr/src/linux
#make defconfig
#make kvm_guest.config
make menuconfig
make && make modules_install
make install
!!! Необязательно: Сборка initramfs
!!! emerge --ask sys-kernel/dracut
!!! dracut --kver=4.9.16-gentoo

8. Настройка системы:


монтирование дисков в fstab
!!! blkid - получаем UUID дисков, правильно будет монтировать диски по UUID
Вносим наши точки монтирования:
vim /etc/fstab
------------------
/dev/vda3   /            vfat    defaults,noatime     0 1
/dev/vda1   /boot        ext2    defaults,noatime     0 2
/dev/vda2   none         swap    sw                   0 0
------------------
Проверяем:
mount -a


Информация об узле и домене:
nano -w /etc/conf.d/hostname
----------------------------
hostname="tux"
----------------------------

hostnamectl hostname tux

Сеть dhcp:
emerge --ask net-misc/dhcpcd
systemctl enable --now dhcpcd

Сеть статика:
emerge --ask --noreplace net-misc/netifrc
vim /etc/conf.d/net
-------------------
#config_eth0="dhcp"
config_eth0="192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255"
routes_eth0="default via 192.168.0.1"
-------------------



Файл hosts:
vim /etc/hosts
--------------
# Это обязательные настройки для текущей системы
127.0.0.1     tux.homenetwork tux localhost

# Дополнительные настройки для других систем в сети
192.168.0.5   jenny.homenetwork jenny
192.168.0.6   benny.homenetwork benny
--------------




Опционально: поддержка PCMCIA-устройств:
emerge --ask sys-apps/pcmciautils



Пароль суперпользователя:
Изменить пароль суперпользователя (с именем root) можно с помощью команды passwd.
passwd


Инициализация и конфигурация загрузки:
Рекомендуется запустить systemd-firstboot --prompt --setup-machine-id, чтобы убедиться, что система корректно настроена, но нужные шаги можно также запускаться отдельно.
systemd-firstboot --prompt --setup-machine-id


Системный журнал:
emerge --ask app-admin/sysklogd
Необязательно: планировщик задач Cron:
emerge --ask sys-process/cronie
Необязательно: Индексирование файлов:
emerge --ask sys-apps/mlocate
Утилиты для файловых систем:
emerge --ask sys-fs/e2fsprogs
emerge --ask sys-fs/dosfstools
Необязательно: Установка утилит для беспроводной сети
emerge --ask net-wireless/iw net-wireless/wpa_supplicant
Необязательно: Установка клиента PPPoE
emerge --ask net-dialup/ppp


9. Настройка начального загрузчика:


!!! https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Bootloader/ru
!!! https://wiki.gentoo.org/wiki/GRUB2_Quick_Start/ru#.D0.A0.D1.83.D1.87.D0.BD.D0.B0.D1.8F_.D0.BD.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0
!!! По умолчанию используется GRUB2.
!!! Обратите внимание что установка загрузчика MBR и UEFI отличается.
!!! Для UEFI убедитесь что раздел /boot примонтирован (ls /boot - есть файлы)
emerge --ask --verbose sys-boot/grub
Установка загрузчика grub2 UEFI
!!! grub-install --target=x86_64-efi --efi-directory=/boot --removable
grub-install --target=x86_64-efi --efi-directory=/boot

Если рядом не будет других систем полезно добавить в grub
vim /etc/default/grub
-------------------------
GRUB_DISABLE_OS_PROBER=false
-------------------------

Генерируем меню загрузки:
grub-mkconfig -o /boot/grub/grub.cfg

9.1 Пример Установки загрузчика UEFI and GPT:

echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf
emerge --ask sys-boot/grub
grub-install --target=x86_64-efi --efi-directory=/boot --removable
grub-mkconfig -o /boot/grub/grub.cfg

Если требуется пересобрать grub (добавили платформу в potage) то используйте:
emerge --ask --update --newuse --verbose sys-boot/grub

9.2 Альтернатива grub efibootmgr

!!! https://wiki.gentoo.org/wiki/Efibootmgr
0. Сносим загрузчик:
cd /boot/
rm -rf * 
1. Собираем ядро
cd /usr/src/linux
make && make modules_install
make install

2. устанавливаем загрузчик
emerge --ask sys-boot/efibootmgr
mkdir -p /boot/efi/boot
cp /boot/vmlinuz-* /boot/efi/boot/bootx64.efi
efibootmgr -v - выводим доступные варианты загрузки
efibootmgr --create --disk /dev/vda --part 2 --label "Gentoo" --loader "\efi\boot\bootx64.efi"
#efibootmgr -c -d /dev/vda -p 2 -L "Gentoo" -l "\efi\boot\bootx64.efi" initrd='\initramfs-genkernel-amd64-4.9.16-gentoo'

P.S.
efibootmgr -b 2 -B  - удаление не правильной записи

9.3 Альтернатива grub Syslinux

!!! https://wiki.gentoo.org/wiki/Syslinux

emerge --ask sys-boot/syslinux

MBR:
dd bs=440 conv=notrunc count=1 if=/usr/share/syslinux/mbr.bin of=/dev/vda

GPT:
dd bs=440 conv=notrunc count=1 if=/usr/share/syslinux/gptmbr.bin of=/dev/vda


syslinux --install /dev/vda1

mkdir -p /boot/efi/EFI/syslinux

cd /usr/share/syslinux/efi64
cp syslinux.efi ldlinux.e64 menu.c32 libcom32.c32 libutil.c32 /boot/efi/EFI/syslinux

10. Завершение установки:


exit
cd
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount -R /mnt/gentoo
reboot


11. Приложения:


!!! https://wiki.gentoo.org/wiki/Handbook:AMD64/Working/USE/ru
!!! https://wiki.gentoo.org/wiki/Handbook:AMD64/Working/Portage/ru#.D0.9A.D0.BE.D0.B3.D0.B4.D0.B0_Portage_.D0.BD.D0.B0_.D1.87.D1.82.D0.BE-.D1.82.D0.BE_.D1.80.D1.83.D0.B3.D0.B0.D0.B5.D1.82.D1.81.D1.8F
!!! https://www.funtoo.org/Emerge/ru
Работа с пакетами:
emerge <пакет> - установка пакета
emerge --unmerge <пакет> - удаление пакета
emerge -avuDN @world - обновление
emerge --sync - синхронизация с репозиторием
layman -a <оверлей> - добавление оверлея
layman -d <оверлей> - удаление оверлея
layman -L - список оверлеев
Оверлеи - сторонние репозитории, что-то похожее на AUR.

emerge layman
Для их установки layman.

И самое важное - что делать если portage жалуется на что-то.
Для начала, не паникуйте и внимательно прочтите вывод программы.
Постарайтесь просто понять, что не так, при необходимости воспользуйтесь переводчиком.

Поиск пакета:
emerge -s firefox
emerge --search firefox

Удаление пакетов:
emerge -C firefox
emerge --unmerge firefox
emerge -aC firefox
emerge -a --depclean

Обновление пакетов:
emerge -uDN @world
emerge -uavDN @world

Создание swap файла на лету с добавлением в fstab:

fallocate -l 1G /.swap
chmod 600 /.swap
mkswap /.swap
echo '/.swap none swap defaults 0 0' >> /etc/fstab
swapon /.swap