linux启动时内核参数问题

11 views
Skip to first unread message

陈若涵

unread,
Aug 14, 2011, 8:29:47 PM8/14/11
to hzlug
hi all,

因为我想动态的产生内核参数,而不是在启动菜单里面写死,不知道有没有更好的方法。

现在的想法是自定义initrd.img,在里面产生所需的内核参数,然后再传给内核。但是现在也找不到一个地方说明如何让initrd传入参数。请问这个方案可行吗?

PS:这个参数是机器的序列号,用dmidecode取得


-----------
悲观的思考,乐观的生活.我们既需要思考的深度,也需要生活的温度!
@ruohanc

Liang Guo

unread,
Aug 14, 2011, 8:49:33 PM8/14/11
to hz...@googlegroups.com
如果内核参数想要放在initrd中,可以修改/etc/modprobe.conf或者/etc/sysctl.conf然后重新生成initrd文件。

写在initrd中比写在启动菜单里边还灵活么?

2011/8/15 陈若涵 <crha...@gmail.com>:

> --
> 欢迎来到杭州Linux用户组邮件列表
> 要在列表里发起一个帖子(专业术语叫线索,thread) 发送邮件到 hz...@googlegroups.com
> 如要退订: 请发送空邮件至 hzlug+un...@googlegroups.com
> 详情请看: http://groups.google.com/group/hzlug?hl=zh-CN
>

--
Liang Guo
http://bluestone.cublog.cn

Weiqiang

unread,
Aug 14, 2011, 9:01:27 PM8/14/11
to hz...@googlegroups.com
首先,我理解内核参数是内核加载的时候就要用到的,initrd已经是文件系统层面了。走到initrd的时候内核已经跑起来,已经过了这个阶段。

具体的话,我们可以读读代码,看看内核是如何加载内核参数的。

对于你的需求,我想可以通过两种途径实现

1. 修改grub

2. 自己做一个内核模块,在系统启动以后把你想要的数据通过自己的内核模块传进去。


2011/8/15 陈若涵 <crha...@gmail.com>

Weiqiang

unread,
Aug 14, 2011, 9:49:45 PM8/14/11
to hz...@googlegroups.com

对了为啥不在内核里需要用参数的地方直接读硬件呢-一个很小的驱动啊

陈若涵

unread,
Aug 14, 2011, 10:55:09 PM8/14/11
to hz...@googlegroups.com
唔。。实际上的需求是用pxe启动,然后根据机器的不同,采用不同的ks模板安装rhel。。。。

ks可以通过http方式获取,意思就是可以动态化,比如向一个php页面请求。ks的请求位置是定义在内核参数里面的,通过`ks=http://host/ks.php`获取

我能想到的最方便的方法就是获得sn号后,告诉内核去`http://host/ks.php?sn=xxxx`的地方获取ks脚本,而这个xxxx需要动态生成。


@weiqiang 说道内核模块,我还写不来TAT

@Guo 写在启动菜单里没办法实现差异化吧? 就像我上面的需求应该没法实现吧?


-----------
悲观的思考,乐观的生活.我们既需要思考的深度,也需要生活的温度!
@ruohanc



2011/8/15 Weiqiang <lwei...@gmail.com>

Unicser

unread,
Aug 17, 2011, 6:11:17 AM8/17/11
to Hangzhou (杭州) Linux User Group
是不是可以用唯一的ks.cfg,然后利用里面的%pre和%post做定制化

On Aug 15, 10:55 am, 陈若涵 <crhan...@gmail.com> wrote:
> 唔。。实际上的需求是用pxe启动,然后根据机器的不同,采用不同的ks模板安装rhel。。。。
>
> ks可以通过http方式获取,意思就是可以动态化,比如向一个php页面请求。ks的请求位置是定义在内核参数里面的,通过`ks=http://host/ks.php`获取
>
> 我能想到的最方便的方法就是获得sn号后,告诉内核去`http://host/ks.php?sn=xxxx`
> 的地方获取ks脚本,而这个xxxx需要动态生成。
>
> @weiqiang 说道内核模块,我还写不来TAT
>
> @Guo 写在启动菜单里没办法实现差异化吧? 就像我上面的需求应该没法实现吧?
>
> -----------
> 悲观的思考,乐观的生活.我们既需要思考的深度,也需要生活的温度!
> @ruohanc
>

> 2011/8/15 Weiqiang <lweiqi...@gmail.com>


>
>
>
>
>
>
>
> > 首先,我理解内核参数是内核加载的时候就要用到的,initrd已经是文件系统层面了。走到initrd的时候内核已经跑起来,已经过了这个阶段。
>
> > 具体的话,我们可以读读代码,看看内核是如何加载内核参数的。
>
> > 对于你的需求,我想可以通过两种途径实现
>
> > 1. 修改grub
>
> > 2. 自己做一个内核模块,在系统启动以后把你想要的数据通过自己的内核模块传进去。
>

> > 2011/8/15 陈若涵 <crhan...@gmail.com>

Weiqiang

unread,
Aug 17, 2011, 6:50:52 AM8/17/11
to hz...@googlegroups.com
其实这个想法之前我在列表里提到过:

装两个Linux:一个recovery,另一个production。recovery是公共的,做成最小系统,并且做成支持p2p的自动部署程序。recovery os 把机器类型上报到从中央管理节点,中央管理节点决定production os类型。

部署完成以后recovery os 修改grub重启到production os.

recovery os 上部署一些诊断工具,如果production os出问题了,可以用于调试,定位。


Weiqiang


2011/8/17 Unicser <uni...@gmail.com>

陈若涵

unread,
Aug 17, 2011, 12:36:55 PM8/17/11
to hz...@googlegroups.com
用%pre和%post没办法自定义安装的软件包,以及定义不同的磁盘分区方法。是吧?


-----------
悲观的思考,乐观的生活.我们既需要思考的深度,也需要生活的温度!
@ruohanc



2011/8/17 Unicser <uni...@gmail.com>

陈若涵

unread,
Aug 17, 2011, 12:41:03 PM8/17/11
to hz...@googlegroups.com
恩,这样当然可行。问题在于用什么来做这个最小的recovery系统呢?




-----------
悲观的思考,乐观的生活.我们既需要思考的深度,也需要生活的温度!
@ruohanc



2011/8/17 Weiqiang <lwei...@gmail.com>
Reply all
Reply to author
Forward
0 new messages