RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Сделайте нужную фичу в лоадере


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : Vadim "Oxyd" Priluzkiy, 2:5030/1997.76, http://www.osfree.org
To : Vadim "Oxyd" Priluzkiy
Subj : Сделайте нужную фичу в лоадере

> > > > Странная хотелка. Опция умолчания вроде и так фиксированый пункт в меню грузит, никак не зависящий от предыдущего выбраного. А если QSINIT и имя ядра вводилось напрямую, так и от него тоже, наверное.
> > >
> > > Это моя хотелка. Ну неуправляемый сервер. Нету там консоли. Есть удаленное управление, которое не стартует, если ядро не грузится. Есть возможность передернуть питание.
> > > Эта фича позволит загрузить тестовое ядро, а если оно не стартует, то только ресетом или питанием можно решить проблему вернувшись к тому ядру, что грузилось успешно.
> > Т.е. ты хочешь создать некий файл, пока старое ядро работает, а потом при следующей загрузке согласно этого файла загрузить не дефолт? Не, не получится это на один раз. Нету в microFSD записи на диск, поэтому ничего лодырь изменить не может. Так и будет грузиться с одного и того же. В твоём случае удобно тестироваться через сетевую загрузку ядра. Она по определению временная. Но нужна сетевая карта с поддержкой PXE. И драйверы так напрямую пока не протестируешь. Их придётся как-то по именам разводить и конфиги отдельные писать. В общем-то ничего страшного, но движения потребуются.
>
> Предлагаю костыльное решение. Два параметра в OS2LDR.INI, в строке описания тестируемого ядра: STABLE=n (n -- номер в списке os2ldr.ini стабильного ядра) и TEST_TTL=XXXX (xxxx -- количество секунд, после которых, в случае неудачи, грузанётся стэйбл, при отсутствии данного параметра стэйбл грузится автоматом -- защита от дурака) Алгоритм следующий: Перед первым запуском тестового ядра прописываем параметры в инишник. Во время загрузки лодырь, обнаружив оба данных параметра, ищет файл TEST.$$$, (который надо создать перед тестированием нового ядра, в корне или OS2BOOT) читает его и если находит внутри "ОК" загружает ядро. Если "OK" не обнаружен, лодырь смотрит на время создания файла и сравнивает с TEST_TTL если время жизни попыток запуска тестового ядра ещё не истекло, лодырь снова пробует его запустить. Как только количество секунд в TEST_TTL истекает, а "ОК" так и не был обнаружен, попытки прекращаются и грузится ядро из параметра STABLE. Если не обнаружен сам файл TEST.$$$, опять включается защита от дурака и грузится стэйбл. Написание "ОК" логично доверить startup.cmd ибо ядро может и загрузится, а вот, например, сеть(наличие которой из стартапа проверить -- как два байта переслать) может и не подняться. Костыль конечно, но лучшего ИМХО придумать сложно при вышеописанных ограничениях.
Хотя, я тут подумал... Ну вообщем принцип тот-же, но STABLE и TEST_TTL лучше перенести в секцию глобальных параметров, а в строке описания тестируемого ядра достаточно параметра TEST, но тогда такой параметр должен быть один. Если их будет несколько, в разных строках, то загружаться будет первый найденный. ИМХО это более правильно и сократит вредное действие человеческого фактора. ;)))


Tue 13 Aug 2013 08:04 Mozilla/5.0 (Windows NT 6.1; rv:23.0) Gecko/20100101 Firefox




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.