|
本帖最后由 WM_CH 于 2022-9-15 14:37 编辑
我在用bochs进行调试,
内核是linux2.4.0【在redhat 7.3上可以编译生成bzImage】
一、
dd命令制作了一个硬盘镜像,
dd if=/dev/zero of=hd.img bs=516096c count=100
二、
前边63扇区安装grub,后边的硬盘空间全部只划分一个分区,
fdisk -u -C100 -S63 -H16 hd.img
- Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
- Building a new DOS disklabel with disk identifier 0x0d508796.
- Changes will remain in memory only, until you decide to write them.
- After that, of course, the previous content won't be recoverable.
- Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
- WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
- switch off the mode (command 'c').
- Command (m for help): c <=================
- DOS Compatibility flag is not set
- Command (m for help): n <=================
- Command action
- e extended
- p primary partition (1-4)
- p <=================
- Partition number (1-4): 1 <=================
- First sector (1-100799, default 1): 63 <=================
- Last sector, +sectors or +size{K,M,G} (63-100799, default 100799): <=================回车
- Using default value 100799
- Command (m for help): w <=================
- The partition table has been altered!
- Syncing disks.
复制代码
三、
losetup -o 32256 /dev/loop0 hd.img
跳过63x512=32256个字节再挂载
四、
格式化分区
mkfs.ext2 /dev/loop0
五、
将主机用的grub文件拷贝到硬盘镜像中【主机用的是centos6.4】【编译内核用的是redhat7.3】
mount -t ext2 /dev/loop0 /mnt/
mkdir -p /mnt/boot/grub
cp /boot/grub/stage1 /mnt/boot/grub/
cp /boot/grub/stage2 /mnt/boot/grub/
cp /boot/grub/e2fs_stage1_5 /mnt/boot/grub/
cp /boot/grub/grub.conf /mnt/boot/grub/
ln -s /mnt/boot/grub/grub.conf /mnt/boot/grub/menu.lst
六、
卸载设备
umount /mnt/
losetup -d /dev/loop0
安装grub
grub --device-map=/dev/null
device (hd0) hd.img
geometry (hd0) 100 16 63
root (hd0,0)
setup (hd0)
quit
七、
拷贝内核、busybox制作的文件系统
losetup -o 32256 /dev/loop0 hd.img
mount -t ext2 /dev/loop0 /mnt/
cp bzImage /mnt/boot/vmlinuz
拷贝完文件系统之后,/mnt目录如下
[root@bogon work]# ls /mnt/
bin boot dev etc linuxrc lost+found mnt proc root sbin sys tmp usr var
注:busybox是我在Redhat7.3上边编译的busybox-0.60.3.tar.bz2
八、
修改/mnt/boot/grub/grub.conf文件:
- default=0
- timeout=5
- splashimage=(hd0,0)/grub/splash.xpm.gz
- hiddenmenu
- title Linux-2.4.0
- root (hd0,0)
- kernel /boot/vmlinuz rw root=/dev/hda1 init=/linuxrc
复制代码
卸载
umount /mnt/
losetup -d /dev/loop0
bochs启动后,报错:
我想问一下,
将内核、文件系统放到同一个分区里面,这样的做法是对的吗?
之前想弄ramdisk、initrd啥的,一直弄不成,所以就想让内核直接来挂载我这个唯一的分区得了,结果还是不行。
了解的兄弟帮我解答一下啊,谢谢了。
。
参考链接:
https://www.linuxidc.com/Linux/2016-11/137354.htm
https://www.linuxidc.com/Linux/2016-11/137353.htm
https://www.linuxidc.com/Linux/2016-11/137343.htm
https://www.linuxidc.com/Linux/2016-11/137342.htm
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|