Воспоминания системного администратора
В лицее я не только учился, но еще и проработал лаборантом в кабинете информатики с 2002 по 2004 год. Должность называлась именно так, «лаборант», хотя на деле это было системное администрирование.
Когда я начинал работать, своего компьютера у меня еще не было. Так что меня всё устраивало: после уроков я задерживался часа на два и сидел за компьютером, программировал игру «Жизнь», и даже получал
Эту радужную картину портила необходимость исполнять рабочие обязанности, и она возникала достаточно часто. Дело в том, что в кабинете стояли, мягко говоря, устаревшие компьютеры. Процессоры Пентиум 1 (MMX) с частотой 166 МГц, 16 мегабайт медленной памяти EDO RAM, жесткий диск на два гигабайта, коаксиальная сеть со скоростью 1 мегабит в секунду, дискеты и
На таких компьютерах со скрипом работала Windows 98. Она легко ломалась, и за желающими напакостить детьми часто приходилось всё переустанавливать. Поэтому мне пришлось изобретать разные способы, облегчающие работу. Об этом соревновании брони и пули я бы и хотел рассказать.
Обычная процедура переустановки была крайне мучительной.
Мой друг Денис Пономарев рассказал о программе Partition Magic для изменения размеров логических дисков без потери данных. Также она умела скрывать логические разделы. Однажды мы сделали на всех компьютерах скрытые логические диски D: с установщиками программ и драйверами. В целом схема получилась надежнее скрытой папки install. Очень часто дети, ломающие Windows, оставляли DOS работающим. Если они портили папку install, но не удаляли всё с диска C:, я запускал в DOS спрятанный в нескольких местах Partition Magic и получал доступ к диску D:. С тех пор необходимость разбирать компьютеры возникала гораздо реже.
Еще дети часто приносили игры. Сначала я думал, что их можно «задобрить», ничего с играми не делал, предполагая, что дети станут реже ломать Windows. Однако эта политика себя не оправдала, и с играми я стал бороться.
Практически единственный способ установки игр на компьютеры учеников заключался в использовании сети и оптического привода на учительском компьютере. Так как сеть нельзя было отключить (надо же
Перед тем как рассказать о своем решении этой проблемы, напомню, как запускается Windows 98. Сначала загружается
Казалось бы, через autoexec.bat можно проверять, существует ли в системе оптический привод, и останавливать процесс загрузки. Однако это крайне ненадежный способ. Про autoexec.bat знают все. Его можно либо отредактировать напрямую, либо пропускать некоторые команды в режиме Step by step confirmation, куда можно попасть, удерживая при загрузке клавишу Control и войдя в меню загрузки.
Поэтому я поступил хитрее. Упомянутая выше команда «win» — это запуск файла win.com. В Windows 98 можно подменить этот файл, и при загрузке будет запущена не Windows, а ваша программа. Я решил написать программу, проверяющую наличие оптического привода. Если привода не было, она запускала оригинальный но переименованный win.com, и дальше продолжалась обычная загрузка Windows. Если привод был, она просто зависала, для чего было достаточно выполнить три знаменитых инструкции с кодами FA EB FE. Таким образом, человеку, подключившему оптический привод, должно было казаться, что он неисправен, так как компьютер завис.
Чтобы реализовать эту идею, нужно было решить несколько вопросов. Вопрос первый: где взять
Вопрос второй: как определить, подключен ли оптический привод. Здесь простого решения не было. Я нашел пример кода, который то ли подсчитывает количество логических дисков, то ли проверяет, доступен ли конкретный логический диск. Однако всё упиралось в один неприятный момент: в ходе описанной выше обычной загрузки
Мне пришлось включить в autoexec.bat загрузку драйвера для
(Пока я набирал этот текст, подумал, что загружать драйвер можно было не в autoexec.bat, а в моей программе; тогда я до этого не додумался.)
Нужно отметить, что я позаботился и о собственном удобстве. Программа не зависала, если правильным образом установить клавиши с подсветкой состояния. Кажется, нужно было выключить Num Lock и включить Scroll Lock. В реальном режиме работы процессора получить состояния этих клавиш очень просто — достаточно прочитать содержимое памяти по адресу 0040:0017 и посмотреть на биты 5 и 4.
У меня была еще одна идея — избавиться от Partition Magic в описанной выше схеме со скрытыми разделами на жестком диске и сделать схему неуязвимой. Идея основывалась на следующих соображениях.
- Информация о разделах хранится в таблице разделов, а таблица разделов вместе с кодом загрузки образует MBR — главную загрузочную запись, располагающуюся в первом секторе диска.
- Между первым сектором (MBR) и началом первого раздела есть 63 не используемых в Windows сектора, в которых можно хранить копию MBR с правильной таблицей разделов и копию MBR, в которой одного раздела нет.
- Вместо кода загрузки операционной системы в MBR нужно поместить код, восстанавливающий нужную таблицу разделов (в зависимости от состояния клавиатуры) и запускающий оригинальную MBR из соседнего сектора.
В принципе, можно сделать даже меню загрузки, вызываемое нужной комбинацией клавиш Control, Alt, Shift и упоминавшихся выше Num Lock, Scroll Lock и Caps Lock и появляющееся после ввода пароля.
Я начал писать
Вот такое получилось соревнование брони и пули. Конечно, конкретные знания, приобретенные тогда, безнадежно устарели. Например, уже Windows XP устроена гораздо сложнее. В ней для загрузки не используется
Оставьте свой комментарий