|
usb-vmknoppix << GRUB install >> まだダウンロードしていない場合は、ダウンロードします vmknoppixのダウンロード 1.vmknoppix のcloopマウント $ echo "ディレクトリの作成"; \ test -d /media/iso || sudo mkdir /media/iso; \ test -d /media/sda1 || sudo mkdir /media/sda1; \ \ echo "[cloop]マウントと[sda1]マウント"; \ sudo mount -o loop ~/knoppix_v5.3.1CD_20080326_xen3.2.1-20080519.iso /media/iso; \ mount | grep sda1 || sudo mount /dev/sda1 /media/sda1 2.必要なファイルのコピー(normal kernel)での起動用のファイルを使用します 後で必要になった時のため、boot以下をすべてコピーします 他にISOをコピーするので、「/boot/VMK」というディレクトリを作成してコピーします $ echo "起動用ディレクトリの作成と起動ファイルのコピー"; \ sudo mkdir -p /media/sda1/boot/VMK; \ sudo cp -pr /media/iso/boot/* /media/sda1/boot/VMK 3.変更箇所の確認 言語は「us/en」があるので、「ja」に変換します $ sed s/"lang=en\|lang=us"/"lang=ja bootfrom="/g /media/sda1/boot/VMK/grub/menu.lst | \ sed s/" "/"\n"/g | grep "lang" | sort | uniq lang=ja 「/boot」を「/boot/VMK」に置き換えます $ sed s/" "/"\n"/g /media/sda1/boot/VMK/grub/menu.lst | \ sed s/"\/boot\/"/"\/boot\/VMK\/"/g | grep "/boot" | sort | uniq /boot/VMK/inetboot/linux /boot/VMK/inetboot/minirt.gz /boot/VMK/isolinux/bitvisor.elf /boot/VMK/isolinux/gpxe.krn /boot/VMK/isolinux/linux /boot/VMK/isolinux/minirt.gz /boot/VMK/xen/miniroot-xen.gz /boot/VMK/xen/vmlinuz-2.6.18.8-xen /boot/VMK/xen/xen-3.2.1.gz bootfromのマニュアルを確認します $ echo "[bootfrom]"; grep -A 2 "bootfrom" /media/iso/KNOPPIX/knoppix-cheatcodes.txt [bootfrom] knoppix bootfrom=/dev/hda1 Access Image then boot from previously copied CD-Image (enables booting from NTFS / ReiserFS) ***) knoppix bootfrom=/dev/hda1/KNX.iso Access image, boot from ISO-Image. ***) knoppix knoppix_dir=KNOPPIX Directory to search for on the CD. knoppix knoppix_name=KNOPPIX Cloop-File to search for on the CD. -- KNOPPIX.iso on /dev/hda1 you can access it as: bootfrom=/dev/hda1/K*.iso, but if there are several, you need to make clear, which one you want. (Feature added by Fabian Franz.) 文字制限は256文字です。 「lang=ja」の後に「bootfrom=/dev/sda4/VMK.iso」を追加し、runlevelを2に変更します $ echo "bootfrom=/dev/sda4/VMK.iso VMK/ 2" | wc -c 34 $ let x=256-34;echo $x 224 最大コマンド数を確認します $ for list in $(grep "^kernel" /media/sda1/boot/VMK/grub/menu.lst);do \ if [ "$list" == "kernel" ]; \ then \ echo $n;n="1"; \ else \ let n="$n"+1; \ fi; \ done | sort -nr | head -1 16 最大のコマンド文字数を確認します $ for list in $(grep "^kernel" /media/sda1/boot/VMK/grub/menu.lst); \ do \ if [ "$list" == "kernel" ];then \ echo $m;m="0"; \ else let m=$m+$(echo "$list" | wc -c); \ fi; \ done | sort -nr | head -1 211 cmdlineに読み込まれない分を確認します $ grep "^kernel" /media/sda1/boot/VMK/grub/menu.lst | \ sed s/"kernel"//g | awk '{print $1}' | \ for list in `xargs` ; \ do echo "$list" | wc -c; \ done | sort -nr | uniq 28 24 23 21 「root (hd0,0)」を追加します 4.実際に変更を行います $ sudo sh -c 'sed s/"^kernel"/"root (hd0,0)\nkernel"/g /media/sda1/boot/VMK/grub/menu.lst | \ sed s/"lang=us\|lang=en"/"lang=ja bootfrom=\/dev\/sda4\/VMK.iso"/g | \ sed s/"\/boot\/"/"\/boot\/VMK\/"/g | \ sed s/"^kernel.*$"/"& 2"/g > /media/sda1/boot/VMK/grub/menu.lst.custom ' 追加した後の最大文字数を確認します $ for list in $(grep "^kernel" /media/sda1/boot/VMK/grub/menu.lst.custom); \ do \ if [ "$list" == "kernel" ];then \ echo $m;m="0"; \ else let m=$m+$(echo "$list" | wc -c); \ fi; \ done | sort -nr | head -1 244 他にも「VGA=」を変更する場合は以下の表を参考にします $ let a=0x307;let b=0x319;let c=0x31A d=0x31B; \ echo "$a : $b : $c : $d" 775 : 793 : 794 : 795 : 640x480 : 800x600 : 1024x768 : 1280x1024 256( 8bit) : 769(0x301) : 771(0x303) : 773(0x305) : 0x307 32K(15bit) : 784(0x310) : 787(0x313) : 790(0x316) : 0x319 64K(16bit) : 785(0x311) : 788(0x314) : 791(0x317) : 0x31A 16M(24bit) : 786(0x312) : 789(0x315) : 792(0x318) : 0x31B 例) $ sudo sh -c 'sed s/"vga=791"/"vga=785"/ /media/sda1/boot/VMK/grub/menu.lst.custom \ > /media/sda1/boot/VMK/grub/menu.lst.vga785' 5.menu.lstをmenu.lst.orgに変更 menu.lst.customをmenu.lstに変更します $ SRC="/media/sda1/boot/VMK/grub"; \ sudo mv ${SRC}/menu.lst ${SRC}/menu.lst.org && \ sudo mv ${SRC}/menu.lst.custom ${SRC}/menu.lst $ echo "sda4のマウントディレクトリの確認"; \ test -d /media/sda4 || sudo mkdir /media/sda4; \ echo "sda4のマウント"; \ mount | grep sda4 || sudo mount /dev/sda4 /media/sda4; \ 6.knoppix_v5.3.1CD_20080326_xen3.2.1-20080519.isoをsda4ディレクトリにコピーします $ SRC="knoppix_v5.3.1CD_20080326_xen3.2.1-20080519.iso"; \ sudo cp -p ${SRC} /media/sda4; \ sudo mv /media/sda4/${SRC} /media/sda4/VMK.iso && \ sudo ln -s /media/sda4/VMK.iso /media/sda4/${SRC} 7.grubをインストールします $ sudo mount -o remount,dev,rw /dev/sda1; \ sudo grub-install --root-directory=/media/sda1 /dev/sda 起動時のdevice.mapにマッピングされたデバイスを確認します $ cat /media/sda1/boot/grub/device.map (fd0) /dev/fd0 (hd0) /dev/hda (hd1) /dev/sda (hd2) /dev/sdb menu.lstをインストールされたgrubディレクトリにコピーします $ sudo cp -p /media/sda1/boot/VMK/grub/menu.lst /media/sda1/boot/grub/ 8.MBRを確認します(最終確認) $ echo "[MBR stage1]"; \ sudo dd if=/dev/sda bs=512 count=1 2> /dev/null | od -tx1 -N 446; \ echo "[Partition]"; \ sudo dd if=/dev/sda bs=512 count=1 2> /dev/null | od -tx1 -j 446 -N 64; \ echo "[boot signiture]"; \ sudo dd if=/dev/sda bs=512 count=1 2> /dev/null | od -tx1 -j 510 -N 2 stage1 にも正常にインストールされたことが確認できます $ sudo dd if=/dev/sda bs=512 count=1 2> /dev/null | \ od -tx1 -N 446 | head -1 | cut -b 9- eb 48 90 00 00 00 00 00 00 00 00 00 00 00 00 00 お決まりのjmpコマンドからはじまっています $ sudo dd if=/dev/sda bs=512 count=1 > a.out; \ sudo objdump -D -m i386 -b binary -EL a.out | head -8 | tail -2 0: eb 48 jmp 0x4a 2: 90 nop 9.ddコマンドで/dev/sda2にVMknoppixをコピーします $ dd if=/media/sda4/VMK.iso of=/dev/sda2 bs=512k 10.PC再起動 usb-vmknoppix(VMK.iso)を使って確認します 戻る TOP |