Страница 1 из 1
Программная замена содержимого CMOS памяти
Добавлено: Пт июн 15, 2012 15:18:14
Abadonna
Всем привет. Обращаюсь за помощью, может кто подскажет ответ.
Имеется комплекс: компьютер, несколько раз презагружающийся в DOSе и вполняющий некоторые задачи, после последней перезагрузки он должен загрузиться в виндовсе и дальше управляться по сети. Виндовая часть задачи нас не интересует - она есть. DOSовская - тоже. Интересует один момент - переключение между ОСями.
Раньше все было плохо, но выкручивались заменой файлика boot.ini. Больше так делать нет возможности.
Сейчас мысль бьется с разгону о череп: в CMOS`e поменять порядок загрузки: стоит первая SD карта, поменять на HDD и задача будет решена. Но не все так просто. Я написал программку, которая снимает образ CMOS`a и записывает его на диск. Однако обратно образ заливаться не желает. DOS дает доступ ко всему железу, почему не записывается новая инфа в CMOS - не пойму. Если кто может подсказать чего - буду весьма признателен.
Для справки.
Чтение CMOS ведется через обращение к портам 70Н и 71Н: в 70Н записывается номер ячейки, из 71Н читается содержимое либо в него же (в 71Н) записывается новое значение. Однако вот не записывается. Хотя время в системе меняется на тот момент, когда создавался этот образ.

Re: Программная замена содержимого CMOS памяти
Добавлено: Пт июн 15, 2012 15:32:05
Maykill
вас интересует аппаратное решение или на уровне загрузчика?
К примеру мультизагрузочное меню с выбором нажатием соотв. клавиши( скажем 1 или 2)
тогда ищете сигнал, вырабатываемый при перезагрузке и, при прохожнении его нужное количество раз, пусть исполнительное устройство замыкает нужный символ на клавиатуре
во наворотил....
Re: Программная замена содержимого CMOS памяти
Добавлено: Пт июн 15, 2012 15:46:09
Abadonna
Увы, такое решение не применимо, хотя вполне реализуемо. Суть всего этого шаманства в том, чтобы автоматически, без участия специально обученного человека сто раз запустить ДОС, выполнить в нем задачу и потом опять же автоматически запустить винду и дальше уже другую задачу выполнять. Причем имеющийся софт (виндовый) переставить нет возможности - только 2 различных носителя с этими операционками

У нас вообще из доступного софта остается только BIOS (да,мы не ищем легких путей

Не писать же новый BIOS для этих целей

Re: Программная замена содержимого CMOS памяти
Добавлено: Пт июн 15, 2012 15:55:05
nds
имхо батник + grub4dos вам в помощь
и никаких извращений не надо будет
Re: Программная замена содержимого CMOS памяти
Добавлено: Пт июн 15, 2012 16:02:19
Maykill
опять загадки....
расписали бы поэтапно...сами бы решение увидали
Re: Программная замена содержимого CMOS памяти
Добавлено: Пт июн 15, 2012 16:15:05
Abadonna
Ммм... Постараюсь расписать подробненько. Даже поэтапно.
1. Комп грузится в ДОС.
2. Делает свои делишки и перезагружается.
3. Проверить, какая это перезагрузка по счету. Если это была сотая перезагрузка (там счетчик имеется) - надо поменять ОСи для загрузки и снова перезагрузиться.
4. Грузится виндовс.
Вот этот пункт 3 и стоит камнем на шее. Проверить номер перезагрузки можно: в файле хранится счетчик, который сравнивается с эталоном (100) а автоэкзеке.
А что такое grub4dos? Сча погуглю...
Re: Программная замена содержимого CMOS памяти
Добавлено: Пт июн 15, 2012 16:17:25
nds
grub4dos - загрузчик операционок
подробно описан на greenflash.su
загрузить винду можно прямо из доса
или если вам привычнее менять файлы можно поменять menu.lst (конфиг grub4dos) и перезагрузиться
Re: Программная замена содержимого CMOS памяти
Добавлено: Пт июн 15, 2012 16:28:18
Maykill
ну так пропишите в экзешнике переход по счётчику на нужную процедуру
Re: Программная замена содержимого CMOS памяти
Добавлено: Пн июн 25, 2012 14:36:33
Alexeyslav
В БИОСе есть такая "защита от вирусов" она предотвращает изменение загрузчика не из-под БИОСа, а так же защищает от записи 0-й сектор винчестера. Старенькая защита, которая нынче только мешает.
так же, у этой памяти есть контрольная сумма, чуть что не так - сбрасывается на настройки по умолчанию. Так же нужно быть уверенным что больше никто не пытается записать и даже ПРОЧИТАТЬ эту память во время записи, иначе запись может быть произведена не по тому адресу куда надо.
Re: Программная замена содержимого CMOS памяти
Добавлено: Пн июн 25, 2012 19:20:42
kotpalych
grub4dos не обязательно , достаточно для загрузки WINDOWS запустить батник примерно такого содержания:
Код: Выделить всё
ATTRIB -R -S -H c:\boot.ini
echo [boot loader] > c:\boot.ini
echo timeout=3 >> c:\boot.ini
echo default=multi(0)disk(0)rdisk(0)partition(1)\WINNT >> c:\boot.ini
echo [operating systems] >> c:\boot.ini
echo multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional RUS" /fastdetect >> c:\boot.ini
echo C:\ = "MS-DOS" >> c:\boot.ini
ATTRIB +R +S +H c:\boot.ini
Это для моей системы , ваши пути будут другими. Файл boot.ini будет автоматически переписан.
Re: Программная замена содержимого CMOS памяти
Добавлено: Вт июн 26, 2012 14:11:40
Abadonna
Спасибо всем откликнувшимся, с грехом пополам одолел проблему. Не совсем как хотелось, но таки победил - сконвертировал раздел в FAT32 и запихнул вторую ОСь посредством grub4dos. Вроде бы работает.