|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Valentin Davydov 2:5020/400 06 Sep 2007 21:21:02 To : Eugene Grosbein Subject : Re: boot forth --------------------------------------------------------------------------------
> From: Eugene Grosbein <Eugene.Grosbein@f1.n5006.z2.fidonet.org>
> Date: Thu, 06 Sep 2007 23:36:32 +0400
>
> EG> Кто-нибудь знает, что за фигня творится с boot forth в шестерке?
> EG> loader с винта ядро грузит нормально, при загрузке с USB Flash,
> EG> который эмулируется BIOS-ом как дополнительный HDD, BTX ведет себя
> EG> очень странно, в зависимости от добавления отладочных printf в разные
> EG> его места бывает то бесконечный цикл трапов, то единичный трап
> EG> с мгновенной перезагрузкой, то самопроизвольный рестарт loader-а
> EG> с потерей bootinfo от boot2 и, как следствие невозможность загрузить
> EG> ядро, то паника внутри загрузчика по поводу плохого free на guard1...
>
>Основной сценарий (непатченный загрузчит от 6.2-RELEASE) такой:
>
>1. boot2 загружает loader, передавая ему инфомацию, с какого BIOS disk
>идет загрузка, какую консоль использовать (vidconsole/comconsole/обе/никакую)
>etc., вся эта информация называется bootinfo.
>
>2. loader одним из первых вещей в main() вызывает функцию cons_probe(),
>которая выдаёт первый printf от loader-а. Если в boot2 нажать -D
>(выдавать и на экран, и в com-порт), это сообщение будет такое:
>
>Consoles: internal video/keyboard serial port
>
>Если -h, то будет только serial port, если ничего не вводить, только
>internal.
>
>3. Потом loader делает много разных вещей, включая чтение и выполнение
>фортовых скриптов, вплоть до /boot/loader.rc всё идет гладко.
>loader.rc читает include /boot/loader.4th, затем запускает команду start
>из этого loader.4th. start первым делом читает /boot/defaults/loader.conf
>(прочитывает до конца успешно, это я проверил добавкой отладочного
>вывода в конец этого loader.conf), потом, видимо, начинает грузить ядро -
>появляется вращаюшийся слеш, и тут происходит странное - loader начинает
>выполняться с нуля, с main(), вызвает cons_probe() (см. пункт 2 выше)
>и так далее.
>
>Hо теперь уже bootinfo пуст, информации о консоли тоже нет - если вначал
>в bootinfo было указание использовать serial console и loader писал
>вывод именно туда, то теперь cons_probe пишет "internal video/keyboard".
>Потом loader, не именя bootinfo, жалуется:
>Can't work out which disk we are booting from
>
>Пытается загрузиться с disk0, но тут форт обнаруживает порушенную память,
>free: guard1 fail, паникует и на этом загрузка останавливается.
>
>Каким образом loader может стартовать повторно? Где-то рушится стек
>и подменяется адрес возврата? Как такое отлаживать? Есть serial console
>для машины, на которой это 100% воспроизводимо (и я бы хотел знать,
>как это HЕ воспроизвести :-(
>
>При восстановлении этой картины пихал в C-код загрузчика printf-ы,
>иногда получал трап BTX, добавлял ешё один printf, трап исчезал.
Стало быть, проблема в BTX. Он ведь, когда слэш крутит, всё время его
функции дёргает. А проблемы в BTX есть, у меня на одной тачке USB-клавиатура
отсыхает после загрузки BTX.
Вал. Дав.
--- ifmail v.2.15dev5.4
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/258357c9af8d6.html, оценка из 5, голосов 10
|