Thursday, April 27, 2006

Day Four - Mounting CDROM - stage 1 (0.3)

At last, with a little change in my kernel configuration, I can mount CDROM , here is my stage-1.0.3 script :

# cleanup ##########

rm -rf *.iso
rm -rf isolinux

# initrd.gz ##########

dd if=/dev/zero of=initrd bs=1M count=1
mke2fs -F -m0 -b 1024 initrd
mkdir initrdDIR
mount -t ext2 -o loop initrd initrdDIR
rm -rf initrdDIR/lost+found/

# /proc
mkdir initrdDIR/proc

# /cdrom
mkdir initrdDIR/cdrom

# /dev
mkdir initrdDIR/dev
mknod -m 600 initrdDIR/dev/console c 5 1
mknod -m 660 initrdDIR/dev/hda b 3 0
mknod -m 660 initrdDIR/dev/hdb b 3 64
mknod -m 660 initrdDIR/dev/hdc b 22 0
mknod -m 660 initrdDIR/dev/hdd b 22 64

# busybox
cp -r /root/bootcd/src/busybox-1.00/_install/* initrdDIR/
rm -rf initrdDIR/linuxrc

# linuxrc
echo '#!/bin/sh' > initrdDIR/linuxrc
echo 'echo " Hello World !! 0.3" ' >> initrdDIR/linuxrc
echo 'echo Mounting /proc filesystem' >> initrdDIR/linuxrc
echo 'mount -t proc /proc /proc' >> initrdDIR/linuxrc

echo '(/bin/mount -t iso9660 /dev/hda /cdrom && /usr/bin/test -f /cdrom/isolinux/isolinux.bin) ||' >> initrdDIR/linuxrc
echo '(/bin/mount -t iso9660 /dev/hdb /cdrom && /usr/bin/test -f /cdrom/isolinux/isolinux.bin) ||' >> initrdDIR/linuxrc
echo '(/bin/mount -t iso9660 /dev/hdc /cdrom && /usr/bin/test -f /cdrom/isolinux/isolinux.bin) ||' >> initrdDIR/linuxrc
echo '(/bin/mount -t iso9660 /dev/hdd /cdrom && /usr/bin/test -f /cdrom/isolinux/isolinux.bin) ||' >> initrdDIR/linuxrc
echo '(/bin/echo Ooops, no CD found. Halting. && /sbin/halt)' >> initrdDIR/linuxrc

echo 'echo Launching a demo shell' >> initrdDIR/linuxrc
echo '/bin/sh' >> initrdDIR/linuxrc
echo 'umount /proc' >> initrdDIR/linuxrc
chmod 755 initrdDIR/linuxrc

umount initrdDIR
rm -rf initrdDIR
gzip -9 initrd

# isolinux ##########

mkdir isolinux
mv initrd.gz isolinux
cp /root/bootcd/src/syslinux-3.11/isolinux.bin isolinux/
cp /root/bootcd/src/linux-2.4.32/arch/i386/boot/bzImage isolinux/vmlinuz

# isolinux.cfg
echo "default hw" > isolinux/isolinux.cfg
echo "label hw" >> isolinux/isolinux.cfg
echo "kernel vmlinuz" >> isolinux/isolinux.cfg
echo "append initrd=initrd.gz" >> isolinux/isolinux.cfg

# boot.cat
find . -type f -exec md5sum {} \; > isolinux/boot.cat

# make ISO9660 ##########

mkisofs -pad -l -r -J -v -V "HELLOWORLD" -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -hide-rr-moved -o helloworld.iso .


This is my kernel 2.4.32 config file change :

1- compile in "ide-cd " :
ATA/IDE/MFM/RLL support -> IDE,ATA and ATAPI block devices -> Include IDE/ATAPI CDROM support
2- conpile in "nls_iso8859_1" :
File system -> Native language support -> NLS ISO 8859-1

0 Comments:

Post a Comment

<< Home