Move init script into a separate file.

This commit is contained in:
Richard W.M. Jones
2009-06-19 14:47:22 +01:00
parent 677b280411
commit b7f39224e1
3 changed files with 32 additions and 35 deletions

View File

@@ -20,7 +20,8 @@ EXTRA_DIST = \
libguestfs-supermin-helper \
kmod.whitelist \
kmod.whitelist.in \
packagelist.in
packagelist.in \
init
# Build the root filesystem (appliance).
# Currently this is arch-dependent, so it seems like putting it in
@@ -53,7 +54,7 @@ endif
# This is for building the normal appliance:
$(INITRAMFSIMG) $(VMLINUZ): $(top_builddir)/initramfs/fakeroot.log
$(top_builddir)/initramfs/fakeroot.log: make.sh kmod.whitelist packagelist
$(top_builddir)/initramfs/fakeroot.log: make.sh kmod.whitelist packagelist init
-mv $(INITRAMFSIMG) $(INITRAMFSIMG).bak
-mv $(VMLINUZ) $(VMLINUZ).bak
if ! bash make.sh; then rm -f $@; exit 1; fi

28
appliance/init Executable file
View File

@@ -0,0 +1,28 @@
#!/bin/sh
echo Starting /init script ...
PATH=/sbin:/usr/sbin:$PATH
mount -t tmpfs none /dev
mkdir /dev/pts /dev/shm /dev/mapper
MAKEDEV mem null port zero core full ram tty console fd \
hda hdb hdc hdd sda sdb sdc sdd loop sd
mknod /dev/ptmx c 5 2; chmod 0666 /dev/ptmx
mknod /dev/random c 1 8; chmod 0666 /dev/random
mknod /dev/urandom c 1 9; chmod 0444 /dev/urandom
mount -t proc /proc /proc
mount -t sysfs /sys /sys
mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts
ln -sf /proc/self/fd/0 /dev/stdin
ln -sf /proc/self/fd/1 /dev/stdout
ln -sf /proc/self/fd/2 /dev/stderr
modprobe virtio_pci
modprobe virtio_net
modprobe dm_mod ||:
/sbin/ifconfig lo 127.0.0.1
/sbin/ifconfig eth0 10.0.2.10
/sbin/route add default gw 10.0.2.2
lvm vgscan --ignorelockingfailure
lvm vgchange -ay --ignorelockingfailure
if grep -sq guestfs_rescue=1 /proc/cmdline; then
bash -i
fi
exec guestfsd -f

View File

@@ -133,39 +133,7 @@ echo nameserver 10.0.2.3 > resolv.conf.new
rm resolv.conf.new
# Create the init script.
cat > init.new <<'__EOF__'
#!/bin/sh
echo Starting /init script ...
PATH=/sbin:/usr/sbin:$PATH
mount -t tmpfs none /dev
mkdir /dev/pts /dev/shm /dev/mapper
MAKEDEV mem null port zero core full ram tty console fd \
hda hdb hdc hdd sda sdb sdc sdd loop sd
mknod /dev/ptmx c 5 2; chmod 0666 /dev/ptmx
mknod /dev/random c 1 8; chmod 0666 /dev/random
mknod /dev/urandom c 1 9; chmod 0444 /dev/urandom
mount -t proc /proc /proc
mount -t sysfs /sys /sys
mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts
ln -sf /proc/self/fd/0 /dev/stdin
ln -sf /proc/self/fd/1 /dev/stdout
ln -sf /proc/self/fd/2 /dev/stderr
modprobe virtio_pci
modprobe virtio_net
modprobe dm_mod ||:
/sbin/ifconfig lo 127.0.0.1
/sbin/ifconfig eth0 10.0.2.10
/sbin/route add default gw 10.0.2.2
lvm vgscan --ignorelockingfailure
lvm vgchange -ay --ignorelockingfailure
if grep -sq guestfs_rescue=1 /proc/cmdline; then
bash -i
fi
exec guestfsd -f
__EOF__
@FEBOOTSTRAP_INSTALL@ initramfs init.new /init 0755 root.root
rm init.new
@FEBOOTSTRAP_INSTALL@ initramfs appliance/init /init 0755 root.root
# Just in case the kernel isn't looking for /init, make /sbin/init
# be our script, not the real init.