Van egy OpenBSD 7.1 amd64 telepítésem. Jó ötletnek tűnt egy mindent egybe "/" partíció létrehozása, így most van:
- sd3a: 200GB "/"
- sd3b: 24GB "swap"
Jön is boot során a hibaüzenet:
open(hd3a:/etc/boot.conf): Unknown error: code 20
Szerencsére default beállításokkal továbbmegy, viszont így a boot beállításaimnak lőttek. Megtaláltam a hibát, az OpenBSD boot során a root partíció első 1024 cylinderét tudja olvasni, amin én a 200 GB root partíciómmal szépen túllőttem. Szerencsére határon belől van még a kernel, így azt be tudja tölteni, de olvastam olyat is, akinek már az is kívül esett (vagy csak egy része) és ott vége is a boot folyamatnak. Feltételezem, a szerencsén múlik hogy még bootolni tudok, idővel (kernelfrissítés, sysupgrade) kívül esik majd a kernel is és akkor vége.
Újratelepítésen és megfelelő partícionáláson kívül, hogyan tudnám ezt javítani?
Olvasgatva az OpenBSD boot folyamata így néz ki:
- Master Boot Record (MBR) and GUID Partition Table (GPT). The fdisk(8) man page contains the details.
- Partition Boot Record (PBR). The first 512 bytes of the boot disk's OpenBSD partition contain the first stage boot loader biosboot(8). It is installed by the installboot(8) utility.
- Second stage boot loader
/boot
. The PBR loads the boot(8) program which has the task of locating and loading the kernel.
Using drive 0, partition 3. <- MBR
Loading...... <- PBR
probing: pc0 com0 com1 mem[638K 1918M a20=on] <- /boot
disk: hd0+ hd1+
>> OpenBSD/amd64 BOOT 3.33
boot>
booting hd0a:/bsd 4464500+838332 [58+204240+181750]=0x56cfd0
entry point at 0x100120
[ using 386464 bytes of bsd ELF symbol table ]
Copyright (c) 1982, 1986, 1989, 1991, 1993 <- Kernel
The Regents of the University of California. All rights reserved.
Tehát nálam a /boot-nál van a hiba. Lehetne-e megjavítani úgy a dolgot, hogy létrehozok egy partíciót, ami belefér az 1024 cylinderbe, arra pakolom a /boot fájlt, a /etc/boot.conf-ot, meg a /bsd kernelt. A biosboot-ot az installboot-tal lehet újra telepíteni, aminek meg lehet adni, hogy hol van a root, ahol a boot-ot keresse:
-r root Specify the mount point of the root filesystem to operate on, defaulting to /.
Szóval, valami ilyesmire gondolok, hogy létrehozok egy megfelelő partíciót, ami tartalmazza:
/boot (bootloader)
/bsd (kernel)
/etc/boot.conf (bootloader configja)
majd ezt csatolom a /boot könyvtárba.
Akkor elméletben így nézne ki a boot folyamat:
- MBR megtalálja a sda3 partíciót, ahol belöki a módosított PBR-t
- A PBR a /boot/boot útvonalon indítja a Second stage boot loadert
- A Second stage boot loader tudja olvasni a /boot/etc/boot.conf-ot remélhetőleg... és indítja a kernelt: /boot/bsd
Kérdések azon kívül, hogy ez működhet-e egyáltalán:
- a boot megtalálja-e a /boot/etc/boot.conf-ot? gyanítom igen, mert ő még nem mount-ol, az ő partícióját hiszi root-nak
- van-e abból probléma, hogy a /boot/bsd alól indul a kernel, nem a /bsd alól? Megtalálja pl az /etc/fstab-ot, /sbin-t stb?
- Egyáltalán hogyan tartható ez karban? gondolok itt arra, hogy ha lesz egy sysupgrade, az felülírja-e a biosboot-ot pl? vagy első boot-kor még a régi kernel indulna a /boot/bsd vonalon, újraindítás előtt azt is frissíteni kellene...
Gyanítom, hogy nem működne ez, de hátha van valakinek valami véleménye, javaslata.