linux 内核编译笔记 (jettison, snowflock)
来源:互联网 发布:按网络拓扑结构分类 编辑:程序博客网 时间:2024/09/21 06:48
过去的三个月一直在接触和 linux kernel 相关的工作,具体是要在一台新服务器上跑一个基于xen上修改的系统。期间遇到了很多问题,我也没想到用了三个多月我也没有完全解决这些问题。这中间我一直都有用英语写下一些笔记,但觉得有必要用中文来总结反思一次,这样或许会更深刻。
disclaimer: 这篇文章中一个自我总结,里面的很多技术问题都只我独有的,不担保你会遇到
同时,这是基于这样的一个现实:对这个博客关注得最热心的其实就是我自己。我时不时会回来翻阅一下自己的笔记(我肯会的),也好让一些积淀不至于那么快被遗忘。
废话不多,直接上技术细节。
1. 学习过程
任务:我要在新的server (Supermicro X9ADi)上跑 Jettison, Jettison 是基于09 年的snowflock,实现的功能大致是部分虚拟机迁移(partial VM migration), 有兴趣可以读论文去,我这里只讲我遇到的技术问题。
首先,jettison 只在 Debian 5.10 上编译和部署成功过,为了保险,我只能先在server上装Debian 5.10. 为此,我还把另一台机器(fox12) 的光驱拿过来用,因为server没有自带光驱(后面发现server 连vga 口都没有,我又把fox12 的显卡拿过来插在上头用)。
弄好光驱后,安装debian 5.10 (net-install) 版本,在安装过程中,发现debian 5.10的内核(kernel v2.6.26) 太旧,连server的集成网卡都不支持,无奈之下我只想到把fox12的独立网卡拔了插在server主板上面,居然成功了。有网络用的debian 5当时是the most beautiful thing in my life.
装完debian 5.10 后,我要在上面编译jettison,发现它对编译环境极其挑剔,需要gcc-4.3, glibc >=2.9, 还有很多的package,以下是我集齐的原有的包:
apt-get install make gcc-4.2 git gawk zlib1g zlib1g-dev libace-ssl-5.6.3 libx11-dev gettext libcurl4-openssl-dev bcc ncurses-dev python-dev texinfo bzip2 xutils-dev git-core
编好jettison居然是两个月后了,那时server才真正被快递公司送过来。 编好jettson enable 的内核后,发现它连启动都启动不了,grub loading 的时候 找不到 root-fs. 其间还出过一个“xen-prof: initialization failed”的误导信息,导致天真的我以为kernel 太旧,在服务器上跑不起来(那时我还没有养成死扣细节的习惯,不会看错误信息,然后去debug)。
找不到root-fs 的信息被我发现,为此我还写了一篇博文(http://blog.csdn.net/kevin_ut/article/details/17151799) 。博文其实是一封我发给老板和大师兄的邮件,意思大概是,从内核2.6.19 才开始有对 server上的C600/X79 series chipset 6-Port SATA AHCI Controller的支持,2.6.18 没有。
万恶的版本更新。万恶的软件degradation.
现在我们只能尝试去编译新的内核,用2.6.27去我们的dom0, 所幸的是,jettison 基于 snow-flock 上做的,而jettison 本身对don0没有做任何的patch. 我们只要把 snow-flock 的dom0 (2.6.27版本内核 ) 编好就行了,而domU 还是用2.6.18 也没关系。
2. 总结
短短三个月,我学到了很多关于编译Linux内核的东西,虽然很多都只是细节上的东西。从一个对命令行很陌生的小菜鸟,进化到一个会读dmesg, 会编译内核,懂一些硬件参数和术语,基本具备一个system 底层开发能力的中级菜鸟。
以下是一些个人体会:
1. 遇到错误信息,沉住气,不慌张。最简单的道理也是最难做到的。
2. 沉住气,用好搜索引擎。包括两方面,一是把搜索结果看完整,多看几个人写的问答或博客。二是,不要畏惧英文,那些写得长的文字,静下心来,调动思维,看开了头后,很多内容都是很容易懂的,而且可以跳过去的。
3. 沉住气,离开屏幕,在笔记本上先想好下一步的打算,想清楚了,再回来敲命令。一味地敲命令,或者看google搜索结果,很容易忘记自己最初目的。一句话,要用学会用自己的逻辑做判断,不要冲动。
更新于:2013年12月12日:我终于把dom0 编好了,2.6.27!
disclaimer: 这篇文章中一个自我总结,里面的很多技术问题都只我独有的,不担保你会遇到
同时,这是基于这样的一个现实:对这个博客关注得最热心的其实就是我自己。我时不时会回来翻阅一下自己的笔记(我肯会的),也好让一些积淀不至于那么快被遗忘。
废话不多,直接上技术细节。
1. 学习过程
任务:我要在新的server (Supermicro X9ADi)上跑 Jettison, Jettison 是基于09 年的snowflock,实现的功能大致是部分虚拟机迁移(partial VM migration), 有兴趣可以读论文去,我这里只讲我遇到的技术问题。
首先,jettison 只在 Debian 5.10 上编译和部署成功过,为了保险,我只能先在server上装Debian 5.10. 为此,我还把另一台机器(fox12) 的光驱拿过来用,因为server没有自带光驱(后面发现server 连vga 口都没有,我又把fox12 的显卡拿过来插在上头用)。
弄好光驱后,安装debian 5.10 (net-install) 版本,在安装过程中,发现debian 5.10的内核(kernel v2.6.26) 太旧,连server的集成网卡都不支持,无奈之下我只想到把fox12的独立网卡拔了插在server主板上面,居然成功了。有网络用的debian 5当时是the most beautiful thing in my life.
装完debian 5.10 后,我要在上面编译jettison,发现它对编译环境极其挑剔,需要gcc-4.3, glibc >=2.9, 还有很多的package,以下是我集齐的原有的包:
apt-get install make gcc-4.2 git gawk zlib1g zlib1g-dev libace-ssl-5.6.3 libx11-dev gettext libcurl4-openssl-dev bcc ncurses-dev python-dev texinfo bzip2 xutils-dev git-core
编好jettison居然是两个月后了,那时server才真正被快递公司送过来。 编好jettson enable 的内核后,发现它连启动都启动不了,grub loading 的时候 找不到 root-fs. 其间还出过一个“xen-prof: initialization failed”的误导信息,导致天真的我以为kernel 太旧,在服务器上跑不起来(那时我还没有养成死扣细节的习惯,不会看错误信息,然后去debug)。
找不到root-fs 的信息被我发现,为此我还写了一篇博文(http://blog.csdn.net/kevin_ut/article/details/17151799) 。博文其实是一封我发给老板和大师兄的邮件,意思大概是,从内核2.6.19 才开始有对 server上的C600/X79 series chipset 6-Port SATA AHCI Controller的支持,2.6.18 没有。
万恶的版本更新。万恶的软件degradation.
现在我们只能尝试去编译新的内核,用2.6.27去我们的dom0, 所幸的是,jettison 基于 snow-flock 上做的,而jettison 本身对don0没有做任何的patch. 我们只要把 snow-flock 的dom0 (2.6.27版本内核 ) 编好就行了,而domU 还是用2.6.18 也没关系。
2. 总结
短短三个月,我学到了很多关于编译Linux内核的东西,虽然很多都只是细节上的东西。从一个对命令行很陌生的小菜鸟,进化到一个会读dmesg, 会编译内核,懂一些硬件参数和术语,基本具备一个system 底层开发能力的中级菜鸟。
以下是一些个人体会:
1. 遇到错误信息,沉住气,不慌张。最简单的道理也是最难做到的。
2. 沉住气,用好搜索引擎。包括两方面,一是把搜索结果看完整,多看几个人写的问答或博客。二是,不要畏惧英文,那些写得长的文字,静下心来,调动思维,看开了头后,很多内容都是很容易懂的,而且可以跳过去的。
3. 沉住气,离开屏幕,在笔记本上先想好下一步的打算,想清楚了,再回来敲命令。一味地敲命令,或者看google搜索结果,很容易忘记自己最初目的。一句话,要用学会用自己的逻辑做判断,不要冲动。
更新于:2013年12月12日:我终于把dom0 编好了,2.6.27!
0 0
- linux 内核编译笔记 (jettison, snowflock)
- linux内核编译笔记
- linux内核编译笔记
- Linux内核编译笔记
- jettison
- Linux内核学习 编译Linux内核笔记
- Linux内核学习 编译Linux内核笔记
- linux内核编译学习笔记
- ARM Linux内核编译笔记
- 编译Linux内核(笔记)
- Rk3399 linux 内核编译-笔记
- Linux内核笔记(1) 编译内核
- linux-2.6.11内核编译笔记
- 【转老迈】linux内核编译学习笔记
- 内核编译笔记 linux kernel 2.6.30
- linux内核模块编译学习笔记
- linux kernel 学习笔记一 编译内核
- zynq学习笔记四:编译linux内核
- 三国武将所带兵种
- 万能指针: void*
- struts2 constant讲解
- MySql实现远程连接
- PHP面试题集
- linux 内核编译笔记 (jettison, snowflock)
- 已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10
- 最近重新看了下C++ primer 总结了C++开发中需要注意的要点,罗列如下
- AWay3D 动画位置变化的问题
- 自定义Dialog
- mysql 導入數據的操作
- 适合Go语言初学者的资料
- ora00054 资源正忙
- MathType公式与Word文档文字对齐的解决办法