自己写内核–编译内核

在ubuntu下面:

写代码boot.asm
● 编译:nasm -f elf boot.asm -o boot.o
如果没有nasm,则安装它 apt install nasm -y 。

写代码kernel.c
● 编译:gcc -m32 -c -o kernel.o kernel.c

写代码link.ld
● 用ld命令链接目标文件boot.o和kernel.o,指明使用链接脚本link.ld:
ld -T link.ld -m elf_i386 -nostdlib boot.o kernel.o -o mykernel

运行上面命令后,会生成我们要启动的真正的内核mykernel,这个mykernel满足GRUB启动规范。

● 如何将文件弄到模拟环境中呢:在 ubuntu 中将 mykernel 文件 ftp 到一个服务器中,在 win7 中通过filezilla将文件下载到硬盘,将虚拟机的硬盘文件映射成可读写的网络硬盘,将 mykernel 文件拷贝到网络硬盘中,断开网络硬盘,启动虚拟机。ok。

在windows下面:

nasm好像有win版本。曾经用过。
但还没找到windows下的gcc编译成elf文件的方法,暂不知道该如何交叉编译。
link还没到这步,还不知道。

Leave a comment

Your email address will not be published. Required fields are marked *