當我們在 kernel source 之下輸入 make rpm 時,Makefile 最終會幫我們建出 RPM file,而在包 RPM file 最主要的就是 spec file,因此 Makefile 會去呼叫 scripts/package/mkspec 這 shell script 來建立 spec file
原本預設的情況只會包出最基本的 kernel RPM file,我們得手動建立 init img 以及 grub menu 的更改,但事實上我們使用 Fecora Core 的 kernel RPM file 安裝完之後這兩件工作都已經完成了,所以我利用 rpm -q --scripts kernel 去看看 Fedora Core 的 kernel RPM file 的 script 到底做了什麼事,就會看下面片段
postinstall scriptlet (using /bin/sh):
...
...
/sbin/new-kernel-pkg --package kernel --mkinitrd --depmod --install 2.6.18-1.2849.fc6 || exit $?
...
preuninstall scriptlet (using /bin/sh):
...
...
/sbin/new-kernel-pkg --rminitrd --rmmoddep --remove 2.6.18-1.2849.fc6 || exit $?
...
在這當中,最重要的莫過於 postinstall 代表安裝完 RPM file 後執行的 scripts 而 preuninstall 代表要移除 RPM file 前所執行的 scripts,兩者都去呼叫了 /sbin/new-kernel-pkg 這個 scripts,這隻 scripts 是 Redhat 寫出來的一個小工具方便 user 可以安裝移除新的 kernel 並且可以幫您修改 grub menu ,非常方便,所以我也在我們的 nctuns-kernel 的 mkspec 加上下面的片段來完成以往必須在 install.sh 才做的事情:
echo "%post"
echo "/sbin/new-kernel-pkg --package kernel --mkinitrd --depmod --install $KERNELRELEASE --banner NCTUns || exit $?"
echo ""
echo "%preun"
echo "/sbin/new-kernel-pkg --rminitrd --rmmoddep --remove $KERNELRELEASE || exit $?"
echo ""
如此一來就可以將安裝 kernel 這件事情與 install.sh 切的更乾淨,移除時也不會有殘留的 grub menu
Home >
NCTUns kernel
> mkspec shell script
Wednesday, December 06, 2006
mkspec shell script
Subscribe to:
Post Comments (Atom)

0 Comments:
Post a Comment