USB起動のLinuxのつくり方

デスクトップでもiDCのサーバでも動かしたいのでsyslinuxを使用します。

UNetbootinをつかうとsyslinuxが簡単に入ります。
インストールUSBをつくる為のものです
http://unetbootin.sourceforge.net/

○まずパーテションを2つ切ります。

[ vfat ][ ext3 ]

usbが/dev/sdcだとしたら fdisk /dev/sdc

/dev/sdc1 /dev/sdc2 だとしたら 
/dev/sdc1をvfatでフォーマットしておきます。mkfs.vfat /dec/sdc1
/dev/sdc2をext3でフォーマットしておきます。mkfs.ext3 /dec/sdc2

マウントしておきます
mount /dev/sdc1 /mnt

○次にUNetbootinで/dev/sdc1にインストールディスクとしていれます(あくまでsyslinuxを入れる目的です)

http://ftp.riken.jp/Linux/centos/6.2/isos/x86_64/CentOS-6.2-x86_64-minimal.iso
これなんか少なくてコピーがはやくていいと思います。

[終了]と出たら不要なファイルを消してしまします(残していても問題無いですが)
残すファイル
ldlinux.sys
isolinux
menu.c32
syslinux.cfg
ubninit
ubnkern

○/dev/sdc2に動かしたいLinuxを展開します。既に動いているLinuxをそのままtarで固めて持って来るのが早いし楽です。
 ここではcentos6.2を持ってきてます

mount /dev/sdc2 /mnt2

ls /mnt2
こんな状態になってるかと思います
bin boot dev etc home lib lib64 lost+found media mnt opt proc root sbin selinux srv sys tmp usr var

○/dev/sdc2の boot を/dev/sdc1にコピーしておきます(syslinuxで起動するカーネルが見えるようにする為)

cp -Rfv /mnt2/boot /mnt

○起動にLABELを指定するのでLABELの設定をします

 tune2fs -L /USB_ROOT /dev/sdc2

○設定ファイルを編集します
syslinux側
# cat /mnt/syslinux.cfg

default menu.c32
prompt 0
menu title UNetbootin
timeout 100

label centos62
menu label centos62
kernel /boot/vmlinuz-2.6.32-220.4.1.el6.x86_64
append initrd=/boot/initramfs-2.6.32-220.4.1.el6.x86_64.img root=LABEL=/USB_ROOT

linux
# cat /mnt2/boot/grub/menu.lst

#boot=/dev/sda
default=0
timeout=5
#splashimage=(hd0,0)/grub/splash.xpm.gz
#hiddenmenu

title CentOS (2.6.32-220.4.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-220.4.1.el6.x86_64 ro root=LABEL=/USB_ROOT
initrd /initramfs-2.6.32-220.4.1.el6.x86_64.img

# cat /mnt2/etc/fstab

#/dev/sda2 / ext3 defaults 1 1
LABEL=/USB_ROOT / ext3 defaults 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
#/dev/sda2 swap swap defaults 0 0

後半雑ですねw