- 论坛徽章:
- 0
|
5可用积分
最近一直在看Linux Kernel的东西。为了深入学习,需要在虚拟机中进行调试。详细的要求如下:
1. 虚拟机中的操作系统不能太大,够debug kernel就可以了。大小控制到20M。
PS:我本来想用TinyCore Linux,但是不知如何构建。另一点就是想自己做一个;
2. 图行界面的东西可带或不带;
3. 对于Kernel, 版本无具体要求,但是要是大家常用的,如2.4/2.6, 或是最新的亦可。 不要整个0.1或什么古老的东西出来;开启kgdb模式
4. 最后要求生成ISO文件,可用来在VirtualBox中安装;
5. 要求有自动化脚本,来完成编译,根文件系统创建,生成ISO;
如果能将Linux kernel download, 解压, 编译动作全部完成最好
我初步做一些工作,但是后续的步骤总是不成功,供大家参考;
1. 打开Terminate
2. mkdir custLinux #后续的所有工作都是在此目录下进行;
3. git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git #这个是最新稳定版本 r3.5.1, 当然也可用其它版本;
4. git clone git://busybox.net/busybox.git #下载busybox, 用来构常见的命令集;
5. cd linux-stable #git clone linux下来的文件夹是这个名字;
6. make menuconfig #配置一些需要的项目,不细讲,上网看debug版本的linux要如何配置;
7. make bzImage #生成linux kernel执行文件;
8. cd ..; cd busybox #对busybox进行操作;
9. 以下的操作我写成了脚本,请参考:- [free]#!/bin/bash
- DIR="proc sys etc dev"
- for directory in $DIR
- do
- if [ ! -d $directory ]
- then
- mkdir $directory
- fi
- done
- #create control char device
- cd dev
- mknod console c 5 1
- mknod null c 1 3
- cd ..
- cd etc
- #create fstab file
- if [ ! -e "fstab" ]
- then
- touch fstab
- echo "#device mount-point type options dump fsck">fstab
- echo "proc /proc proc defaults 0 0">>fstab
- echo "sysfs /sys sysfs defaults 0 0">>fstab
- fi
- #create init script
- if [ ! -d init.d ]
- then
- mkdir init.d
- fi
- if [ ! -e "init.d/rcS" ]
- then
- touch init.d/rcS
- echo "#!/bin/sh">init.d/rcS
- echo "mount -a">>init.d/rcS
- fi
- chmod +x init.d/rcS
- #create inittab
- if [ ! -e "inittab" ]
- then
- touch inittab
- echo "#/etc/inittab">inittab
- echo "::sysinit:/etc/init.d/rcS">>inittab
- echo "console::respawn:-/bin/sh">>inittab
- echo "::ctrlaltdel:/sbin/reboot">>inittab
- echo "::shutdown:/bin/unmount -a -r">>inittab
- fi
- #check if we are in _install directory
- cd ..
- if [ -e "linuxrc" ]
- then
- rm linuxrc
- fi
- if [ ! -e init ]
- then
- ln -sv bin/busybox init
- fi
- find . | cpio --quiet -H newc -o | gzip -9 -n > ./initrd.gz[/free]
复制代码 10. 将生成的linux kernel文件及initrd.gz放到同一目录下, 生成ISO文件:
genisoimage -o custLinux.iso bzImage initrd.gz
11. 加载到virtual box中,启动显示:cant read boot media. 不知道哪里错了。 难道还要加grub bootloader吗?
|
|