]> git.neil.brown.name Git - mdadm.git/blob - mkinitramfs
Release mdadm-4.0
[mdadm.git] / mkinitramfs
1 #!/bin/sh
2
3 # make sure we are being run in the right directory...
4 if [ -f mkinitramfs ]
5 then :
6 else
7   echo >&2 mkinitramfs must be run from the mdadm source directory.
8   exit 1
9 fi
10 if [ -f /bin/busybox ]
11 then : good, it exists
12   case `file /bin/busybox` in
13    *statically* ) : good ;;
14    * ) echo >&2 mkinitramfs: /bin/busybox is not statically linked: cannot proceed.
15        exit 1
16   esac
17 else
18   echo >&2 "mkinitramfs: /bin/busybox doesn't exist - please install it statically linked."
19     exit 1
20 fi
21
22 rm -rf initramfs
23 mkdir initramfs
24 mkdir initramfs/bin
25 make mdadm.static
26 cp mdadm.static initramfs/bin/mdadm
27 cp /bin/busybox initramfs/bin/busybox
28 ln initramfs/bin/busybox initramfs/bin/sh
29 cat <<- END > initramfs/init
30         #!/bin/sh
31
32         echo 'Auto-assembling boot md array'
33         mkdir /proc
34         mount -t proc proc /proc
35         if [ -n "$rootuuid" ]
36         then arg=--uuid=$rootuuid
37         elif [ -n "$mdminor" ]
38         then arg=--super-minor=$mdminor
39         else arg=--super-minor=0
40         fi
41         echo "Using $arg"
42         mdadm -Acpartitions $arg --auto=part /dev/mda
43         cd /
44         mount /dev/mda1 /root ||  mount /dev/mda /root
45         umount /proc
46         cd /root
47         exec chroot . /sbin/init < /dev/console > /dev/console 2>&1
48 END
49 chmod +x initramfs/init
50
51 (cd initramfs
52  find init bin | cpio -o -H newc | gzip --best
53 ) > init.cpio.gz
54 rm -rf initramfs
55 ls -l init.cpio.gz