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