netch80: (Default)
[personal profile] netch80
Как сделать установку нового диска в десктоп незабываемой от полного непонимания, что вообще творится и на каком свете находишься? Надо всего лишь просочетать несколько факторов:

1. Если диск не упомянут в пункте "Hard drive BBS priorities" в настройке BIOS, то та его не отдаёт в I/O через int 13h. В результате GRUB не может его увидеть.

1б. Первым в списке стоял тот диск, с которого не загружаются ;(

2. Простых надёжных способов собрать grub.cfg под новые условия (смена корневого раздела) нет, а замена UUID редактором не позволяет подсказать, что надо было ещё добавить "insmod part_gpt" (на старом такого не было).

3. На диске с GPT но без "BIOS boot partition" GRUB ставит свой core.img урезанным и неверно работающим. Но чтобы понять, что не так, его родной документации не хватает, там связь замолчана.

4. Если GRUB не нашёл по указанным UUID и пути типа (hd1,msdos5) раздела со своими модулями и конфигами, он хватает первый попавшийся, который нашёл.

4б. При этом он ещё перезаписывает UUID в параметрах загрузки, чтобы совсем уже никто не догадался.

5. Спросить, по какому пути GRUB прошёл и прочитал свои конфиги, откуда грузил модули - невозможно.

6. На то, загрузит ли BIOS внешнюю флэшку, если она была вставлена до перезагрузки, влияет погода на Марсе. Если нет - пункт в boot menu есть, но молча игнорируется.

Таки взлетел. Выдыхаю:)

Date: 2022-01-10 09:56 am (UTC)
dadv: (Default)
From: [personal profile] dadv
> Получить стартовую обстановку в памяти и потом переключиться на боевое файловое дерево (как с pivot_root()) нельзя

Тут у тебя тоже старые данные. На фре это называется reroot (reboot -r из комстроки если) и я его тестировал в 2016-м году на FreeBSD 11-CURRENT, оно работало уже тогда.

Date: 2022-01-10 11:07 am (UTC)
dadv: (Default)
From: [personal profile] dadv
Это уже технические тонкости, я передавал данные через /dev/md0 с malloc backend - оно хотя и отмонтируется, но не уничтожается и из него потом данные достаются без проблем после нового монтирования.

Кусочек моего скрипта для обновления MIPS-роутера (U-Boot) по сети:

echo Downloading $url
fetch -vo $image $url
kenv vfs.root.mountfrom=ufs:$md
echo Closing network connections and unmounting flash...
reboot -r


fetch скачивает обновление на md, куда уже положены особые стартовые скрипты с init, ядро заново монтирует рут с этого md-устройства, скрипт мигает индикаторами особым образом, обновляя разделы с ядром и с fs на флеше и ребутит систему "по-полной", запуская новое ядро.
Edited Date: 2022-01-10 11:12 am (UTC)

Profile

netch80: (Default)
netch80

January 2026

S M T W T F S
    1 23
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 10th, 2026 11:39 am
Powered by Dreamwidth Studios