Tuesday, April 25, 2006

Day two - Lunching "Hello World !!" - Stage 1

According to Esteve's article , I do somthing like this, and it works :

[root@Server mylivecd]# ls
[root@Server mylivecd]# dd if=/dev/zero of=initrd bs=4096k count=1
1+0 records in
1+0 records out
[root@Server mylivecd]# losetup /dev/loop0 initrd
[root@Server mylivecd]# mke2fs -m 0 /dev/loop0
mke2fs 1.27 (8-Mar-2002)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1024 inodes, 4096 blocks
0 blocks (0.00%) reserved for the super user
First data block=1
1 block group
8192 blocks per group, 8192 fragments per group
1024 inodes per group

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@Server mylivecd]# tune2fs -c 0 -i 0 /dev/loop0
tune2fs 1.27 (8-Mar-2002)
Setting maximal mount count to -1
Setting interval between check 0 seconds
[root@Server mylivecd]# mkdir initrdDIR
[root@Server mylivecd]# mount /dev/loop0 initrdDIR/
[root@Server mylivecd]# cd initrdDIR/
[root@Server initrdDIR]# ls
lost+found
[root@Server initrdDIR]# mkdir dev
[root@Server initrdDIR]# cd dev
[root@Server dev]# mknod -m 600 console c 5 1
[root@Server dev]# cd ..
[root@Server initrdDIR]# vi linuxrc.c

/* Print "Hello World!" and loops forever. */

#include <stdio.h>

void main()
{
printf("\n\nHello World!\n");
for(;;);
}


[root@Server initrdDIR]# cc -static linuxrc.c -o linuxrc
linuxrc.c: In function `main':
linuxrc.c:6: warning: return type of `main' is not `int'
[root@Server initrdDIR]# ls
dev linuxrc linuxrc.c lost+found
[root@Server initrdDIR]# cd ..
[root@Server mylivecd]# umount initrdDIR
[root@Server mylivecd]# losetup -d /dev/loop0
[root@Server mylivecd]# mkdir isolinux
[root@Server mylivecd]# cd isolinux
[root@Server isolinux]# cp /boot/vmlinuz-2.4.32 vmlinuz
[root@Server isolinux]# cp /usr/src/syslinux-3.11/isolinux.bin .
[root@Server isolinux]# cp ../initrd .
[root@Server isolinux]# gzip initrd
[root@Server isolinux]# vi isolinux.cfg

default hw
label hw
kernel vmlinuz
append initrd=initrd.gz

[root@Server isolinux]# cd ..
[root@Server mylivecd]# find . -type f -exec md5sum {} \; > isolinux/boot.cat
[root@Server mylivecd]# 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 .
mkisofs 1.14 (i686-pc-linux-gnu)
Scanning .
Scanning ./initrdDIR
Scanning ./isolinux
Excluded by match: ./isolinux/boot.cat

Size of boot image is 4 sectors -> No emulation
Total translation table size: 2048
Total rockridge attributes bytes: 1084
Total directory bytes: 4096
Path table size(bytes): 44
Max brk space used 6000
2672 extents written (5 Mb)
[root@Server mylivecd]# ls
helloworld.iso initrd initrdDIR isolinux
[root@Server mylivecd]#

0 Comments:

Post a Comment

<< Home