Наложи ми се да сменя ярдро и в бързината оплесках работата. Така се породи и тази тема. Ще имитираме сега счупен BOOT и ще се помъчим да го ремонтираме. Между другото ако разбирате английски има един клип в YouTUBE на тази тема: How To Fix Systemd-Boot in Arch Linux Стига с общи приказки. Да започваме. Имитираме счупена операционна система. Ще затрием /boot/EFI. /boot/EFI/Linux се намира ядрото от което зареждаме заедно с initramfs. Освен това ще затрием и /boot/loader. В тази директория има файлове определящи начина на зареждане на системата. Примерно да се избере ядро от което да се зареди и т.н.
sudo su rm -rf /boot/EFI rm -rf /boot/loader
Счупихме системата, сега да се помъчим да я ремонтираме. За целта ни е необходимо да се заредим от инсталационния диск или флашка. Сега да проверим какви дялове имаме:
fdisk -l Disk /dev/sda: 77 GiB, 82678120448 bytes, 161480704 sectors Disk model: VMware Virtual S Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 850CCBCD-CE13-4C00-B77E-07C2E8355E62 Device Start End Sectors Size Type /dev/sda1 2048 2099199 2097152 1G EFI System /dev/sda2 2099200 69208063 67108864 32G Linux root (x86-64) /dev/sda3 69208064 161478655 92270592 44G Linux home Disk /dev/loop0: 1012.57 MiB, 1061761024 bytes, 2073752 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
Да монтирме корена на системата (root) и EFI дяла.
mount /dev/sda2 /mnt mount /dev/sda1 /mnt/boot
И да сменим корена на системата в /mnt.
arch-chroot -S /mnt Running as unit: arch-chroot-1345_mnt.service Press ^] three times within 1s to disconnect TTY.
Наново да инсталираме systemd-boot.
bootctl --esp-path=/boot install ⚠️ Mount point '/boot' which backs the random seed file is world accessible, which is a security hole! ⚠️ ⚠️ Random seed file '/boot/loader/.#bootctlrandom-seedf62284c4f83dc80d' is world accessible, which is a security hole! ⚠️ Random seed file /boot/loader/random-seed successfully written (32 bytes). Not booted with EFI or running in a container, skipping EFI variable modifications. mkinitcpio -P .......................... .......................... .......................... ==> Generating module dependencies ==> Creating zstd-compressed initcpio image -> Early uncompressed CPIO image generation successful ==> Initcpio image generation successful ==> Creating unified kernel image: '/boot/EFI/Linux/arch-linux.efi' ==> Unified kernel image generation successful
Имаме предупреждение, че /boot е достъпна за всички (world accessible), даже и за обикновените потребители. Файлът за случайни числа (random-seed) е достъпен за всички. С втората команда генерирахме ядро и initramfs. Да проверим:
ls -la /boot/ total 16856 drwxr-xr-x 4 root root 4096 Jan 1 1970 . dr-xr-xr-x 17 root root 4096 Sep 25 19:27 .. drwxr-xr-x 5 root root 4096 Sep 28 12:25 EFI drwxr-xr-x 4 root root 4096 Sep 28 12:25 loader -rwxr-xr-x 1 root root 17240576 Sep 25 17:51 vmlinuz-linux ls -la /boot/EFI/Linux/ total 30452 drwxr-xr-x 2 root root 4096 Sep 28 13:07 . drwxr-xr-x 5 root root 4096 Sep 28 12:25 .. -rwxr-xr-x 1 root root 31172608 Sep 22 16:13 arch-linux.efi
Да създадем конфигурационен файл за зареждане на Arch Linux.
cd /boot/loader/entries/ blkid /dev/sr0: BLOCK_SIZE="2048" UUID="2026-08-01-14-10-23-00" LABEL="ARCH_202608" TYPE="iso9660" PTUUID="9265218b" PTTYPE="dos" /dev/loop0: BLOCK_SIZE="1048576" TYPE="squashfs" /dev/sda2: UUID="92273cb0-32da-466d-8380-f257ba28481d" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="2837f732-bb89-4906-b241-2993554d7f74" /dev/sda3: UUID="cf6d76f2-35d1-4dd3-a697-d5379c4fad3d" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="791f8b83-20c0-4a9b-b25a-ce5956626395" /dev/sda1: UUID="A231-113D" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="6a9698ee-bcd6-4c2d-a459-439090abe2b3" blkid -s PARTUUID -o value /dev/sda2 > arch.conf nano arch.conf title Arch Linux (linux) linux /EFI/Linux/arch-linux.efi options root=PARTUUID=2837f732-bb89-4906-b241-2993554d7f74 zswap.enabled=0 rw rootfstype=ext4 ls -la total 12 drwxr-xr-x 2 root root 4096 Sep 28 12:42 . drwxr-xr-x 4 root root 4096 Sep 28 12:25 .. -rwxr-xr-x 1 root root 167 Sep 28 12:47 arch.conf cd .. nano loader.conf #timeout 3 #console-mode keep timeout 3 exit reboot
След рестарта системата зарежда наново. С това ремонта завършва.