Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
soc:2009:pravin:journal:ubuntubko [2009/06/25 13:44]
less1
soc:2009:pravin:journal:ubuntubko [2009/07/27 05:26]
less1
Line 10: Line 10:
 //​do_nfsmount//​ function is getting called from ///​scripts/​casper +188// which is from inside of <​code>​do_netmount()</​code>​ and depend on variable <​code>​${NETBOOT}</​code>​ //​do_nfsmount//​ function is getting called from ///​scripts/​casper +188// which is from inside of <​code>​do_netmount()</​code>​ and depend on variable <​code>​${NETBOOT}</​code>​
  
 +The //​do_netmount()//​ is getting called from //​mountroot()//​ which is inside ///​scripts/​casper +581// and the call depends on variable presense of variable //​${NETBOOT}//​ which is the boot parameter value of parameter //netboot//
 +
 +===== qemu + ubuntu 9.04 Desktop i386 booting problem =====
 +ubuntu-9.04-desktop-i386.iso is refusing to boot over qemu.
 +I am using command line
 +<​code>​
 +qemu -cdrom /​var/​www/​ubuntu-9.04-desktop-i386.iso -net nic -net user
 +</​code>​
 +It gives error gives error :
 +<​code>​
 +[  3.284007] ​ ..MP-BIOS bug: 8254 timer not connected to IO-APIC
 +</​code>​
 +and freezes.\\
 +I am using following version of qemu 
 +<​code>​
 +$ qemu
 +QEMU PC emulator version 0.10.0, Copyright (c) 2003-2008 Fabrice Bellard
 +</​code>​
 +The BIOS number was found 
 +and BIOS version used by qemu is as follows
 +<​code>​
 +QEMU BIOS - build: 08/15/08
 +$Revision: 1.209 $date: 2008/06/02 20:08:10$
 +</​code>​
 +
 +I had to update my qemu to version 0.10.5 then it started working
 +<​code>​
 +$ qemu
 +QEMU PC emulator version 0.10.5, Copyright (c) 2003-2008 Fabrice Bellard
 +</​code>​
 +===== SQUASHFS error =====
 +
 +I am getting following errors in the process of booting. My guess is, most of these
 +errors are related to failure of httpfs in providing requested logical block, but I need to confirm this.
 +<​code>​
 +Buffer I/O error on device loop0, logical block 272374
 +SQUASHFS error: sb_bread is failed reading block 0x845d5
 +SQUASHFS error: unable to read fragment cache block [211696cb]
 +SQUASHFS error: unable to read page, block 211696cb, size c115
 +</​code>​
 +I have seen this error before, but if I retry the booting then it works.
 +But now, I have failed two consecutive time on local webserver, which is quite alarming.
 +
 +====== Ubuntu revisited (in way of debian) ======
 +
 +I was preparing to write an email to ubuntu mailing list, here is what I assembled for that email
 +<​code>​
 +I have tried booting Knoppix and debian over HTTP, and they work fine.
 +But I have problem in booting Ubuntu (ubuntu-9.04-desktop-i386.iso) over HTTP.
 +
 +The procedure followed to boot linux over HTTPFS by me is as follows.
 +I get hold of ISO of live CD, and get the kernel, initramfs and 
 +filesystem.squashfs from it.
 +I host ISO of live CD and "​filesystem.squashfs"​ on webserver.
 +I modify initramfs to include httpfs and related tools and modules.
 +I modify "/​init"​ ( "/​scripts/​casper"​ in case of ubuntu ) to use httpfs ​
 +for mounting. ​
 +I pass boot parameter "​httpfs=http://​ip-of-webserver/​filesystem.squashfs" ​
 +or "​httpfs=http://​ip-of-webserver/​ubuntu-9.04-desktop-i386.iso"​
 +
 +I have attempted booting with both livecd.iso and filesystem.squashfs.
 +In both cases, I get different errors.
 +
 +I know that filesystem is getting mounted with HTTPFS. ​
 +I have verified it from the rescue shell.
 +I get this rescue shell by executing wrong command in initramfs. ​
 +
 +
 +When I mount "​ubuntu-9.04-desktop-i386.iso"​ I get following error
 +{{{
 +Buffer I/O error on device loop0, logical block 272374
 +SQUASHFS error: sb_bread is failed reading block 0x845d5
 +SQUASHFS error: unable to read fragment cache block [211696cb]
 +SQUASHFS error: unable to read page, block 211696cb, size c115
 +}}}
 +
 +
 +Then I tried to use debian way of mounting "​filesystem.squashfs"​ for booting.
 +I get error
 +{{{
 +Begin: Running /​scripts/​init-bottom ...
 +Done.
 +run-init: nuking initramfs contents: Directory not empty
 +Kernel panic - not syncing: Attempted to kill init!
 +Dumping ftrace buffer:
 + (ftrace buffer empty)
 +}}}
 +
 +
 +My guess is that, this error is triggered because when "/​bin/​run-init" ​
 +tries to remove initramfs and fails to remove some file. Most probably it 
 +can be /dev/loop0 as it is in use by loopback mount command.
 +
 +I checked debian code, the use of loopback is avoided there.
 +So, I am doing the same for ubuntu now. 
 +I wont use loopback and see if it works.
 +
 +
 +
 +I was wondering what I am doing wrong as the same method works fine with debian.
 +And when I try to mount ISO itself, I get kernel panic
 +
 +</​code>​
 +
 +Got some information about this error on [[http://​wiki.debian.org/​initramfs/​More|debian wiki]]
 +which says that
 +<​code>​
 +When switching another root device, initrd would pivot_root and then umount the ramdisk. But initramfs is rootfs: ​
 +you shouldn'​t pivot_root rootfs and can't unmount it. Just delete everything out of it (except the new block device node, if any),
 + ​overmount /, and exec the new init. (The klibc package contains a helper program in utils/​run_init.c to do this for you, 
 +and other packages have adopted this as switch_root.) ​
 +</​code>​
 +
 +Now, I don't know for sure, which files are not getting deleated and hence causing problem.
 +
 +==== A question ====
 +what is the differnece between debian script and ubuntu script that filesystem.squashfs is not working with ubuntu, but it works with debian?
 +
 +   - comparing ''​d/​scripts/​live''​ with ''​u/​scripts/​casper''​ --- too different, diff went crazy with this command. ​ They are as good as seperate program who do similar work.
 +   - comparing ''​d/​bin/​run-init''​ with ''​u/​bin/​run-init'',​ --- they are same.
 +   - comparing ''​d/​init''​ with ''​u/​init''​ -- not much of difference
 +
 +This approach is not working for me, I will try another approach.
 +
 +==== analyzing run_init.c ====
 +My guess is that, run_init.c is the one who is dying, and it seems he does allow you to specify the files which should not be deleted.
 +I want to see how to tell that to run_init.c
 +  - Another thing that I want to try out is, what if I dont delete the contents of initramfs? I will remove that check from run_init.c will system still boot?
 +    - My guess is that, ''​overmount /''​ may fail.
 +  - Now, I need to locate the source code of run_init.c
 +
 +===== Ubuntu over iscsi =====
 +  - Following the line of [[BKODebianISCSI|Debian over iscsi]], attempted the Ubuntu over iscsi, but it did not worked.
 +
 +
 +===== Problem found =====
 +  - From the progress in fedora, it seems that problem is because network is restarting itself, which kills the the network and mounted HTTPFS. ​ Culprits are 
 +    - ''/​etc/​init.d/​network''​
 +    - ''/​etc/​init.d/​NetworkManager''​
 +
 +===== Solution =====
 +The temporary hack implemented is **Delete these two files** before doing ''​run-init''​. ​ This hack works fine in this case, only problem is that the ''/​etc/​resolver.conf''​
 +entry remains empty so dns resolving does not work.  Need to fix this soon.
  

QR Code
QR Code soc:2009:pravin:journal:ubuntubko (generated for current page)