LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: d00m3d

能否不重新起動而使用新遍譯好的內核

[复制链接]
发表于 2008-9-29 21:05:18 | 显示全部楼层
谢谢d00m3d  3年如一日的不懈努力,呵呵。
回复 支持 反对

使用道具 举报

发表于 2008-10-9 17:05:45 | 显示全部楼层
强帖啊~~~~~

可是根据这个思路,想解决一个一直没有解决的问题,不知道能不能行,还请DOOM兄多多指教啊~~

问题是这样的,家里有个LINKSYS的路由器,带有USB接口,可以使用OPENWRT,然后CHROOT到USB连接的移动硬盘上的系统去。但是这样,实际上还是用的FLASH里边的库文件和内核,在想,是否可以通过l-kexe,去把原先的OPENWRT当作X86系统中的bios,去引导移动硬盘上的Debian-mips版本。

主要想解决的问题就是CFE(Common Firmware Environment) ,不能够直接引导移动硬盘上的系统,想通过这种变通的方式完成。(CFE+kernel+jffs+nvram=Flash里边的数据)

不知道有没有这种可能性?望指教
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-9 19:27:16 | 显示全部楼层
抱歉!这方面我不懂 :(

kexec 本身只是切换内核而非切换操作系统,估计用 kexec 是不行的。也许 kboot 及 kexec-loader 或者可以,但这方面实在外行,如不行请勿掷鸡蛋。

http://www.linuxsir.cn/bbs/thread335331.html 第 10 帖
回复 支持 反对

使用道具 举报

发表于 2008-10-11 16:15:16 | 显示全部楼层
kexec的作用是在内核出现panic的时候,启动备用内核。因为这个时候内存里面还保留先前内核的运行现场,所以,新启动的内核可以收集这些信息用于诊断调试。这就是CGL Linux中的临终遗言。不过这个时候已经算是重新启动机器了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-11 16:46:38 | 显示全部楼层
Post by camelguo;1892781
kexec的作用是在内核出现panic的时候,启动备用内核。因为这个时候内存里面还保留先前内核的运行现场,所以,新启动的内核可以收集这些信息用于诊断调试。这就是CGL Linux中的临终遗言。不过这个时候已经算是重新启动机器了。
当内核出现 panic 的时候系统运能启动备用内核吗?

不是太明白,能否再详细解释一下,谢谢。
回复 支持 反对

使用道具 举报

发表于 2008-10-11 20:32:16 | 显示全部楼层
一般内核panic的时候都是将少量的现场状态信息写入consule,然后进入无限循环(不同体系结构不一样),内核在这个时候,能够写信息到控制台,为何就不能直接跳转到某个固定位置的地方去执行呢。这个地方在内核启动的时候就已经设置好了,它就是kexec需要启动的诊断内核。

关于这个问题的具体细节请参见http://lkcd.sourceforge.net/
回复 支持 反对

使用道具 举报

发表于 2008-10-13 11:37:19 | 显示全部楼层
可以参考一下这个
http://user-mode-linux.sourceforge.net/
回复 支持 反对

使用道具 举报

发表于 2008-10-31 23:36:47 | 显示全部楼层
Post by bailiang27;1892127
强帖啊~~~~~

可是根据这个思路,想解决一个一直没有解决的问题,不知道能不能行,还请DOOM兄多多指教啊~~

问题是这样的,家里有个LINKSYS的路由器,带有USB接口,可以使用OPENWRT,然后CHROOT到USB连接的移动硬盘上的系统去。但是这样,实际上还是用的FLASH里边的库文件和内核,在想,是否可以通过l-kexe,去把原先的OPENWRT当作X86系统中的bios,去引导移动硬盘上的Debian-mips版本。

主要想解决的问题就是CFE(Common Firmware Environment) ,不能够直接引导移动硬盘上的系统,想通过这种变通的方式完成。(CFE+kernel+jffs+nvram=Flash里边的数据)

不知道有没有这种可能性?望指教


呵呵,想法很好,个人感觉还是有可能的。
1  chroot后,实用kexec执行新的内核。
2 重新mount新的磁盘作为根分区(类似linux启动时候的场景)
可能的难题。实际上kexec后,内核已经可能丢失了之前的所有信息。但是现在linux也在研究休眠技术,可以结合起来保存原来的现场信息,等新内核起来以后在恢复使用。

在linux里面没有什么不可能的。只是简单和繁琐的区别罢了。
呵呵,纯粹个人乱诌,不对的地方,大家指点。
回复 支持 反对

使用道具 举报

发表于 2008-11-2 13:50:29 | 显示全部楼层
呵呵,想法非常cool~

貌似grub有一个fallback参数,可以指定在内核启动失败后自动切换到正常的内核,不知道这个有没有帮助:

如何更新远程主机上的linux内核
http://oss.lzu.edu.cn/blog/blog.php?/do_showone/tid_1728.html
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-4 17:07:21 | 显示全部楼层
谢谢楼上资料及文章内相关连结,长见识了 :)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表