do_nfsmount is defined at two places, why?
My guess is that file /scripts/nfs is not used, it is just present there from older versions and has not been removed.
do_nfsmount function is getting called from /scripts/casper +188 which is from inside of
do_netmount()
and depend on variable
${NETBOOT}
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
ubuntu-9.04-desktop-i386.iso is refusing to boot over qemu. I am using command line
qemu -cdrom /var/www/ubuntu-9.04-desktop-i386.iso -net nic -net user
It gives error gives error :
[ 3.284007] ..MP-BIOS bug: 8254 timer not connected to IO-APIC
and freezes.
I am using following version of qemu
$ qemu QEMU PC emulator version 0.10.0, Copyright (c) 2003-2008 Fabrice Bellard
The BIOS number was found and BIOS version used by qemu is as follows
QEMU BIOS - build: 08/15/08 $Revision: 1.209 $date: 2008/06/02 20:08:10$
I had to update my qemu to version 0.10.5 then it started working
$ qemu QEMU PC emulator version 0.10.5, Copyright (c) 2003-2008 Fabrice Bellard
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.
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
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.
I was preparing to write an email to ubuntu mailing list, here is what I assembled for that email
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
Got some information about this error on debian wiki which says that
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.)
Now, I don't know for sure, which files are not getting deleated and hence causing problem.
what is the differnece between debian script and ubuntu script that filesystem.squashfs is not working with ubuntu, but it works with debian?
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.d/bin/run-init
with u/bin/run-init
, — they are same.d/init
with u/init
– not much of differenceThis approach is not working for me, I will try another approach.
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
overmount /
may fail./etc/init.d/network
/etc/init.d/NetworkManager
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.