免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4716 | 回复: 10
打印 上一主题 下一主题

[内核入门] 如何自己构建LiveCD,并安装在VirtualBox,进行Kernel debug? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-11 11:13 |只看该作者 |倒序浏览
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. 以下的操作我写成了脚本,请参考:
  1. [free]#!/bin/bash
  2. DIR="proc sys etc dev"
  3. for directory in $DIR
  4. do
  5.     if [ ! -d $directory ]
  6.     then
  7.         mkdir $directory
  8.     fi
  9. done

  10. #create control char device
  11. cd dev
  12. mknod console c 5 1
  13. mknod null c 1 3
  14. cd ..
  15. cd etc

  16. #create fstab file
  17. if [ ! -e "fstab" ]
  18. then
  19.     touch fstab
  20.     echo "#device mount-point type options dump fsck">fstab
  21.     echo "proc /proc proc defaults 0 0">>fstab
  22.     echo "sysfs /sys sysfs defaults 0 0">>fstab
  23. fi

  24. #create init script
  25. if [ ! -d init.d ]
  26. then
  27.     mkdir init.d
  28. fi

  29. if [ ! -e "init.d/rcS" ]
  30. then
  31.     touch init.d/rcS
  32.     echo "#!/bin/sh">init.d/rcS
  33.     echo "mount -a">>init.d/rcS
  34. fi
  35. chmod +x init.d/rcS

  36. #create inittab
  37. if [ ! -e "inittab" ]
  38. then
  39.     touch inittab
  40.     echo "#/etc/inittab">inittab
  41.     echo "::sysinit:/etc/init.d/rcS">>inittab
  42.     echo "console::respawn:-/bin/sh">>inittab
  43.     echo "::ctrlaltdel:/sbin/reboot">>inittab
  44.     echo "::shutdown:/bin/unmount -a -r">>inittab
  45. fi

  46. #check if we are in _install directory
  47. cd ..
  48. if [ -e "linuxrc" ]
  49. then
  50.     rm linuxrc
  51. fi

  52. if [ ! -e init ]
  53. then
  54.     ln -sv bin/busybox init
  55. fi

  56. 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吗?

论坛徽章:
0
2 [报告]
发表于 2012-08-11 11:19 |只看该作者
这是我收集的一些网站,供参考:

首先将有可能用到的工具都列出来,网上的东西太多了,不知用哪个好了。
squashfs-tools:   http://tldp.org/HOWTO/SquashFS-HOWTO/index.html
genisoimage:     http://linux.die.net/man/1/genisoimage
clonezilla:      http://drbl.nchc.org.tw/clonezilla/
Debootstrap:     http://wiki.debian.org/Debootstrap
UCloner:       http://code.google.com/p/ucloner/
Ubuntu:        LiveCDCustomizationFromScratch
TinyX:         http://www.stevengibson.org/smalllinux/
             http://www.superant.com/smalllinux/tinyX01.html
TinyCoreLinux:    http://distro.ibiblio.org/pub/li ... .x/x86/release/src/
remastersys:      http://www.remastersys.com/#
Unetbootin:      http://unetbootin.sourceforge.net/ 在中国无法访问,不过网络上有很多下载的地方,主要用来制作liveUSB使用的
YUMI:         http://www.pendrivelinux.com/  比Unetbootin强大,也好用,不过只能用在windows下.
FLTK:         http://www.fltk.org/  

论坛徽章:
0
3 [报告]
发表于 2012-08-11 20:53 |只看该作者
没有人顶一下吗? 有没有什么建议吗?

论坛徽章:
0
4 [报告]
发表于 2012-08-12 00:35 |只看该作者
我用busybox 1.18 + kernel 3.4 再加个 x window system (这个是拷贝的别的系统上的) 可以启动。x window system 还在研究中,不知道用tiny x可以不,还在研究中。

论坛徽章:
0
5 [报告]
发表于 2012-08-12 09:33 |只看该作者
回复 4# xianzq888

嗯! 我想问一下你的busybox+kernel, 是否还需要bootloader. 看起来, 在Linux kernel中设置了ramdisk, 用busybox生成的initrd.gz应该可以boot起来的。但是我的就是提示读不到可启动的设备
   

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
6 [报告]
发表于 2012-08-12 11:26 |只看该作者
一般下载一个安装版本的iso以后
里面有isolinux目录
里面有vmlinuz  install.img  initrd.img

论坛徽章:
0
7 [报告]
发表于 2012-08-12 13:53 |只看该作者
我现在都是用没有X的ubuntu在qemu里做实验。这个东西最麻烦的是用户态环境,init,bash,gcc,python还有一些杂七杂八的库,没有这些够呛。

纯粹起一个内核,make defconfig,然后qemu -kernel就行了。还要啥bootloader,iso。

论坛徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16赛季CBA联赛之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金鸡报晓
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年纪念徽章
日期:2016-11-09 13:19:1015-16赛季CBA联赛之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序设计版块每日发帖之星
日期:2015-12-03 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-09 06:20:002015亚冠之吉达阿赫利
日期:2015-07-03 08:39:42
8 [报告]
发表于 2012-08-12 19:23 |只看该作者
用qemu可以很容易构建一套可调试的系统。

论坛徽章:
0
9 [报告]
发表于 2012-08-12 23:29 |只看该作者
回复 7# g__gle


    我可以用静态链接哇!

busybox里面有选项的

论坛徽章:
0
10 [报告]
发表于 2012-08-12 23:31 |只看该作者
回复 6# T-Bagwell


   问下版主大哥,我的livecd 头用的 x window system  可否换成 tiny x这个呢?如果换成这个能否运行QT GTK这类窗口程序呢?虽然我的X 还没编过。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP