Scientific Linux LiveCD カスタマイズ

SL(Scientific Linux)のLiveCDを使ってみて、次の機能が欲しかったのでカスタマイズしてみました。

カスタマイズしたい内容
・KNOPPIX みたいに、起動時にスクリプトを実行させたい。
・GUI は余り使わないので Runlevel 3 で起動してほしい。
・rhgb いらなくね?


1.カスタマイズ元ISOイメージをDL
どこから入手しても良いですが、国内ミラーからDLしたほうが早いでしょう。
有名なミラーサイトとしては以下などありますが、お好きな場所からDLしてもらってかまいません。

 http://ftp.jaist.ac.jp/pub/Linux/scientific/
 http://ftp.kddilabs.jp/Linux/packages/scientificlinux/
 http://ftp.riken.jp/Linux/scientific/
 http://ftp.ne.jp/Linux/distributions/scientificlinux/

ミラーサイトの以下の場所にあるファイルをwgetなどでDLします。
 /6.3/i386/iso/SL-63-i386-2012-08-24-LiveMiniCD.iso

[text]
wget http://ftp.jaist.ac.jp/pub/Linux/scientific/6.3/i386/iso/SL-63-i386-2012-08-24-LiveMiniCD.iso
[/text]

ミニ版なのは当方がこれで十分だからなのですが、
通常版では検証してませんので、あしからず。。。

2.DLしたISOイメージをマウント
[text]
mkdir iso
mount -o loop SL-63-i386-2012-08-24-LiveMiniCD.iso iso
[/text]

3.iso/LiveOS/squashfs.img を展開
[text]
rm -Rf squashfs
unsquashfs -d squashfs iso/LiveOS/squashfs.img
[/text]

4.squashfs/LiveOS/ext3fs.img をマウント
[text]
rm -Rf ext3fs
mkdir ext3fs
mount -o loop squashfs/LiveOS/ext3fs.img ext3fs
[/text]

これがOSイメージが格納されているファイルです。
このファイルを編集していきます。

5.やりたいこと「KNOPPIX みたいに、起動時にスクリプトを実行させたい。」を実現
起動時に実行させたいスクリプトが入っている場所を特定するため、ボリュームラベルを利用したいと思います。
具体的には
 1)「SL-63-USBSTICK」というボリュームラベルのディスクをマウント
 2)その中に「sl.sh」というファイルがあれば実行
という処理を /etc/rc.local に組み込みます。

[text]
vi ext3fs/etc/rc.local
[/text]

以下の内容のコマンドを追記します。
[text]
if [ -b /dev/disk/by-label/SL-63-USBSTICK ]
then
mkdir /mnt/usb
mount /dev/disk/by-label/SL-63-USBSTICK /mnt/usb
fi

if [ -f /mnt/usb/sl.sh ]
then
. /mnt/usb/sl.sh
fi
[/text]

6.squashfs イメージを作成
[text]
umount ext3fs
mksquashfs squashfs squashfs.img
[/text]

7.squashfs イメージの置き換えや、isolinuxの起動スクリプト修正などなど
[text]
rm -Rf temp
cp -a iso temp
\cp squashfs.img temp/LiveOS/squashfs.img
[/text]

[text]
vi temp/isolinux/isolinux.cfg
[/text]

・・・修正箇所は以下の通りデス。
修正内容を理解して変更してください。

以下の内容が書かれたisolinux.cfg.patchを作って、
patch < isolinux.cfg.patch してもおkです。 パッチファイルは本エントリーの下部に置いておきます。 [text] *** iso/isolinux/isolinux.cfg 2012-08-24 08:04:59.000000000 +0900 --- temp/isolinux/isolinux.cfg 2012-09-08 23:29:39.059682141 +0900 *************** *** 1,9 **** default vesamenu.c32 ! timeout 100 menu background splash.jpg ! menu title Welcome to SL-63-i386-LiveMiniCD! menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 --- 1,9 ---- default vesamenu.c32 ! timeout 30 menu background splash.jpg ! menu title Welcome to SL-63-i386-LiveMiniCD Custom Edition! menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 *************** *** 19,46 **** label linux0 menu label Boot kernel vmlinuz0 ! append initrd=initrd0.img root=live:CDLABEL=SL-63-i386-LiveMiniCD rootfstype=auto ro liveimg quiet rhgb rd_NO_LUKS rd_NO_MD rd_NO_DM ! menu default label linuxtext0 menu label Boot (Text Mode) kernel vmlinuz0 ! append initrd=initrd0.img root=live:CDLABEL=SL-63-i386-LiveMiniCD rootfstype=auto ro liveimg 3 quiet rhgb rd_NO_LUKS rd_NO_MD rd_NO_DM label linux0 menu label Boot (Basic Video) kernel vmlinuz0 ! append initrd=initrd0.img root=live:CDLABEL=SL-63-i386-LiveMiniCD rootfstype=auto ro liveimg quiet rhgb rd_NO_LUKS rd_NO_MD rd_NO_DM xdriver=vesa nomodeset label check0 menu label Verify and Boot kernel vmlinuz0 ! append initrd=initrd0.img root=live:CDLABEL=SL-63-i386-LiveMiniCD rootfstype=auto ro liveimg quiet rhgb rd_NO_LUKS rd_NO_MD rd_NO_DM check label install0 menu label Install kernel vmlinuz0 ! append initrd=initrd0.img root=live:CDLABEL=SL-63-i386-LiveMiniCD rootfstype=auto ro liveimg liveinst noswap rd_NO_LUKS rd_NO_MD rd_NO_DM label textinstall0 menu label Install (Text Mode) kernel vmlinuz0 ! append initrd=initrd0.img root=live:CDLABEL=SL-63-i386-LiveMiniCD rootfstype=auto ro liveimg textinst noswap rd_NO_LUKS rd_NO_MD rd_NO_DM label memtest menu label Memory Test kernel memtest --- 19,46 ---- label linux0 menu label Boot kernel vmlinuz0 ! append initrd=initrd0.img root=live:CDLABEL=SL-63-LiveCD rootfstype=auto ro liveimg quiet rd_NO_LUKS rd_NO_MD rd_NO_DM label linuxtext0 menu label Boot (Text Mode) kernel vmlinuz0 ! append initrd=initrd0.img root=live:CDLABEL=SL-63-LiveCD rootfstype=auto ro liveimg 3 quiet rd_NO_LUKS rd_NO_MD rd_NO_DM ! menu default label linux0 menu label Boot (Basic Video) kernel vmlinuz0 ! append initrd=initrd0.img root=live:CDLABEL=SL-63-LiveCD rootfstype=auto ro liveimg quiet rd_NO_LUKS rd_NO_MD rd_NO_DM xdriver=vesa nomodeset label check0 menu label Verify and Boot kernel vmlinuz0 ! append initrd=initrd0.img root=live:CDLABEL=SL-63-LiveCD rootfstype=auto ro liveimg quiet rd_NO_LUKS rd_NO_MD rd_NO_DM check label install0 menu label Install kernel vmlinuz0 ! append initrd=initrd0.img root=live:CDLABEL=SL-63-LiveCD rootfstype=auto ro liveimg liveinst noswap rd_NO_LUKS rd_NO_MD rd_NO_DM label textinstall0 menu label Install (Text Mode) kernel vmlinuz0 ! append initrd=initrd0.img root=live:CDLABEL=SL-63-LiveCD rootfstype=auto ro liveimg textinst noswap rd_NO_LUKS rd_NO_MD rd_NO_DM label memtest menu label Memory Test kernel memtest [/text] 8.isoイメージを作成
[text]
mkisofs -pad -l -r -J -V SL-63-LiveCD -b isolinux/isolinux.bin -c isolinux/boot.cat -hide-rr-moved -no-emul-boot -boot-load-size 4 -boot-info-table -o SL-63-i386-2012-08-24-LiveMiniCD_custom.iso temp
[/text]

あとはCDに焼くなりして利用してください。
カーネルパラメータに vga=791 を追記してもよかったかも?

使い方はあなた次第。。。
USBメモリ上の sl.sh に
[text]
#!/bin/bash
rpm -ivh /mnt/usb/xxxx.rpm
[/text]
とでも書いておけば、rpmパッケージの適用も可能です。

出来上がったisoイメージとパッチファイルを置いておきます。
公開してもいい・・・よね?
問題あればご指摘ください。

SL-63-i386-2012-08-24-LiveMiniCD_custom.iso
isolinux.cfg.patch

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.