hi, Tue, Dec 29, 2020 at 05:28:37, nikolay.kostirya wrote about "[freebsd] boot":
> На домашнем компьютере у меня установлена с давних времен Windows 7 и FreeBSD. > Загрузка сделана на основе NTLDR, который использует boot1 как простую копию > /boot/boot1 в виде C:\bootbsd.bin. > > Вопрос. Как boot1 находит boot2? > > На ноутбуке у меня установлен boot0 при помощи boot0cfg, и две FreeBSD. > Предполагаю, boot1 ищет boot2 на том же разделе, где сам установлен? > > Но как boot1 тогда находит boot2, когда запускается из под NTLDR? 1. Читается таблица MBR (только 4 первичных раздела) с указанного диска (его хэндл для BIOS вызовов, обычно 0x80). 2. В таблице ищется первый раздел с id 0xA5 и установленным признаком "загрузочный" (flags & 0x80). 3. Если в пункте 2 ничего не найдено, ищется первый раздел с id 0xA5, уже не смотря на флаги. 4. С начала раздела грузится 8KB и передаётся управление на начало boot2 в загруженном. Из-под чего он запущен, ему пофиг - лишь бы хэндл диска передали правильный, дальше он сам ищет. Дальше эта машина работает так: у неё уже есть readonly драйвер UFS. Она ищет /boot.config на предмет, надо ли заменить текущее устройство (пока что в понятиях BIOS) и /boot/loader на что-то другое. Если нет, то ищет его на текущем устройстве. Если не нашло, грузит /boot/kernel, но уже грузит криво, пригодно только к ремонтным работам. /boot/loader уже умеет исполнять Forth, и на скриптах написано всё прочее включая меню с демоном с вилкой. > Если я поставлю еще одну FreeBSD и захочу использовать NTLDR, то как boot1 > найдет нужный boot2. Никак, он найдёт первый. Но через флаг активного раздела можно переключать, откуда он будет брать boot2 (и, что может быть важнее, /boot.config, а уже из этого файла можно задать, откуда будет браться /boot/loader или что-то вместо него). > Или bsdlabel и gpart не просто копируют /boot/boot1 в нужную область диска, > но и прописывают информацию об boot2? И мне нужно будет для NTLDR > использовать не оригинальный /boot/boot1, а при помощи dd скопировать boot1 с > раздела второй FreeBSD? Нет, на этом уровне такого не делается. > Второй вопрос про FreeBSD, установленную на второй диск. > В /usr/share/doc/faq/disks.html#NT-BOOTLOADER говориться, что нужно при > помощи boot0cfg подготовить boot0. А как? > > Просто указать boot0, что он загружен со второго диска? > > boot0cfg -B -d 0x81 -o setdrv,noupdate -s 1 > > Или так не сработает, и нужно делать обычный boot0 с загрузкой MBR второго > диска? > > boot0cfg -B -o setdrv,noupdate -s 5 А откуда вообще пойдёт его грузить? По указанию в BIOS? Если BIOS сразу загрузит со второго диска, то AFAIK эти пляски уже не нужны, boot0 сразу узнает хэндл диска. Всё это "-s 5" нужно, если BIOS пошёл грузить первый диск и хочется через boot0 перекинуть загрузку на второй. > Третий вопрос. > Кстати, если 3 диска и везде стоит boot0, то по F5 они будет грузиться по > кругу? > 1 -> 2 -> 3 -> 1 -> 2 > Или как? После последнего оно идёт на флоповод, а не первый HDD. === cut === /* * If it was illegal or we cycled through them, go back to drive 0. */ xorb %al,%al # Drive 0 === end cut === > Четвертый вопрос. > На ноутбуке у меня 4 раздела: первые 2 с FreeBSD, третий - зашифрованный > home, четвертый большой. > Использую два первых раздела для поочередного обновления. Например, работаю > за 11.2, вышла 12.1 - не трогаю 11, а вместо 10 ставлю 12. Если все > нормально, что использую ее, иначе продолжаю 11. > > Вопрос: на будущем новом ноутбуке стоит ли переходить на GPT или для такого > использования нет преимуществ перед MBR? Стоит ли также использовать на ноуте > ZFS? С ней не сталкивался подробно, так как не админ, а обычный юзер. :-) Если новый бук умеет только EFI загрузку, у вас альтернативы GPT уже нет, но тогда надо думать про переходник из EFI. Там гибкости больше, но технология другая и "не родная". Если он умеет из MBR, то в случае использования GPT учтите, что boot1 его уже не умеет, там свой аналог в виде gptboot, но ему нужен отдельный раздел. Про ZFS пусть расскажут те, кто её плотно мучал, но я помню, что она хотела много оперативки, а на лаптопах с этим сложнее. -netch- _______________________________________________ freebsd mailing list freebsd@uafug.org.ua http://mailman.uafug.org.ua/mailman/listinfo/freebsd