2012-08-30 4 views
0

После создания загрузчика, если я копирую байты загрузчика и вставляю его на 1-й 512 байтов накопителя с помощью шестнадцатеричного редактора, будет ли он работать? (На самом деле я хочу научиться создавать операционную систему с нуля.)Возможно ли записать MBR в ручном приводе любым шестнадцатеричным редактором?

ответ

0

Я не совсем уверен, что я понимаю ваш вопрос, но чтобы ответить на заголовок: да. Вы можете писать на любую часть диска с соответствующим образом спроектированным шестнадцатеричным редактором с соответствующими разрешениями (обычно для Linux требуется «sudo»).

Например, запись в загрузочный сектор флэш-накопителя необходима для автоматизации загрузки CHDK system.

Не все шестнадцатеричные редакторы предназначены для доступа к дискам, некоторые из них могут работать только с файлами. Например, NCurses Hexeditor обычно работает только с файлами, но может быть сделан для доступа к дискам в качестве файлов в среде Linux/Unix, используя флаг -d.

Команда Linux dd также позволяет записывать низкоуровневые записи на диски. Это может быть полезно в вашем случае, поскольку оно может использоваться для выполнения побайтовых копий содержимого диска, включая разделы MBR.

+0

Привет, Ричард, спасибо за ваш ответ. На самом деле я больше заинтересован в работе с Windows, а не в Linux, хотя я знаю, что Linux лучше подходит для разработки ОС. И я также знаком с командой dd, хотя я никогда не пробовал. В Windows я имею опыт работы с бесплатным шестнадцатеричным редактором с именем [HxD]: http://mh-nexus.de/en/hxd/. Было бы более полезно, если бы вы сказали мне, могу ли я сделать это в окнах и какая файловая система подходит для этого (NTFS FAT32). Любая учебная ссылка предпочтительнее. – Nafis

+0

Извините, @NafisAbdullahKhan, я не очень хорошо знаком с инструментами разработки Windows. – Richard

0

Не знаю о редакторе HEX, но, похоже, на Windows вы можете попробовать CreateFile с таким именем \\.\PHYSICALDRIVE0 или просто \\PHYSICALDRIVE0. И измените их с помощью WriteFile (с осторожностью !!! иначе вы можете повредить установку ОС или другие данные).

Возможно, вы можете определить имя устройства с помощью WinObj. Также обратите внимание на this project и this question.