Re: [dev][ubase] Implement switch_root

From: Markus Wichmann <nullplan_AT_gmx.net>
Date: Tue, 15 Apr 2014 18:44:54 +0200

On Sun, Apr 13, 2014 at 02:10:51PM +0200, FRIGN wrote:
> Good day,
>
> sometimes, you depend on an initramfs to do stuff for you before
> the rootfs is available.
> Busybox has become the standard for "all your initramfs needs", but
> tbh, I hate working with it.
> Statically linking sbase and ubase and choosing the tools you need for
> the job almost solves the problem, but the lack of switch_root, which
> almost every initramfs depends on, forces you to use busybox (because
> util-linux doesn't link statically).
>
> Now, I would've already sent in a patch, but I am pretty sure somebody
> here already hacked it together before. So, to save my time, I better
> ask now.
>
> Cheers
>
> FRIGN
>
> --
> FRIGN <dev_AT_frign.de>
>

Why switch_root and not pivot_root? Here's a sh mockup of how to do what
you wrote with pivot_root:

set -e
new_root=$1
put_old=$2
[ -d $put_old ] || made_dir=1
mkdir -p $put_old
cd $new_root
pivot_root $new_root $put_old
chroot $new_root
umount ${put_old#$new_root}
[ $made_dir ] && rm -rf ${put_old#$new_root}

It only depends on the new root being writable, and thus does not
require the initramfs to be a RAMFS or TMPFS (I remember being able to
boot from USB hard disk only by creating an initramfs, having that loaded
by the bootloader and launching linux with root=/dev/ram0, which made my
temporary root a SquashFS. In that case, switch_root will just refuse to
work)
Received on Tue Apr 15 2014 - 18:44:54 CEST

This archive was generated by hypermail 2.3.0 : Tue Apr 15 2014 - 18:48:15 CEST