Subject: Ramdisk issue please help!!!

From: "inpreet" <[email-masked]>
Date: Fri, 5 Aug 2005 15:28:10 +0530

Hello,

I am trying to build ramdisk image and launch bootsplash image at boot time. 
Steps I followed:
1. get splash image initrd.splash using splash binary.
2. dd if=/dev/zero of=initrd bs=1k count=4096
        /sbin/mke2fs -F -m0 -b 1024 initrd
        /sbin/tune2fs -c 0 -i 0 initrd
        mount -t ext2 initrd /mnt/user -o loop 
3. cd /mnt/user
4. mkdir /boot
5. cp /home/user/initrd.splash /boot
6. umount /mnt/user
7. gzip -v9 initrd
8. results in initrd.gz

Now while compiling kernel image I am embedding initrd.gz into it. Here is what I am doing
***************System.map**************
 
802f9000 D _binary__tmp_initrd_gz_start
802f9000 D __rd_start
803d250c D _binary__tmp_initrd_gz_end
803d3000 A __bss_start
803d3000 A _edata
 
***********RAM DISK MAKE FILE************
 
O_FORMAT = $(shell $(OBJDUMP) -i | head -2 | grep elf32)
img = $(CONFIG_EMBEDDED_RAMDISK_IMAGE)
ramdisk.o: $(subst ",,$(img)) ld.script
        echo "O_FORMAT:  " $(O_FORMAT)
        $(LD) -T ld.script -b binary --oformat $(O_FORMAT) -o $@ $(img)

include $(TOPDIR)/Rules.make
 
***********RAM DISK ld.script file********************
 
OUTPUT_ARCH(mips)
SECTIONS
{
  .initrd :
  {
       *(.data)
  }
}
**********************************************
I am using YAMON bootloader. While booting I am passing following parameters to kernel:
start        (R/W)  go be000000 initrd=/boot/initrd.splash rw init=/linuxrc console=tty1 video=au1100fb:panel:640x480_crt splash=silent

************************dmesg result***************
CPU revision is: 02030204
Primary instruction cache 16kB, physically tagged, 4-way, linesize 32 bytes.
Primary data cache 16kB 4-way, linesize 32 bytes.
Linux version 2.4.21 (@node) (gcc version 3.2) #1 Fri Aug 5 13:08:44 IST 2005
DSP Design Aurora AA1100
Determined physical RAM map:
 memory: 04000000 @ 00000000 (usable)
Initial ramdisk at: 0x802f9000 (892928 bytes)
On node 0 totalpages: 16384
zone(0): 16384 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: initrd=/boot/initrd.splash rw init=/linuxrc console=tty1 video=au1100fb:panel:640x480_crt splash=silent usb_ohci=base:0x10100000,len:0x100000,irq:26
fb: calling au1100fb setup<6>au110fb: setup called
au1100fb: Panel 0 640x480_CRT
bootsplash: silent mode.
calculating r4koff... 003c6ef5(3960565)
CPU frequency 396.06 MHz
Console: colour dummy device 80x25
Calibrating delay loop... 395.67 BogoMIPS
Memory: 59824k/65536k available (1788k kernel code, 5712k reserved, 988k data, 96k init, 0k highmem)
Dentry cache hash table entries: 8192 (order: 4, 65536 bytes)
Inode cache hash table entries: 4096 (order: 3, 32768 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer-cache hash table entries: 4096 (order: 2, 16384 bytes)
Page-cache hash table entries: 16384 (order: 4, 65536 bytes)
Checking for 'wait' instruction...  available.
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
Journalled Block Device driver loaded
bootsplash 3.0.9-2003/09/08: looking for picture... no good signature found.
Console: switching to colour frame buffer device 80x30
fb0: Au1100 LCD frame buffer device
pty: 256 Unix98 ptys configured
aa1100_ad: registered
aa1100_ad: baudrate = 1523307 Hz
Serial driver version 1.01 (2001-02-08) with no serial options enabled
ttyS00 at 0xb1100000 (irq = 0) is a 16550
ttyS01 at 0xb1200000 (irq = 1) is a 16550
ttyS02 at 0xb1400000 (irq = 3) is a 16550
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
loop: loaded (max 8 devices)
au1000eth.c:1.4 [email-masked]
eth0: Au1x Ethernet found at 0xb0500000, irq 28
eth0: LSI 80227 10/100 BaseT PHY at phy address 0
eth0: Using LSI 80227 10/100 BaseT PHY as default
Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
ide0: ports already in use, skipping probe
ide1: ports already in use, skipping probe
ide2: ports already in use, skipping probe
ide3: ports already in use, skipping probe
ide4: ports already in use, skipping probe
ide5: ports already in use, skipping probe
au1100 flash: probing 32-bit flash bus
 Amd/Fujitsu Extended Query Table v1.3 at 0x0040
number of CFI chips: 1
cfi_cmdset_0002: Disabling fast programming due to code brokenness.
Creating 3 MTD partitions on "AU1100 flash":
0x00000000-0x01c00000 : "Operating System"
0x01c00000-0x01fc0000 : "YAMON"
0x01fc0000-0x02000000 : "Yamon env variables"
usb.c: registered new driver hub
host/usb-ohci.c: USB OHCI at membase 0xb0100000, IRQ 26
host/usb-ohci.c: usb-builtin, non-PCI OHCI
usb.c: new USB bus registered, assigned bus number 1
hub.c: USB hub found
hub.c: 2 ports detected
usb.c: registered new driver hid
hid-core.c: v1.8.1 Andreas Gal, Vojtech Pavlik <[email-masked]>
hid-core.c: USB HID support drivers
mice: PS/2 mouse device common for all mice
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 4096 bind 8192)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
RAMDISK: Compressed image found at block 0
Freeing initrd memory: 872k freed
VFS: Mounted root (ext2 filesystem).
Freeing unused kernel memory: 96k freed
Algorithmics/MIPS FPU Emulator v1.5
Linux Kernel Card Services 3.1.22
  options:  [pci]

Au1x00 PCMCIA (CS release 3.1.22)
hub.c: new USB device builtin-2, assigned address 2
input0: USB HID v1.10 Keyboard [SEJIN SEJIN USB Mini Keyboard] on usb1:2.0
Trying to free nonexistent resource <c0010000-c001000f>
hda: SanDisk SDCFB-32, CFA DISK drive
ide1: ports already in use, skipping probe
ide2: ports already in use, skipping probe
ide3: ports already in use, skipping probe
ide4: ports already in use, skipping probe
ide5: ports already in use, skipping probe
ide0 at 0xc0010000-0xc0010007,0xc001000e on irq 39
hda: attached ide-disk driver.
hda: task_no_data_intr: status=0x51 { DriveReady SeekComplete Error }
hda: task_no_data_intr: error=0x04 { DriveStatusError }
hda: 62720 sectors (32 MB) w/1KiB Cache, CHS=490/4/32
Partition check:
 hda: hda1
ide_cs: hda: Vcc = 3.3, Vpp = 0.0
 hda: hda1
 hda: hda1
EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
eth0: link up
eth0: going to full duplex
*********************************************************
while booting it still complaining that haven't found the initrd.splash file. which actually loads splash screen.

Please help where is the problem, Which step I am doing wrong?

---

From: "Alexander Voropay" <[email-masked]>
Date: Fri, 5 Aug 2005 18:22:31 +0400

>1. get splash image initrd.splash using splash binary.
...
>Now while compiling kernel image I am embedding initrd.gz into it. Here is what I am doing

 You don't need nothing special for *embedded *, not external "MIPS initrd" on a 2.4 kernels.
It works just fine from the CVS.

1) Prepare your "ramdisk.img" with EXT2FS/other FS
2) gzip it.
3) Put this "ramdisk.gz" into the  arch/mips/ramdisk/
4) Enable in the configfile :

CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_INITRD=y

CONFIG_EMBEDDED_RAMDISK=y
CONFIG_EMBEDDED_RAMDISK_IMAGE="ramdisk.gz"

5) make . Kernel build system will find this image automagically.

6) Run this kernel (vmlinux) without a "root=" parameter.

There is example of my kernel bootlog:

...
Determined physical RAM map:
 memory: 01800000 @ 00000000 (usable)
Initial ramdisk at: 0x801b1000 (593920 bytes)
...
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
...
RAMDISK: Compressed image found at block 0
Freeing initrd memory: 580k freed
VFS: Mounted root (ext2 filesystem) readonly.
...

root FS is mouned now as /dev/ram0

--
-=AV=-