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.
Hozzászólások
Azt hiszem már az elmélet is bukik itt:
mivel akkor még nincs mount, így azon az útvonalon semmit nem fog találni...
Én már oldottam meg túl kicsi /boot partíció problémát live CD + gparted segítségével, de akkor eleve külön volt a /boot. Nekem gyanús az újratelepítés, esetleg a /home-t meg tudod menteni.
Debian - The "What?!" starts not!
http://nyizsa.blogspot.com
Jah, itt meg az a baj, hogy túl nagy, de partíciót csak növelni lehet OpenBSD alól, gparted meg nem ismeri az ffs fájlrendszert :P
Még disk klónozás, majd megfelelő partíciókra vissza másoláson gondolkozok... Persze az újratelepítéssel és újraconfigolással már végeztem volna :D
Jó alkalom tesztelni a backup / restore megoldásodat, helyreállításkor szükséges módosításokkal kiegészítve.
--
Légy derűs, tégy mindent örömmel!
Miért nem tud ez a program LBA-t? Az kb. harminc éves technológia.
Van például egy ilyen: https://github.com/openbsd/src/blob/master/sys/arch/amd64/stand/biosboo…
Erre az LBA-ra nem tudok mit mondani, default telepítést használtam. A biosboot az a default "first stage boot loader" ami indítja a /boot "Second stage boot loader"-t, ami indítja a kernelt. A nyitóban a manualból beillesztettem a default boot folyamatot. A legkecsegtetőbb szerintem most az efiboot, ami a hagyományos:
helyett (ha jól értem):
folyamatot járja be. Próbákozok majd vele. 1, 2
Igazából két kódrészletet idéztél be, az első csak egy sor, a másodikban viszont nincs benne a hibaüzenet. (Vagy nem látom.)
Az egy sor az amit kaptam hibaüzenetet, a második csak egy példa, ahol bemutatják, hogy boot folyamat során melyik sor kitől jön. Hülyén írtam, bocs.
A hibaüzenetet én ezután kapom:
Fotóról gépeltem be amúgy, mert ott még nincs log sem.
Az legalább meglett, hogy van egy lib/libsa/strerror.c, amiben az ismert errno-értékeket szöveggé fordítja, de speciel a 20 nem megy neki. Itt kellene nézelődni:
sys/lib/libsa/saerrno.h
(ELAST=95)Megint bocs, futtatom veled a felesleges köröket azt hiszem:
Unknown error: code 20 -ra ezt találtam.
Az legalább meglett, hogy van egy lib/libsa/strerror.c, amiben az ismert errno-értékeket szöveggé fordítja, de speciel a 20 nem megy neki. Itt kellene nézelődni:
Itt:
sys/sys/errno.h
Továbbá itt:
sys/lib/libsa/saerrno.h
(ELAST=95)Na szóval ez a
lib/libsa/strerror.c:strerror
ez csak egy részhalmazát tartalmazza a hibakódoknak, mivel ez nem a libc publikus függvénye, csak egy afféle adhoc belső strerror.Lenne itt egy gyanúsított:
sys/stand/boot/cmd.c:
A
qualify
írja acmd.path
-ba acmd.bootdev
:cmd.conf
értékét.Valami azt súgja, hogy a
sys/lib/libsa/open.c
az illetékes, elannyira, hogy file-system kezelési képesség is van benne (vö: grub), azzal találja meg a kérdéses fájlt. Tehát a fs-handler mondja valamiért, hogy ENOTDIR.Kiegészítő ovasmány: https://undeadly.org/cgi?action=article;sid=20200326083657
FFS2 érdekes (fel is rakom a listámra), de itt pont nem beszél arról, hogy mekkora partícióról tud vele bootolni. Gyanítom, hogy ugyanúgy 1024 cylinder méretűről. Amíg a másodlagos bootloader a /boot, addig szerintem ugyanaz a limit, függetlenül, hogy milyen fájlrendszerről megy. az xxboot meg az elsődleges loader, a biosboot helyett van (FIXME), ugyanúgy a /boot-ot indítja másodlagos loader-nek.
Ez lenne az: https://github.com/openbsd/src/blob/master/sys/lib/libsa/open.c
Benne:
És van egy ilyen: https://github.com/openbsd/src/blob/master/sys/arch/amd64/stand/efiboot… ebben van a struct fs_ops file_system
Ezt úgy vélem érteni, hogy szépen sorban próbálja a fájlrendszerek open-rutinjait, amíg nem sikerül valamelyik. De ha ENOENT(2) vagy ENOTDIR(20) jön vissza, akkor feladja.
Fizikai gép? Virtuális gép? Miért építesz BIOS-ra 2022-ben, miért nem UEFI bootolsz?
Nekem is BIOS módban indul a gépem. Miért baj ez 2022-ben? Mi az előnye egy UEFI-nek egy 5 évente telepített rendszer esetén? Tényleg érdekel, mert már elgondolkodtam, hogy a következő telepítésem UEFI-s lesz, csak még az előnyök nem jöttek eddig szembe.
Persze azon kívül, hogy modernebb és ez (lesz) a jövő.
;) LINK
A gépben - ha akarod, ha nem - UEFI van, csak van a tetején egy kompatibilitási réteg (CSM), amivel emulálja a BIOS-t.
Én a kérdésedet megfordítanám: miért akarnál egy korszerű hardveren, korszerű szoftverrel, natív megoldás helyett egy olyan kompatibilitási réteget használni, ami a ~40 évvel ezelőtti műszaki színvonalat prezentálja?
Gyakorlatilag 10 éve minden gép UEFI-vel van ellátva. Én nem jövőidőben beszélnék róla.
Fizikai gép, nem szándékos választás volt, hanem default-an azt kaptam. Nem igazán érdekelt, mert ilyen jelenségre nem számítottam :P Viszont ha nem is default, de lehet UEFI boot-ot választani, megpróbálom.
Az OpenBSD default particionálását én is utálom. Szét van szabdalva 100 felé, minden apróságnak külön szelet, de ez a BSD-knél divat, még a régi időkből átvéve. Így én kb. 30 gigát adok rootnak, a többit csak a /home-nak, swap nálam nincs. Boottal még nem volt gondom, mert általában olyan lemezre telepítem, amin nincs más. UEFI-vel simán bootolt eddig, Legacy CSM MBR boottal még nem próbáltam. Bevallom, hogy a bootlási mechanizmusát még nem ismerem olyan jól, mint a Linuxnak.
Most jelenleg nincs fent, mert kidöglött alóla a régi SSD, de azt nem tudja valaki, hogy bootkor hogy lehet az OpenBSD-n automatizálni, hogy a kezdeti bootloader ne kérje honnan bootoljon? Mert ha entert nyomok, akkor megismeri, hogy hd0, vagy ilyesmiről bootol, de fárasztó entert nyomkodni. Talán valami x másodperc múlva magától is eltűnik, de zavaró.
“A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)
Innen
Kösz az infót, legközelebb, ha felteszem, ezt mindenképp beállítom. Sajnos én bootidő-mániás vagyok, és a bootolási sebessége amúgy sem villám az OBSD-nek, így extra zavaró volt. Persze kicsit gyorsítottam rajta, kernel újralinkelésének kikapcsolása, Hyper-Threading/SMP bekapcsolása, stb., ez kicsit segít. A másik, amit nagyon ajánlok minden új OBSD usernek, főleg, ha laptopon használják, hogy apmd engedélyezésével (rc-ben) és paraméterezésével az energiatakarékossági szintet mindenképp állítsák be, egyébként túl forrón járatja a rendszer a procit. Van még egy csomó ilyen ajánlott beállítás.
Persze, a hivatalos OBSD FAQ is sok mindenről ír, de az elég elméleti, és nem megy rá a gyakorlati vonatkozásokra. Ráadásul elég sok beállítás túl konzervatív per default (memóriakezelés, konzolbeállítások, stb.) a frissen telepített rendszeren, így részletes beállítással jókora teljesítménytöbblet nyerhető. A másik még, amire figyelni kell, hogy a xenodm az X11-hez nem megkerülhető. Elsőre rondának tűnt, így kihagytam, és startx-et használtam helyette (Linuxon is azt használom, shell rc-ből automatizálva), de úgy meg a hardveres videógyorsítás nem fog menni (DRI, tearfree, stb. beállítások X-en), állítólag valami jogosultsági hiba, setuid vagy mi miatt. Csak xenodm-mel megy, de hála az égnek, van a xenodm-nek konfigja, amivel testre lehet szabni a kinézetet, úgy azért sokkal normálisabb lesz a megjelenése, csak out of the box néz ki ilyen fosul szegényke. De ez a rendszer egészére elmondható, hogy default néhol túlzottan fapados, de mind állítható, csak rá kell szánni az időt.
“A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)