使用grub中的内核demo
来源:互联网 发布:汉字笔顺软件 编辑:程序博客网 时间:2024/05/27 00:47
下载grub-0.97源程序解压缩,进入到docs目录。找到boot.S kernel.c multiboot.h这三个文件,就是我们的试验对象。原理可以搜索多重引导规范multiboot,在grub的official site可以找到。
建立testos.lds链接脚本:
1 OUTPUT_FORMAT("elf32-i386")
2 ENTRY(start)
3 virt = 0x100000; /* 1 meg */
4 phys = 0x100000; /* 1 meg */
5 SECTIONS
6 { .text virt : AT(phys)
7 { code = .;
8 *(.text)
9 . = ALIGN(4096);
10 }
11 .data : AT(phys + (data - code))
12 { data = .;
13 *(.data)
14 . = ALIGN(4096);
15 }
16 .bss : AT(phys + (bss - code))
17 { bss = .;
18 *(.bss)
19 *(COMMON)
20 . = ALIGN(4096);
21 }
22 end = .;
23 }
24
建立Makefile编译脚本:
1 all:
2 gcc -I./ -nostdlib -fno-builtin -O2 -Wall -c kernel.c
3 gcc -I./ -nostdlib -fno-builtin -O2 -Wall -c boot.S
4 ld kernel.o boot.o -T testos.lds -o testos.bin
5 sudo mount -o loop ./floppy.img mnt
6 sudo rm -f mnt/boot/testos.bin
7 sudo install ./testos.bin mnt/boot
8 ls mnt/boot
9 sudo umount mnt
10 sudo sync
11
运行make指令编译,生成testos.bin文件。这样就是我们的”kernel_demo”,放到virtual pc 2007中运行一下(现在这个软件已经免费了,可以到微软官方网站下载),是不是程序打印的结果呢?(将内核testos.bin拷贝到安装了grub的软盘过程请参考这个博客的前面一篇文章,有不清楚的地方可以一起讨论一下哦)
疑问:如果将虚拟地址改为0xc0000000,grub装载kernel时会打印“Selected item cannot fit into memory”,这个是什么缘故?
- 使用grub中的内核demo
- 使用grub中的内核demo(原创)
- 使用objdump grub中的命令
- grub 的安装与使用&&利用grub修改内核启动参数
- grub加载内核
- GRUB无法加载内核
- 使用GRUB
- CentOS6中的破坏性实验(伪根、内核、grub.conf、fstab文件误删恢复)
- GRUB引导linux3.0内核
- ubuntu grub启动默认内核
- linux中的grub
- grub中的date命令
- EMV内核使用中的常见问题
- VCLSkin在Dll中的使用(官方Demo)
- Android中的ACCESS_MOCK_LOCATION权限使用Demo
- Android中的ACCESS_MOCK_LOCATION权限使用Demo
- RN中的navigation的使用方式 demo
- 使用安装盘修复GRUB
- gcc, as, ld的一些笔记
- 写博客,和大家分享技术成果
- ThreadLocal类
- 分布式程序设计
- 二手SCSi硬盘体会
- 使用grub中的内核demo
- 关于linux 封IP 实用方法举例
- 感受支付宝
- 09南方互联网大会议程出炉
- 设置制表位
- Java单例模式
- 开始写学习笔记啦
- Subversion 性能调优
- 用 MinGW 编译 Fluent UDF