SpecialistOff.NET / Вопросы / Статьи / Фрагменты кода / Резюме / Метки / Помощь / Файлы

Назад

Тиражирование Fedora из-под Fedora


Метки: fedora sgdisk efi fstab mount mkfs.vfat mkswap mkfs.ext4 mkfs.xfs blkid uuid chroot umount xfs ext4 swap hdd ssd usb uefi grub2-mkconfig raid mdadm

Оригинал статьи: https://habr.com/ru/users/remizoffalex/posts/

Многие руководства по установке слишком переусложнены из-за использования специфических утилит типа anaconda, livecd-tools, Fedora Media Writer и других, или создания файла сценария kickstart. В системе Fedora уже имеются необходимые средства для настраиваемой установки. Эта статья покажет пример для установки на USB флешку и на жёсткий диск

Внимание! Всё, что вы делаете, вы делаете на свой страх и риск, т.к. операции из этого руководства могут привести к частичной или полной потере данных.

Примечание: Предположительно используется базовая система, установленная на /dev/sda, а целевой диск или флешка подключены к /dev/sdb. В вашем случае это может быть другой диск, к примеру SSD M.2 накопитель, распознанный системой как /dev/nvme0n1

Разметка диска

8200 Linux swap
8300 Linux filesystem
ef00 EFI system partition

GPT для жёсткого диска большого размера

sgdisk --zap-all /dev/sdb
sgdisk -o /dev/sdb
sgdisk -a 4096 -n 1:0:+1G --typecode=1:ef00 /dev/sdb
sgdisk -a 4096 -n 2:0:+8G --typecode=2:8200 /dev/sdb
sgdisk -a 4096 --largest-new=3 --typecode=3:8300 /dev/sdb

GPT для USB флешки

sgdisk --zap-all /dev/sdb
sgdisk -o /dev/sdb
sgdisk -a 4096 -n 1:0:+1G --typecode=1:ef00 /dev/sdb
sgdisk -a 4096 --largest-new=2 --typecode=2:8300 /dev/sdb

Форматирование разделов

XFS для жёсткого диска

Почему XFS? Потому, что динамической выделение inode, удобно для большого количества мелких файлов, например если у вас много git проектов

mkfs.vfat /dev/sdb1
mkswap --force /dev/sdb2
mkfs.xfs -f /dev/sdb3

EXT4 для USB флешки

mkfs.vfat /dev/sdb1
mkfs.ext4 -F /dev/sdb2

Монтируем файловые системы

Для жёсткого диска

mount /dev/sdb3 /mnt
mkdir /mnt/{boot,dev,sys,proc}
mkdir /mnt/boot/efi
mount /dev/sdb1 /mnt/boot/efi

Для USB флешки

mount /dev/sdb2 /mnt
mkdir /mnt/{boot,dev,sys,proc}
mkdir /mnt/boot/efi
mount /dev/sdb1 /mnt/boot/efi

Обязательный набор

mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
mount --bind /proc /mnt/proc
mount --bind /run /mnt/run

Установка базовой системы

Мой джентльменский набор содержит немного вспомогательных утилит для системного администрирования

dnf -y --installroot=/mnt --releasever=42 --use-host-config \
group install \
standard core \ hardware-support development-libs development-tools dnf -y --installroot=/mnt --releasever=42--use-host-config \
install \
gpart gdisk rsync nano tcpdump \ tcsh net-tools bind-utils sysstat xfsprogs atop chrony ntpstat \
tree git git-all mc

Устанавливаем загрузчик

dnf -y --installroot=/mnt --releasever=42--use-host-config \
install
kernel efibootmgr shim \
grub2-efi-x64 grub2-efi-x64-modules \
grub2-tools-efi grub2-tools-extra \
grub2-breeze-theme
cat <<EOF > /mnt/etc/default/grub
GRUB_TIMEOUT=30
GRUB_DEFAULT=saved GRUB_SAVEDEFAULT=false
GRUB_TERMINAL_INPUT="console"
GRUB_TERMINAL_OUTPUT="gfxterm"
GRUB_ENABLE_BLSCFG=true
GRUB_CMDLINE_LINUX="nomodeset rhgb"
EOF
chroot /mnt grub2-mkconfig -o /boot/grub2/grub.cfg

Создание файла fstab

uuid очень удобен и хорош для поиска разделов в "мутной водице" среди правильно или неправильного распознания дисков в системе.

ls -la /dev/disk/by-uuid/

Для жёсткого диска

blkid --output export /dev/sdb3 | grep ^UUID= | xargs -I '{}' echo {} / xfs defaults 0 1 > /mnt/etc/fstab
blkid --output export /dev/sdb2 | grep ^UUID= | xargs -I '{}' echo {} none swap sw 0 0 >> /mnt/etc/fstab
blkid --output export /dev/sdb1 | grep ^UUID= | xargs -I '{}' echo {} /boot/efi vfat defaults 0 2 >> /mnt/etc/fstab

Для USB флешки

blkid --output export /dev/sdb2 | grep ^UUID= | xargs -I '{}' echo {} / ext4 rw,relatime 0 1 > /mnt/etc/fstab
blkid --output export /dev/sdb1 | grep ^UUID= | xargs -I '{}' echo {} /boot/efi vfat defaults 0 2 >> /mnt/etc/fstab

Ненужное отключаем

chroot /mnt systemctl disable NetworkManager
chroot /mnt systemctl disable firewalld

Нужное включаем

chroot /mnt systemctl enable systemd-networkd
chroot /mnt systemctl enable nftables

Дорисовываем сову

На самом деле здесь можно много чего добавить относительно настройки новой системы. К примеру установить пароль, добавить пользователей и другое.

# https://specialistoff.net/question/1370
setenforce 0 && sestatus
# Set password echo 'root:123' | chpasswd --root /mnt groupadd --root /mnt admin useradd --root /mnt -m -d /home/admin -s /bin/bash -g admin -m admin echo 'admin:admin' | chpasswd --root /mnt # SElinux to mode Permissive sed -i s/^SELINUX=.*$/SELINUX=permissive/ /mnt/etc/selinux/config

Настройки для SSH

sed -i -r 's/^.?PermitRootLogin.*/PermitRootLogin\ yes/g' /mnt/etc/ssh/sshd_config
sed -i -r 's/^.?UseDNS no/UseDNS no/g' /mnt/etc/ssh/sshd_config
sed -i -r 's/^.?UseDNS yes/UseDNS no/g' /mnt/etc/ssh/sshd_config
mkdir /mnt/root/.ssh touch /mnt/root/.ssh/authorized_keys chmod 0700 /mnt/root/.ssh chmod 0600 /mnt/root/.ssh/authorized_keys

Настройки для удобства навигации по истории команд

sed -i -r 's/^.*history-search-backward.*/"\\e[A": history-search-backward/g' /mnt/etc/inputrc
sed -i -r 's/^.*history-search-forward.*/"\\e[B": history-search-forward/g' /mnt/etc/inputrc

Размонтируем файловые системы

umount /mnt/dev
umount /mnt/sys
umount /mnt/proc
umount /mnt/run umount /mnt/boot/efi umount /mnt

Заключение

Такой вариант установки может подойти для bare-metal установки, подготовки инструмента для восстановления систем