Меня интересуют концепции операционных систем, поэтому я скачал Hello world OS. Я хотел бы знать, как скомпилировать и связать код и сделать загрузочный образ. Я использую старую версию Cygwin для Windows (Cygwin-b20) 1999 года.
Мой код для main.c
:
#include "bloader.h"
int main();
unsigned int oldEBP;
struct boot_dir *viewableDirectory;
int totalMem;
char * passedParams;
void _start(int memSize, char *parms, struct boot_dir *loadedfiles)
{
asm("mov %%ebp, %0":"=m"(oldEBP));
viewableDirectory = loadedfiles; /*make file mem locations global*/
totalMem = memSize; /*make mem of system global*/
passedParams = parms; /*make paramaters passed to system global*/
main();
asm("hlt"); /* this halts the machine, solving the problem of triple-faults on
some machines, but also making it impossible to return to DOS */
}
int main()
{
char *vidmem = (char *) 0xb8000;
/* "Hello " */
vidmem[0] = 'H';
vidmem[1] = 0x7;
vidmem[2] = 'e';
vidmem[3] = 0x7;
vidmem[4] = 'l';
vidmem[5] = 0x7;
vidmem[6] = 'l';
vidmem[7] = 0x7;
vidmem[8] = 'o';
vidmem[9] = 0x7;
vidmem[10] = ' ';
vidmem[11] = 0x7;
/* "World " */
vidmem[12] = 'W';
vidmem[13] = 0x7;
vidmem[14] = 'o';
vidmem[15] = 0x7;
vidmem[16] = 'r';
vidmem[17] = 0x7;
vidmem[18] = 'l';
vidmem[19] = 0x7;
vidmem[20] = 'd';
vidmem[21] = 0x7;
vidmem[22] = ' ';
vidmem[23] = 0x7;
/* "OS" */
vidmem[24] = 'O';
vidmem[25] = 0x7;
vidmem[26] = 'S';
vidmem[27] = 0x7;
return 0;
}
Меня интересуют инструкции:
- Создайте файл ISO после компиляции и запустите его с помощью VMware (или других виртуальных машин).
- Запустите этот код после компиляции на реальной машине при загрузке системы и как добавить его в запись загрузчика (например, GRUB)
img
. С помощью этого файла вы сможете смонтировать его внутри программного обеспечения виртуальной машины илиdd
на USB-накопителе. - person z̫͋   schedule 30.05.2014make
:gcc -g -O -I. -c main.c -o main.o [sig] E:\softwares\cygnus\cygwin-b20\H-i586-cygwin32\bin\make.exe 1000 (0) call_ handler: couldn't get context of main thread, error 998
- person Mojtaba Kamyabi   schedule 30.05.2014kernel.elf
файла с помощьюbootmaker
команды:error: cannot load kernel.elf
Я гуглил, но ничего не нашел :( - person mojibuntu   schedule 30.05.2014