[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: multistrap rootfs with initramfs



+++ Brendan Simon (eTRIX) [2009-10-30 17:27 +1100]:
> I'm looking at using multistrap to create a rootfs that can be passed to
> a linux build for an initramfs.
> 
> Is emsecondstage still relevant with multistrap ??

nope. 

> Is booting into a multistrap rootfs possible.

With a bit of tweakery so that enough is set up for booting. We
(balloonboard) avoid this by using a buildroot initramfs for first
boot and rootfs download/installation/configuration.

> The multistrap page on wiki says the rootfs just needs to be mounted (or
> chrooted) and configured with "dpkg --configure -a"

Correct.

> Looks like multistrap does not create:
>     /dev entries.
>     /etc/inittab
>     /etc/fstab
>     /etc/hosts
>     /etc/securetty
>     /etc/modules
>     /etc/hostname
>     /etc/network/interfaces

Indeed. that is local config often very device specific. We use a
script which is run after multistrap creates the base image:

#! /bin/sh
set -e -x

# Emdebian grip compatibility version
# intended to allow removal of balloon3-config

#pass path to the root. Don't let it run without one as it will break
your system
if [ "" = "$1" ] ; then 
  echo "You need to specify a path to the target rootfs"
  else
    if [ -e "$1" ] ; then
        ROOTFS="$1"
    else 
      echo "Root dir $ROOTFS not found"
    fi
fi
		
if [ "/" = "ROOTFS" ] ; then echo "Refusing to change your build system's files" ; fi

#Do things that need to be done at 1st stage so that rootfs will boot.

#Set securetty
#Add modules - e.g. to support USB serial/ethernet console

# specify config to use
if [ "" = "$2" ] ; then 
  CONFIG="files"
fi
if [ -d "$2" ] ; then
  CONFIG="$2"
else
  echo "Config dir $CONFIG not found"
fi
      
#read in settings
if [ -e config ] ; then
  . config
fi
	
#add serial ports to securetty - now idempotent
DONE=grep $CONSOLE $ROOTFS/etc/securetty || true
if [ -z "$DONE" ]; then
  echo "$CONSOLE" >> $ROOTFS/etc/securetty
fi
#put our standard fstab and network and modules files in
if [ ! -d $ROOTFS/etc/network ]; then mkdir -p $ROOTFS/etc/network; fi
if [ ! -d $ROOTFS/etc/init.d ]; then mkdir -p $ROOTFS/etc/init.d; fi
if [ ! -d $ROOTFS/etc/dhcp3 ]; then mkdir -p $ROOTFS/etc/dhcp3; fi
if [ ! -d $ROOTFS/etc/apt/apt.conf.d/ ]; then 
  mkdir -p $ROOTFS/etc/apt/apt.conf.d/
fi
cp -v $CONFIG/fstab $ROOTFS/etc/fstab
cp -v $CONFIG/interfaces $ROOTFS/etc/network/interfaces
cp -v $CONFIG/modules $ROOTFS/etc/modules
cp -v $CONFIG/dhclient.conf $ROOTFS/etc/dhcp3/
cp -v $CONFIG/urandom $ROOTFS/etc/init.d/
cp -v $CONFIG/inittab $ROOTFS/etc/
cp -v $CONFIG/10disablerecommends $ROOTFS/etc/apt/apt.conf.d/
# making devices so far missing between old and new multistrap versions preventing
# chroot from running into newly untarred rootfs
(cd $ROOTFS/dev; /dev/MAKEDEV -v std )
(cd $ROOTFS/dev; /dev/MAKEDEV -v fd )
(cd $ROOTFS/dev; /dev/MAKEDEV -v ptmx )
# creating devices
(cd $ROOTFS/dev; /dev/MAKEDEV -v fb )
(cd $ROOTFS/dev; /dev/MAKEDEV -v ttyS1 ttyS2 )
(cd $ROOTFS/dev; /dev/MAKEDEV -v sd )
(cd $ROOTFS/dev; /dev/MAKEDEV -v mtd )
#mutter - it makes mtd but not mtdblock - patch MAKEDEV?
#
(cd $ROOT/FSdev; /dev//MAKEDEV -v mtdblock{0..7})
(cd $ROOTFS/dev; mkdir -p mtdblock; for DEVICE in 0 1 2 3 4 5 6 7; do mknod mtdblock/$DEVICE b 31 $DEVICE; done)
# tidy up after old multistrap code
if [ -f $ROOTFS/etc/apt/sources.list.d/sources.list ]; then
  rm -v $ROOTFS/etc/apt/sources.list.d/sources.list
fi
# tidy up after balloon3-config
if [ -f $ROOTFS/etc/apt/sources.list ]; then
  rm -v $ROOTFS/etc/apt/sources.list
fi
					  
# stuff that can be left to
2nd stage:
(cd $ROOTFS/dev; ln -sf urandom random)
#use bash, not dash - saves 10 seconds 
# ... but we don't have dash ...
#(cd $ROOTFS/bin; ln -sf dash sh)
#set hostname
echo balloon > $ROOTFS/etc/hostname
#be nice to put these in the right places in files (perl -pi?)
echo "127.0.0.1       localhost.localdomain   localhost" > ${ROOTFS}/etc/hosts
echo "127.0.1.1       balloon   balloon" >> ${ROOTFS}/etc/hosts

This is all extremely low-tech but it does work.


Wookey
-- 
Principal hats:  iEndian - Balloonboard - Toby Churchill - Emdebian
http://wookware.org/


Reply to: