Загрузочная программа C / C ++, которая считывает содержимое файла из каталога на компьютере

Я хочу создать программу, которую можно хранить на CD или флешке.
Эта программа должна иметь возможность читать содержимое файла в каталоге, если он существует. Например, найдите файл «test» в папке Linux Desktop, которая содержит «123».

Но как мне создавать такие программы, которые можно запускать напрямую из BIOS? Когда я создаю простой исполняемый файл hello-world на linux, он не сможет работать на не-linux-OS.

И будут ли использоваться такие библиотеки, как stdio.h и stdlib.h?

0

Решение

Используйте существующий дистрибутив Linux, многие из которых являются загрузочными с CD / флэш-накопителя, с инструкциями о том, как создать новый образ.

Просто добавьте вашу программу в последовательность загрузки.

Вы должны выяснить, какой диск монтировать / искать — вы говорите о «каталоге», не говоря уже о том, на каком устройстве …

4

Другие решения

Ну, я не лучший эксперт в этом, но я сделал кое-что похожее, и, насколько я знаю, ваш лучший шанс — поместить программу сборки в загрузочный сектор носителя данных (flash, CD-ROM) и затем выполнить работа — это, например, как работает программное обеспечение раздела. При загрузке с вашего среднего BIOS начнется выполнение кода в загрузочном секторе, и это тот момент, когда вы можете приступить к работе. Но так как кажется, что вам требуется поддержка различных файловых систем, это может быть очень трудно сделать при сборке. Я работал с FAT32 в сборке, но не уверен насчет файловых систем Linux. Возможно, кто-то выложил какой-нибудь ассемблерный код для этого онлайн.

2

Единственное практическое решение, которое не принимает все существующее ядро ​​операционной системы, такое как Linux, — это повторное использование надрываться. Grub является 32-битным исполняемым файлом в защищенном режиме и поставляется с поддержкой некоторых файловых систем. Я думаю, что для реализации файловой системы достаточно, чтобы вы могли перебирать каталог и блоки файла. Я очень сомневаюсь, что это позволит вам сделать это через API библиотеки C, вам нужно будет использовать собственные внутренние API grub. И он будет очень загружаемым из BIOS.

1

Короткий ответ: это невозможно, если вы не хотите писать свою собственную мини-операционную систему. Функциональность, которую вы описываете, включает в себя массовое взаимодействие с оборудованием, которое обычно скрывается операционной системой, предлагающей приятные высокоуровневые API.

Практическим решением, вероятно, является получение одного из множества дистрибутивов mini linux и связывание их живых изображений вместе с вашим приложением.

И будут ли использоваться такие библиотеки, как stdio.h и stdlib.h?

Они не будут, так как их реализация обычно предоставляется операционной системой.

0
По вопросам рекламы [email protected]