switch_root and centos

Michael Di Domenico mdidomenico4 at gmail.com
Mon Dec 14 20:53:07 UTC 2009


Mount move what though?  I thought switchroot was support to do that
under the covers, basically swapping

/dev/ram0 rootfs /

with

/dev/hda ext3 /newroot

then do a chroot into /

and then run what?  this seems to be where i'm getting stuck...  :(

though once the above fails and i end up back in busybox i see

/dev/ram0 /
and
/dev/hda /

mounted...  so it seems like it's getting half way there...

On Mon, Dec 14, 2009 at 3:07 PM, Christopher Barry
<christopher.barry at rackwareinc.com> wrote:
> On Mon, 2009-12-14 at 14:53 -0500, Christopher Barry wrote:
>> On Sun, 2009-12-13 at 22:30 -0500, Michael Di Domenico wrote:
>> > Can anyone point me towards a how-to that shows step by step how to
>> > boot up busybox and then switch_root to Centos installed on a local
>> > hard drive and start that up?
>> >
>> > After messing with busybox for a few days, i've gotten it to pxe boot
>> > and run inside QEMU, but i'm having the hardest time getting
>> > switch_root to startup Centos fully
>> >
>> > The first problem i hit is the infamous "not rootfs", which i can see
>> > is controlled by conditions, though have no idea which one i'm failing
>> > on (a more verbose error msg would have been nice).  I commented out
>> > the conditions and it does seem to pivot root, but doing
>> >
>> > exec switch_root /newroot /etc/rc.d/rc.sysinit
>> >
>> > looks like things are going to startup and it pushes through some of
>> > the sysinit scripts, but then dumps me back into busybox
>> >
>> > Which led me to believe its not really invoking /sbin/init, but when i do
>> >
>> > exec switch_root /newroot /sbin/init 3
>> >
>> > I get 'timeout opening/waiting for initctl'
>> >
>> > I'm really at a loss to understand what's not working and googling
>> > hasn't turned up any revelations
>> >
>> > Here's my busybox init script
>> >
>> > ---
>> >
>> > #!/bin/sh
>> >
>> > mount -t proc proc /proc
>> > mount -t sysfs sysfs /sys
>> > mount -t tmpfs tmpfs /dev
>> >
>> > echo "Creating initial device nodes"
>> > mdev -s
>> >
>> > echo "Loading jbd.ko module"
>> > insmod /lib/modules/jbd.ko
>> > echo "Loading ext3.ko module"
>> > insmod /lib/modules/ext3.ko
>> > echo "Loading scsi_mod.ko module"
>> > insmod /lib/modules/scsi_mod.ko
>> > echo "Loading sd_mod.ko module"
>> > insmod /lib/modules/sd_mod.ko
>> > echo "Loading libata.ko module"
>> > insmod /lib/modules/libata.ko
>> > echo "Loading pata_sis.ko module"
>> > insmod /lib/modules/pata_sis.ko
>> > echo "Loading sata_sis.ko module"
>> > insmod /lib/modules/sata_sis.ko
>> > echo "Loading ata_piix.ko module"
>> > insmod /lib/modules/ata_piix.ko
>> > echo "Loading mii.ko module"
>> > insmod /lib/modules/mii.ko
>> > echo "Loading e1000.ko module"
>> > insmod /lib/modules/e1000.ko
>> > echo "Loading sis900.ko module"
>> > insmod /lib/modules/sis900.ko
>> >
>> > mount /dev/hda /newroot
>> > exec switch_root /newroot /sbin/init 3
>> > _______________________________________________
>> > busybox mailing list
>> > busybox at busybox.net
>> > http://lists.busybox.net/mailman/listinfo/busybox
>> >
>>
>> possibly:
>> exec switch_root -c /dev/console /newroot /sbin/init
>>
>> and drop the args initially.
>>
>> -C
>>
>
> Looking again at your script, you should mount --move your mounts over
> to /newroot before you exec switch_root as well.
>
> -C
>
>>
>>
>>
>> _______________________________________________
>> busybox mailing list
>> busybox at busybox.net
>> http://lists.busybox.net/mailman/listinfo/busybox
>>
>
>
> _______________________________________________
> busybox mailing list
> busybox at busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox
>


More information about the busybox mailing list