From: Flavio <fbc...@gm...> - 2006-10-06 10:53:46
|
Hi all! I recently upgraded my uml-kernel. My system is composed by: kernel 2.6.17-gentoo-r8-skas3-v9-pre9 #8 SMP PREEMPT Tue Sep 26 16:16:05 CEST 2006 x86_64 AMD Athlon(tm) 64 Processor 3000+ GNU/Linux glibc-2.4-r3 Actually I use a well-working uml kernel (2.6.16.24). I decided to upgrade my guest kernel to 2.6.18. Patches were applied as required (uml-2.6.18-bb1.patch.bz2 to guest and skas-2.6.17-rc5-v9-pre9.patch.bz2 to host kernel). My boot problem is the following message: Checking host MADV_REMOVE support...MADV_REMOVE failed, err = -22 > Can't release memory to the host - memory hotplug won't be supported > mconsole (version 2) initialized on /home/flavio/.uml/Du7VZ4/mconsole > Netdevice 0 : TUN/TAP backend - IP = 192.168.1.101 > VFS: Disk quotas dquot_6.5.1 > Dquot-cache hash table entries: 512 (order 0, 4096 bytes) > io scheduler noop registered > io scheduler anticipatory registered (default) > io scheduler deadline registered > io scheduler cfq registered > TCP bic registered > NET: Registered protocol family 1 > NET: Registered protocol family 17 > Initialized stdio console driver > Console initialized on /dev/tty0 > Initializing software serial port version 1 > ubda: unknown partition table > ubdb: unknown partition table > kjournald starting. Commit interval 5 seconds > EXT3-fs: mounted filesystem with ordered data mode. > VFS: Mounted root (ext3 filesystem) readonly. > Usage: init {-e VAR[=VAL] | [-t SECONDS] > {0|1|2|3|4|5|6|S|s|Q|q|A|a|B|b|C|c|U|u}} > Kernel panic - not syncing: Attempted to kill init! > > Modules linked in: > Pid: 1, comm: init Not tainted 2.6.18-skas3-v9-pre9-fremap > RIP: 0033:[<00000000404031ef>] > bye! Flavio |
From: Christopher M. <chr...@ya...> - 2006-10-06 14:30:28
|
Flavio: What is your uml command line? It looks like the kernel's command line for invoking init is wrong. Are you using an initrd file whose linuxrc script explicitly invokes init? Does the end of your linuxrc have a pivot_root + chroot sequence in it? If so, try invoking init like this: /sbin/init -i The -i argument explicitly informs init that it should behave as if it were part of the boot process, and not attemtping to contact another init process (which the other options are about). Chris Marshall --- Flavio <fbc...@gm...> wrote: > Hi all! > > I recently upgraded my uml-kernel. > My system is composed by: kernel 2.6.17-gentoo-r8-skas3-v9-pre9 #8 SMP > PREEMPT Tue Sep 26 16:16:05 CEST 2006 x86_64 AMD Athlon(tm) 64 Processor > 3000+ GNU/Linux > glibc-2.4-r3 > > Actually I use a well-working uml kernel (2.6.16.24). > I decided to upgrade my guest kernel to 2.6.18. Patches were applied as > required (uml-2.6.18-bb1.patch.bz2 to guest and > skas-2.6.17-rc5-v9-pre9.patch.bz2 to host kernel). > > My boot problem is the following message: > > Checking host MADV_REMOVE support...MADV_REMOVE failed, err = -22 > > Can't release memory to the host - memory hotplug won't be supported > > mconsole (version 2) initialized on /home/flavio/.uml/Du7VZ4/mconsole > > Netdevice 0 : TUN/TAP backend - IP = 192.168.1.101 > > VFS: Disk quotas dquot_6.5.1 > > Dquot-cache hash table entries: 512 (order 0, 4096 bytes) > > io scheduler noop registered > > io scheduler anticipatory registered (default) > > io scheduler deadline registered > > io scheduler cfq registered > > TCP bic registered > > NET: Registered protocol family 1 > > NET: Registered protocol family 17 > > Initialized stdio console driver > > Console initialized on /dev/tty0 > > Initializing software serial port version 1 > > ubda: unknown partition table > > ubdb: unknown partition table > > kjournald starting. Commit interval 5 seconds > > EXT3-fs: mounted filesystem with ordered data mode. > > VFS: Mounted root (ext3 filesystem) readonly. > > Usage: init {-e VAR[=VAL] | [-t SECONDS] > > {0|1|2|3|4|5|6|S|s|Q|q|A|a|B|b|C|c|U|u}} > > Kernel panic - not syncing: Attempted to kill init! > > > > Modules linked in: > > Pid: 1, comm: init Not tainted 2.6.18-skas3-v9-pre9-fremap > > RIP: 0033:[<00000000404031ef>] > > > > bye! > > Flavio > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys -- and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV> _______________________________________________ > User-mode-linux-user mailing list > Use...@li... > https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user > |
From: Flavio <fbc...@gm...> - 2006-10-06 19:09:26
|
2006/10/6, Christopher Marshall <chr...@ya...>: > > Flavio: > > What is your uml command line? This is my command line: linux ubd0=rootfs.debian.etch ubd1=swapfs.debian eth0=tuntap,,,192.168.1.101noprocmm this is the same command line I use with another working kernel. Above "linux" executable is referred to a 2.6.18 kernel image. As I saw, 2.6.16.24 kernel image works properly. It looks like the kernel's command line for invoking init is wrong. > > Are you using an initrd file whose linuxrc script explicitly invokes > init? Does the end of your > linuxrc have a pivot_root + chroot sequence in it? No, I don't use an initrd file If so, try invoking init like this: /sbin/init -i > > The -i argument explicitly informs init that it should behave as if it > were part of the boot > process, and not attemtping to contact another init process (which the > other options are about). > > Chris Marshall > > --- Flavio <fbc...@gm...> wrote: > > > Hi all! > > > > I recently upgraded my uml-kernel. > > My system is composed by: kernel 2.6.17-gentoo-r8-skas3-v9-pre9 #8 SMP > > PREEMPT Tue Sep 26 16:16:05 CEST 2006 x86_64 AMD Athlon(tm) 64 Processor > > 3000+ GNU/Linux > > glibc-2.4-r3 > > > > Actually I use a well-working uml kernel (2.6.16.24). > > I decided to upgrade my guest kernel to 2.6.18. Patches were applied as > > required (uml-2.6.18-bb1.patch.bz2 to guest and > > skas-2.6.17-rc5-v9-pre9.patch.bz2 to host kernel). > > > > My boot problem is the following message: > > > > Checking host MADV_REMOVE support...MADV_REMOVE failed, err = -22 > > > Can't release memory to the host - memory hotplug won't be supported > > > mconsole (version 2) initialized on /home/flavio/.uml/Du7VZ4/mconsole > > > Netdevice 0 : TUN/TAP backend - IP = 192.168.1.101 > > > VFS: Disk quotas dquot_6.5.1 > > > Dquot-cache hash table entries: 512 (order 0, 4096 bytes) > > > io scheduler noop registered > > > io scheduler anticipatory registered (default) > > > io scheduler deadline registered > > > io scheduler cfq registered > > > TCP bic registered > > > NET: Registered protocol family 1 > > > NET: Registered protocol family 17 > > > Initialized stdio console driver > > > Console initialized on /dev/tty0 > > > Initializing software serial port version 1 > > > ubda: unknown partition table > > > ubdb: unknown partition table > > > kjournald starting. Commit interval 5 seconds > > > EXT3-fs: mounted filesystem with ordered data mode. > > > VFS: Mounted root (ext3 filesystem) readonly. > > > Usage: init {-e VAR[=VAL] | [-t SECONDS] > > > {0|1|2|3|4|5|6|S|s|Q|q|A|a|B|b|C|c|U|u}} > > > Kernel panic - not syncing: Attempted to kill init! > > > > > > Modules linked in: > > > Pid: 1, comm: init Not tainted 2.6.18-skas3-v9-pre9-fremap > > > RIP: 0033:[<00000000404031ef>] > > > > > > > bye! > > > > Flavio > > > > ------------------------------------------------------------------------- > > Take Surveys. Earn Cash. Influence the Future of IT > > Join SourceForge.net's Techsay panel and you'll get the chance to share > your > > opinions on IT & business topics through brief surveys -- and earn cash > > > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV> > _______________________________________________ > > User-mode-linux-user mailing list > > Use...@li... > > https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user > > > > |
From: Jeff D. <jd...@ad...> - 2006-10-10 02:09:34
|
On Fri, Oct 06, 2006 at 09:09:24PM +0200, Flavio wrote: > This is my command line: > linux ubd0=rootfs.debian.etch ubd1=swapfs.debian > eth0=tuntap,,,192.168.1.101noprocmm Is there really no space between the "eth0=tuntap,,,192.168.1.101" and "noprocmm"? If so, that would cetainly break something. Jeff |
From: Flavio <fbc...@gm...> - 2006-10-10 10:35:13
|
> Is there really no space between the "eth0=tuntap,,,192.168.1.101" and > "noprocmm"? If so, that would cetainly break something. > > Jeff > No there isn't. I don't know why copy & paste cause this effect on the mail message. I also added mem=512M parameter, but I'm getting the same result. Maybe there's some problem with new kernels only. |
From: Flavio <fbc...@gm...> - 2006-10-11 19:33:24
|
I want to post entire boot message to help you to see better my problem. Maybe I posted not sufficient elements: $ src/linux-2.6.18/linux ubd0=rootfs.debian.etch ubd1=swapfs.debianeth0=tuntap,,, > 192.168.1.101 noprocmm mem=512M > Checking that ptrace can change system call numbers...OK > Checking syscall emulation patch for ptrace...missing > Checking for tmpfs mount on /dev/shm...OK > Checking PROT_EXEC mmap in /dev/shm/...OK > Checking for the skas3 patch in the host: > - /proc/mm...found but disabled on command line > - PTRACE_FAULTINFO...not found > - PTRACE_LDT...found > UML running in SKAS0 mode > Checking that ptrace can change system call numbers...OK > Checking syscall emulation patch for ptrace...missing > Linux version 2.6.18-skas3-v9-pre9-fremap (root@Gentoo) (gcc version 4.1.1(Gentoo > 4.1.1)) #1 Wed Oct 11 21:10:51 CEST 2006 > Built 1 zonelists. Total pages: 131072 > Kernel command line: ubd0=rootfs.debian.etch ubd1=swapfs.debianeth0=tuntap,,, > 192.168.1.101 noprocmm mem=512M root=98:0 > PID hash table entries: 4096 (order: 12, 32768 bytes) > Dentry cache hash table entries: 65536 (order: 7, 524288 bytes) > Inode-cache hash table entries: 32768 (order: 6, 262144 bytes) > Memory: 506112k available > Mount-cache hash table entries: 256 > Checking that host ptys support output SIGIO...Yes > Checking that host ptys support SIGIO on close...No, enabling workaround > Using 2.6 host AIO > NET: Registered protocol family 16 > NET: Registered protocol family 2 > IP route cache hash table entries: 4096 (order: 3, 32768 bytes) > TCP established hash table entries: 16384 (order: 5, 131072 bytes) > TCP bind hash table entries: 8192 (order: 4, 65536 bytes) > TCP: Hash tables configured (established 16384 bind 8192) > TCP reno registered > Host TLS support detected > Checking host MADV_REMOVE support...MADV_REMOVE failed, err = -22 > Can't release memory to the host - memory hotplug won't be supported > <--------------- O_O !!!! ?????? > mconsole (version 2) initialized on /home/flavio/.uml/iftCTz/mconsole > Netdevice 0 : TUN/TAP backend - IP = 192.168.1.101 > VFS: Disk quotas dquot_6.5.1 > Dquot-cache hash table entries: 512 (order 0, 4096 bytes) > io scheduler noop registered > io scheduler anticipatory registered (default) > io scheduler deadline registered > io scheduler cfq registered > TCP bic registered > NET: Registered protocol family 1 > NET: Registered protocol family 17 > Initialized stdio console driver > Console initialized on /dev/tty0 > Initializing software serial port version 1 > ubda: unknown partition table > ubdb: unknown partition table > kjournald starting. Commit interval 5 seconds > EXT3-fs: mounted filesystem with ordered data mode. > VFS: Mounted root (ext3 filesystem) readonly. > Usage: init {-e VAR[=VAL] | [-t SECONDS] > {0|1|2|3|4|5|6|S|s|Q|q|A|a|B|b|C|c|U|u}} <----- What does it want??? > Kernel panic - not syncing: Attempted to kill init! > > Modules linked in: > Pid: 1, comm: init Not tainted 2.6.18-skas3-v9-pre9-fremap <-------- I > don't know what does it mean.. I never saw it. > RIP: 0033:[<00000000404031ef>] > RSP: 0000007f7f9fdc28 EFLAGS: 00000246 > RAX: ffffffffffffffda RBX: 00000000405a3af8 RCX: ffffffffffffffff > RDX: 0000000000000001 RSI: 000000000000003c RDI: 0000000000000001 > RBP: 0000000000000001 R08: 00000000000000e7 R09: ffffffffffffffc0 > R10: 0000000000000000 R11: 0000000000000246 R12: 00000000405a3af8 > R13: 0000000000000000 R14: 0000007f7f9ff078 R15: 0000007f7fa00fc4 > Call Trace: > 6176bb88: [<60013cc7>] panic_exit+0x2f/0x49 > 6176bba8: [<60038a63>] notifier_call_chain+0x29/0x3e > 6176bbd8: [<60038b08>] atomic_notifier_call_chain+0x9/0xb > 6176bbe8: [<6002b69a>] panic+0xe6/0x178 > 6176bc58: [<600fbd21>] tty_write+0x1fa/0x215 > 6176bc78: [<601009b0>] write_chan+0x0/0x20d > 6176bc88: [<60023d22>] wait_stub_done+0x6f/0x124 > 6176bcd8: [<6002df7d>] do_exit+0x7b/0x3fe > 6176bd18: [<6002e3eb>] sys_exit_group+0x0/0x14 > 6176bd28: [<60067995>] sys_write+0x47/0x70 > 6176bd58: [<6002e3fd>] sys_exit_group+0x12/0x14 > 6176bd68: [<600146ad>] handle_syscall+0x65/0x80 > 6176bd98: [<60023fc6>] userspace+0x1ef/0x237 > 6176bdf0: [<6000f1e2>] init+0x0/0x132 > 6176bdf8: [<600142d5>] new_thread_handler+0xb8/0xca > 2006/10/10, Flavio <fbc...@gm...>: > > > Is there really no space between the "eth0=tuntap,,, 192.168.1.101" and > > "noprocmm"? If so, that would cetainly break something. > > > > Jeff > > > No there isn't. I don't know why copy & paste cause this effect on the > mail message. > I also added mem=512M parameter, but I'm getting the same result. > Maybe there's some problem with new kernels only. > |
From: Christopher M. <chr...@ya...> - 2006-10-12 11:34:26
|
I have seen this message from /sbin/init before when I was experimenting with writing my own initrd.gz in slackware. It didn't actually have anything to do with UML. I am not sure why you would be getting this error message seeing as how you are not using an initrd.gz file. You can get this message when init doesn't like something about the way it was invoked. The kernel, after it mounts the root filesystem, starts /sbin/init to handle the rest of the boot process (running the boot scripts to start the daemons your system is configured to run, starting getty processes to listen to some number of virtual console devices to provide text login prompts, ...). After the system is booted, a user can run /sbin/init by hand to send the init process the kernel started messages to do various things, like re-read its config file, /etc/inittab. That's what all the options the init message was telling you about are for. It's hard to imagine how the kernel itself could invoke init with the wrong arguments. Unless you give the kernel an init= argument, all it will do is call it like this: /sbin/init. For some reason, init thinks it isn't being called by the kernel to boot. There is an undocumented (you won't see it in the man page for init) command line argument to init, -i, that explicitly tells it to assume it should boot a system. I found it because I started reading the source code for init one day to see why it wasn't just booting for me. You might try adding this to your kernel command line: init="/sbin/init -i" just to see what happens. The other thing you can try is to make a simple initrd file with some busybox commands in it, enough to give you the ash shell and some commands like mount, pivot_root, chroot, so you can try to mount the root filesystem yourself then pivot_root and chroot into it. If you've never gone this route, you might try it. You will learn a lot more about how the kernel boots and how to debug boot problems in the process. I can give you some more pointers on how to do this if you are interested. Chris Marshall --- Flavio <fbc...@gm...> wrote: > I want to post entire boot message to help you to see better my problem. > Maybe I posted not sufficient elements: > > $ src/linux-2.6.18/linux ubd0=rootfs.debian.etch > ubd1=swapfs.debianeth0=tuntap,,, > > 192.168.1.101 noprocmm mem=512M > > Checking that ptrace can change system call numbers...OK > > Checking syscall emulation patch for ptrace...missing > > Checking for tmpfs mount on /dev/shm...OK > > Checking PROT_EXEC mmap in /dev/shm/...OK > > Checking for the skas3 patch in the host: > > - /proc/mm...found but disabled on command line > > - PTRACE_FAULTINFO...not found > > - PTRACE_LDT...found > > UML running in SKAS0 mode > > Checking that ptrace can change system call numbers...OK > > Checking syscall emulation patch for ptrace...missing > > Linux version 2.6.18-skas3-v9-pre9-fremap (root@Gentoo) (gcc version 4.1.1(Gentoo > > 4.1.1)) #1 Wed Oct 11 21:10:51 CEST 2006 > > Built 1 zonelists. Total pages: 131072 > > Kernel command line: ubd0=rootfs.debian.etch ubd1=swapfs.debianeth0=tuntap,,, > > 192.168.1.101 noprocmm mem=512M root=98:0 > > PID hash table entries: 4096 (order: 12, 32768 bytes) > > Dentry cache hash table entries: 65536 (order: 7, 524288 bytes) > > Inode-cache hash table entries: 32768 (order: 6, 262144 bytes) > > Memory: 506112k available > > Mount-cache hash table entries: 256 > > Checking that host ptys support output SIGIO...Yes > > Checking that host ptys support SIGIO on close...No, enabling workaround > > Using 2.6 host AIO > > NET: Registered protocol family 16 > > NET: Registered protocol family 2 > > IP route cache hash table entries: 4096 (order: 3, 32768 bytes) > > TCP established hash table entries: 16384 (order: 5, 131072 bytes) > > TCP bind hash table entries: 8192 (order: 4, 65536 bytes) > > TCP: Hash tables configured (established 16384 bind 8192) > > TCP reno registered > > Host TLS support detected > > Checking host MADV_REMOVE support...MADV_REMOVE failed, err = -22 > > Can't release memory to the host - memory hotplug won't be supported > > <--------------- O_O !!!! ?????? > > mconsole (version 2) initialized on /home/flavio/.uml/iftCTz/mconsole > > Netdevice 0 : TUN/TAP backend - IP = 192.168.1.101 > > VFS: Disk quotas dquot_6.5.1 > > Dquot-cache hash table entries: 512 (order 0, 4096 bytes) > > io scheduler noop registered > > io scheduler anticipatory registered (default) > > io scheduler deadline registered > > io scheduler cfq registered > > TCP bic registered > > NET: Registered protocol family 1 > > NET: Registered protocol family 17 > > Initialized stdio console driver > > Console initialized on /dev/tty0 > > Initializing software serial port version 1 > > ubda: unknown partition table > > ubdb: unknown partition table > > kjournald starting. Commit interval 5 seconds > > EXT3-fs: mounted filesystem with ordered data mode. > > VFS: Mounted root (ext3 filesystem) readonly. > > Usage: init {-e VAR[=VAL] | [-t SECONDS] > > {0|1|2|3|4|5|6|S|s|Q|q|A|a|B|b|C|c|U|u}} <----- What does it want??? > > Kernel panic - not syncing: Attempted to kill init! > > > > Modules linked in: > > Pid: 1, comm: init Not tainted 2.6.18-skas3-v9-pre9-fremap <-------- I > > don't know what does it mean.. I never saw it. > > RIP: 0033:[<00000000404031ef>] > > RSP: 0000007f7f9fdc28 EFLAGS: 00000246 > > RAX: ffffffffffffffda RBX: 00000000405a3af8 RCX: ffffffffffffffff > > RDX: 0000000000000001 RSI: 000000000000003c RDI: 0000000000000001 > > RBP: 0000000000000001 R08: 00000000000000e7 R09: ffffffffffffffc0 > > R10: 0000000000000000 R11: 0000000000000246 R12: 00000000405a3af8 > > R13: 0000000000000000 R14: 0000007f7f9ff078 R15: 0000007f7fa00fc4 > > Call Trace: > > 6176bb88: [<60013cc7>] panic_exit+0x2f/0x49 > > 6176bba8: [<60038a63>] notifier_call_chain+0x29/0x3e > > 6176bbd8: [<60038b08>] atomic_notifier_call_chain+0x9/0xb > > 6176bbe8: [<6002b69a>] panic+0xe6/0x178 > > 6176bc58: [<600fbd21>] tty_write+0x1fa/0x215 > > 6176bc78: [<601009b0>] write_chan+0x0/0x20d > > 6176bc88: [<60023d22>] wait_stub_done+0x6f/0x124 > > 6176bcd8: [<6002df7d>] do_exit+0x7b/0x3fe > > 6176bd18: [<6002e3eb>] sys_exit_group+0x0/0x14 > > 6176bd28: [<60067995>] sys_write+0x47/0x70 > > 6176bd58: [<6002e3fd>] sys_exit_group+0x12/0x14 > > 6176bd68: [<600146ad>] handle_syscall+0x65/0x80 > > 6176bd98: [<60023fc6>] userspace+0x1ef/0x237 > > 6176bdf0: [<6000f1e2>] init+0x0/0x132 > > 6176bdf8: [<600142d5>] new_thread_handler+0xb8/0xca > > > > > 2006/10/10, Flavio <fbc...@gm...>: > > > > > > Is there really no space between the "eth0=tuntap,,, 192.168.1.101" and > > > "noprocmm"? If so, that would cetainly break something. > > > > > > Jeff > > > > > No there isn't. I don't know why copy & paste cause this effect on the > > mail message. > > I also added mem=512M parameter, but I'm getting the same result. > > Maybe there's some problem with new kernels only. > > > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642> _______________________________________________ > User-mode-linux-user mailing list > Use...@li... > https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user > |
From: Flavio <fbc...@gm...> - 2006-10-12 12:15:14
|
Thank you so much Christopher, I tried to add init="/sbin/init -i" to my kernel command line, but boot process hangs. [...] Initializing software serial port version 1 ubda: unknown partition table ubdb: unknown partition table kjournald starting. Commit interval 5 seconds EXT3-fs: mounted filesystem with ordered data mode. VFS: Mounted root (ext3 filesystem) readonly. line_ioctl: tty0: ioctl KDSIGACCEPT called INIT: version 2.86 booting [BLOCKED] The other thing you can try is to make a simple initrd file with some > busybox ........ I don't have any idea to do that. I don't know procedures of any type in this case. But, in order to learn more, I think I can get some information about it. I can give you some more pointers on how to do this if you are interested. Really? Very good idea! Thanks... My only preoccupation is that doing this attempt I waste precious time when probably the trouble is elsewhere. Bye!! Flavio 2006/10/12, Christopher Marshall <chr...@ya...>: > > You might try adding this to your kernel > command line: init="/sbin/init -i" just to see what happens. > > The other thing you can try is to make a simple initrd file with some > busybox commands in it, > enough to give you the ash shell and some commands like mount, pivot_root, > chroot, so you can try > to mount the root filesystem yourself then pivot_root and chroot into it. > > If you've never gone this route, you might try it. You will learn a lot > more about how the kernel > boots and how to debug boot problems in the process. > > I can give you some more pointers on how to do this if you are interested. > > Chris Marshall > |
From: Nix <ni...@es...> - 2006-10-25 06:55:03
|
On 12 Oct 2006, Christopher Marshall told this: > The other thing you can try is to make a simple initrd file with some > busybox commands in it, enough to give you the ash shell and some > commands like mount, pivot_root, chroot, so you can try to mount the > root filesystem yourself then pivot_root and chroot into it. As an aside, initrd is obsolete and rather annoying to construct. If I were you I'd use an initramfs instead, which is utterly trivial to build (modulo the usual annoyances getting the tools together) and can't *ever* get out of synch with the kernel because they're built at the same time. (It seems likely that a large part of the boot process will move obligatorily into an initramfs quite soon. Nobody is likely to notice unless they're watching the kernel build closely. That's how transparent it is to users.) Rough procedure for an uClibc/busybox-based initrd: - make a cross-compiler and cross-assembler for uClibc. (The uClibc site has patches to GCC and binutils to add a *-pc-linux-uclibc target.) - make uClibc from CVS - make busybox, 1.2 or later - write a file usr/initramfs in the kernel tree, containing a list of files to include in the initramfs, viz ,---- | file /init usr/init 0755 0 0 | dir /bin 0755 0 0 | file /bin/busybox /usr/i686-pc-linux-uclibc/bin/busybox 0755 0 0 | slink /bin/sh /bin/busybox 0755 0 0 | slink /bin/ash /bin/busybox 0755 0 0 [...] | # supporting directories | dir /proc 0755 0 0 | dir /sys 0755 0 0 | dir /new-root 0755 0 0 | dir /etc 0755 0 0 [...] | # initial device files required (mdev creates the rest) | dir /dev 0755 0 0 | nod /dev/console 0600 0 0 c 5 1 | nod /dev/null 0666 0 0 c 1 3 `---- Make a shell script usr/init (what whever you like: you can name it anything and rename it to /init with the usr/initramfs file, which you can *also* name whatever you want). This script gets passed *all* parameters that the kernel was passed (except for a few which it parses itself) and can do whatever it likes with them. e.g. the start of mine: ,---- | export PATH=/sbin:/bin | | /bin/mount -t proc proc /proc | /bin/mount -t sysfs sysfs /sys | CMDLINE=`cat /proc/cmdline` | | # Populate /dev from /sys | | /bin/mount -t tmpfs tmpfs /dev | /sbin/mdev -s | | # Locate the root filesystem's fstab entry; collapse spaces and tabs in it: | # extract its significant components. (There are three raw tabs in the next | # line.) | | FSENT=`sed -n '/[ ]\/[ ]/ { s,[ ][ ]*, ,g; p; }' < /etc/fstab` | ROOT="`echo $FSENT | tr ' ' '\n' | sed -n '1p'`" | TYPE="`echo $FSENT | tr ' ' '\n' | sed -n '3p'`" | OPTS="`echo $FSENT | tr ' ' '\n' | sed -n '4p'`" | | # Parse arguments, engaging trace mode or dropping to rescue or emergency shells | # as needed. If there is a forced init program, root filesystem, root fs type or | # root fs options, accept the forcing. | | INIT_ARGS= | | for param in $CMDLINE; do | case "$param" in | init=*) eval "$param";; | -b|single|s|S|[1-5]) INIT_ARGS="$INIT_ARGS $param";; | trace) echo "Tracing init script."; | set -x;; | rescue) echo "Rescue boot mode: invoking ash."; | init=/bin/ash; | INIT_ARGS="-";; | emergency) echo "Emergency boot mode. Dropping to a minimal shell."; | echo "Reboot with Ctrl-Alt-Delete."; | exec /bin/sh;; | root=LABEL=*) ROOT=$(echo $1 | cut -d= -f3-);; | root-type=*) TYPE=$(echo $1 | cut -d= -f2-);; | root-options=*) OPTS=$(echo $1 | cut -d= -f2-);; | esac | done `---- The last thing it does (after finding the root filesystem, of course) should be to unmount everything but / and the newly mounted root, and switch_root into it: ,---- | if [ -z "$init" ]; then | init=/sbin/init | fi | | # Unmount everything and switch root filesystems for good: | # exec the real init and begin the real boot process. | /bin/umount -l /proc | /bin/umount -l /sys | /bin/umount -l /dev | | echo "Switching to /new-root and running '$init'" | exec switch_root /new-root $init $INIT_ARGS `---- (switch_root is a tool in busybox that recursively deletes everything on the same filesystem as /, as initramfses are nonswappable and anything left there will eat memory forever. Then it chroots to the new filesystem and exec's init. --- so look out, you'd better make sure you still have PID 1 at that point... The filesystem will be auto-built and gzipped into the kernel image at kernel build time. As of 2.6.18, any C code mentioned in the initramfs source file will also be compiled for you! The last part in particular is *vastly* less fiddly than switching to the real root filesystem with an initrd, which has about three possible conflicting methods none of which work terribly well in my experience :( -- `When we are born we have plenty of Hydrogen but as we age our Hydrogen pool becomes depleted.' |
From: Christopher M. <chr...@ya...> - 2006-10-25 17:46:06
|
--- Nix <ni...@es...> wrote: > > (switch_root is a tool in busybox that recursively deletes everything on > the same filesystem as /, as initramfses are nonswappable and anything > left there will eat memory forever. Then it chroots to the new > filesystem and exec's init. --- so look out, you'd better make sure you > still have PID 1 at that point... > Thanks for all the information about initramfs, that was a very informative post. It also looks like you may have solved a long standing mystery to me. Back when I was experimenting with the initrd process linuxrc, pivot_root, chroot, and init, I noticed that unless I invoked init with the "-i" argument, which tells init to assume it was called from the kernel to boot the system, init would always exit with an error message to the effect that it didn't know what to do. I'll bet init was doing that because it's PID was not 1, as you allude to above. So it assumed it was not being called from the kernel. Since it had no other arguments, it didn't know what to do and printed out a syntax guide. I'll have to see if I can reproduce that bug sometime and see if the PID was something other than 1. Chris Marshall |
From: Nix <ni...@es...> - 2006-10-25 21:38:04
|
On 25 Oct 2006, Christopher Marshall verbalised: > Thanks for all the information about initramfs, that was a very informative post. I can but try. :) I've stuck my boot scripts online at <http://linux-raid.osdl.org/index.php/RAID_Boot>. I don't know if they'll be any use, but at least it gives you a known-working example. (Well, it works for me and for a few other people, and nobody has told me that it *doesn't* work, although of course that might be because they can no longer boot ;))) ) > It also looks like you may have solved a long standing mystery to me. > Back when I was experimenting with the initrd process linuxrc, > pivot_root, chroot, and init, I noticed that unless I invoked init > with the "-i" argument, which tells init to assume it was called from > the kernel to boot the system, init would always exit with an error > message to the effect that it didn't know what to do. > > I'll bet init was doing that because it's PID was not 1, as you allude > to above. So it assumed it was not being called from the kernel. Indeed. See the top of main() in sysvinit's src/init.c. > Since it had no other arguments, it didn't know what to do and printed > out a syntax guide. I'll have to see if I can reproduce that bug > sometime and see if the PID was something other than 1. Almost certainly. If your /init script is PID 1 (which it normally is) you have to remember to run init via `exec'. busybox's switch_root command had a rather bad diagnostic for this case when I tried to set up an initramfs for the first time, and I spent some time scattering printf()s around until I worked out which of the dozen-or-so failure paths in switch_root was failing. (It has better diagnostics now.) -- `When we are born we have plenty of Hydrogen but as we age our Hydrogen pool becomes depleted.' |
From: Blaisorblade <bla...@ya...> - 2006-10-26 00:12:53
|
On Wednesday 25 October 2006 23:37, Nix wrote: > On 25 Oct 2006, Christopher Marshall verbalised: > > Thanks for all the information about initramfs, that was a very > > informative post. > > I can but try. :) Have you got a UML+initramfs kernel? Ah ok, you embedded the initramfs... my personal bugzilla (i.e. my brain) has a NEW (CONFIRMED) bug that initrd=$initramfs_file won't work with UML, so Gentoo install doesn't work either. Can you tell me whether you falsified my report or it is true for you too? -- Inform me of my mistakes, so I can keep imitating Homer Simpson's "Doh!". Paolo Giarrusso, aka Blaisorblade http://www.user-mode-linux.org/~blaisorblade Chiacchiera con i tuoi amici in tempo reale! http://it.yahoo.com/mail_it/foot/*http://it.messenger.yahoo.com |
From: Nix <ni...@es...> - 2006-10-26 19:09:17
|
On 26 Oct 2006, bla...@ya... uttered the following: > On Wednesday 25 October 2006 23:37, Nix wrote: >> On 25 Oct 2006, Christopher Marshall verbalised: >> > Thanks for all the information about initramfs, that was a very >> > informative post. >> >> I can but try. :) > Have you got a UML+initramfs kernel? Ah ok, you embedded the initramfs... my Well, yes, of course. I really dislike the non-embedded versions: they get out of synch with the kernel and it's hard to have different initramfses for different kernels without constantly fiddling with the bootloader configuration and they don't get autobuilt with the kernel and and and. However, my UML is the one Linux installation I administer which I'm *not* yet booting from initramfs: I plan to fix this in very short order (i.e., next weekend). > personal bugzilla (i.e. my brain) has a NEW (CONFIRMED) bug that > initrd=$initramfs_file won't work with UML, so Gentoo install doesn't work > either. Can you tell me whether you falsified my report or it is true for you > too? No idea yet. I'll know soon :) -- `When we are born we have plenty of Hydrogen but as we age our Hydrogen pool becomes depleted.' |
From: Blaisorblade <bla...@ya...> - 2006-10-14 02:10:08
|
On Wednesday 11 October 2006 21:33, Flavio wrote: > I want to post entire boot message to help you to see better my problem. > Maybe I posted not sufficient elements: Sorry for answering so late... I got a report from another people for the same bug and it seems caused by the tls/x86-64-support in -bb1. there's one suspicious spot in it which I had to check (one initcall return value, but it seems ok). I'll go verify what is happening there (maybe, simply, its TLS support does not work for 64bit UMLs and it makes init fail). I can't test it easily, will try in next days. -- Inform me of my mistakes, so I can keep imitating Homer Simpson's "Doh!". Paolo Giarrusso, aka Blaisorblade http://www.user-mode-linux.org/~blaisorblade Chiacchiera con i tuoi amici in tempo reale! http://it.yahoo.com/mail_it/foot/*http://it.messenger.yahoo.com |
From: Flavio <fbc...@gm...> - 2006-10-14 07:16:48
|
> Sorry for answering so late... I got a report from another people for the > same > bug and it seems caused by the tls/x86-64-support in -bb1. there's one > suspicious spot in it which I had to check (one initcall return value, but > it > seems ok). I'll go verify what is happening there (maybe, simply, its TLS > support does not work for 64bit UMLs and it makes init fail). I can't test > it > easily, will try in next days. Thank You! Meanwhile I'm going to try on a x86 processor laptop. I also upgraded my glibc to 2.4 also on my laptop. I hope there will be no trouble also if patches fix this.. but I'm sure I will have no problem ;-) |