From 0a2d3412e122b571cf5f99784667c2b41c8aea95 Mon Sep 17 00:00:00 2001 From: Jay Larson Date: Fri, 28 Oct 2016 14:51:20 -0500 Subject: [PATCH] Added dependencies and extracted source since it needs to be tracked --- Makefile | 34 +-- SRC/mkinitramfs-0.0.tar.bz2 | Bin 3315 -> 0 bytes SRC/mkinitramfs-0.0/Makefile | 10 + SRC/mkinitramfs-0.0/sbin/mkinitramfs | 199 ++++++++++++++++++ .../usr/share/mkinitramfs/init.in | 108 ++++++++++ 5 files changed, 323 insertions(+), 28 deletions(-) delete mode 100644 SRC/mkinitramfs-0.0.tar.bz2 create mode 100644 SRC/mkinitramfs-0.0/Makefile create mode 100755 SRC/mkinitramfs-0.0/sbin/mkinitramfs create mode 100644 SRC/mkinitramfs-0.0/usr/share/mkinitramfs/init.in diff --git a/Makefile b/Makefile index 7da4f08..9770aeb 100644 --- a/Makefile +++ b/Makefile @@ -8,38 +8,19 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -DEPENDS = +DEPENDS = find,kmod,psmisc,sed ARCH = x86_64 URL = -DESC = -SNAPVER = sr0 +DESC = This package includes scripts to build an initrd image +SNAPVER = sr1 -ARCHIVE := $(PWD)/SRC/$(shell ls SRC|egrep '(bz2|gz|tar|xz)$$'|tail -1) -TYPE := $(shell file -ib $(ARCHIVE)|cut -d';' -f1|tr -d '\n') -SRCDIR := $(shell tar -tf $(ARCHIVE)|head -1|sed 's/\/.*//') +ARCHIVE := '' +SRCDIR := $(PWD)/SRC/mkinitramfs-* PATCHDIR := $(PWD)/SRC/patches VERSION := $(shell echo $(SRCDIR)|egrep -o '\-[0-9].*'|sed 's/^-//')$(SNAPVER) -MAKEINST = make install -SNAPHACKS = - include /usr/share/snap/Makefile.snaplinux -$(SRCDIR)/Makefile: $(ARCHIVE) - @if [ '$(TYPE)' == 'application/x-bzip2' ]; then \ - tar -jxf $(ARCHIVE); \ - elif [ '$(TYPE)' == 'application/x-gzip' ]; then \ - tar -zxf $(ARCHIVE); \ - elif [ '$(TYPE)' == 'application/x-tar' ]; then \ - tar -xf $(ARCHIVE); \ - elif [ '$(TYPE)' == 'application/x-xz' ]; then \ - tar -xf $(ARCHIVE); \ - else \ - echo 'Unable to determine archive type'; \ - exit 1; \ - fi - @touch $(SRCDIR)/Makefile - $(ROOT): $(SRCDIR)/Makefile @if [ -d $(ROOT) ]; then \ touch $(ROOT); \ @@ -47,10 +28,7 @@ $(ROOT): $(SRCDIR)/Makefile mkdir -v $(ROOT); \ fi - @cd $(SRCDIR); \ - $(MAKEINST) DESTDIR=$(ROOT) - - @$(SNAPHACKS) + @cd $(SRCDIR) && make install DESTDIR=$(ROOT) clean: @rm -rvf $(ROOT) \ diff --git a/SRC/mkinitramfs-0.0.tar.bz2 b/SRC/mkinitramfs-0.0.tar.bz2 deleted file mode 100644 index 96814014ed5382c505af18dacc3faa7c0e072267..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3315 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 $unsorted + copy $f bin +done + +# Add lvm if present +if [ -x /sbin/lvm ] ; then sbinfiles="$sbinfiles lvm dmsetup"; fi + +for f in $sbinfiles ; do + ldd /sbin/$f | sed "s/\t//" | cut -d " " -f1 >> $unsorted + copy $f sbin +done + +# Add module symlinks if appropriate +if [ -n "$KERNEL_VERSION" ] && [ -x /bin/kmod ] ; then + ln -s kmod $WDIR/bin/lsmod + ln -s kmod $WDIR/bin/insmod +fi + +# Add lvm symlinks if appropriate +# Also copy the lvm.conf file +if [ -x /sbin/lvm ] ; then + ln -s lvm $WDIR/sbin/lvchange + ln -s lvm $WDIR/sbin/lvrename + ln -s lvm $WDIR/sbin/lvextend + ln -s lvm $WDIR/sbin/lvcreate + ln -s lvm $WDIR/sbin/lvdisplay + ln -s lvm $WDIR/sbin/lvscan + + ln -s lvm $WDIR/sbin/pvchange + ln -s lvm $WDIR/sbin/pvck + ln -s lvm $WDIR/sbin/pvcreate + ln -s lvm $WDIR/sbin/pvdisplay + ln -s lvm $WDIR/sbin/pvscan + + ln -s lvm $WDIR/sbin/vgchange + ln -s lvm $WDIR/sbin/vgcreate + ln -s lvm $WDIR/sbin/vgscan + ln -s lvm $WDIR/sbin/vgrename + ln -s lvm $WDIR/sbin/vgck + # Conf file(s) + cp -a /etc/lvm $WDIR/etc +fi + +# Add mtab symlink for zfs +ln -s /proc/mounts $WDIR/etc/mtab + +# Install libraries +sort $unsorted | uniq | while read library ; do + if [ "$library" == "linux-vdso.so.1" ] || + [ "$library" == "linux-gate.so.1" ]; then + continue + fi + + copy $library lib +done + +if [ -d /lib/udev ]; then + cp -a /lib/udev $WDIR/lib +fi + +#ls -lR $WDIR +mkdir -p $WDIR/lib/modules/$KERNEL_VERSION +touch $WDIR/lib/modules/$KERNEL_VERSION/modules.{builtin,order} + +# Install the kernel modules in use +# May want to work on removing unnecessary modules at some point +# though in most cases this should probably be good enough +printf "Copying modules...\n" + +for module in `cat /proc/modules|awk '{print $1}'`; do + cp --parents `modinfo -F filename $module` $WDIR/; +done + +depmod -b $WDIR $KERNEL_VERSION + +#if [ -n "$KERNEL_VERSION" ]; then +# find \ +# /lib/modules/$KERNEL_VERSION/kernel/{crypto,fs,lib} \ +# /lib/modules/$KERNEL_VERSION/kernel/drivers/{block,ata,md,firewire} \ +# /lib/modules/$KERNEL_VERSION/kernel/drivers/{scsi,message,pcmcia,virtio} \ +# /lib/modules/$KERNEL_VERSION/kernel/drivers/usb/{host,storage} \ +# /lib/modules/$KERNEL_VERSION/extra/{avl,nvpair,spl,unicode,zcommon,zfs} \ +# -type f 2> /dev/null | cpio --make-directories -p --quiet $WDIR +# +# cp /lib/modules/$KERNEL_VERSION/modules.{builtin,order} \ +# $WDIR/lib/modules/$KERNEL_VERSION +# +# depmod -b $WDIR $KERNEL_VERSION +#fi + +printf "Creating gzipped cpio...\n"; +( cd $WDIR ; find . | cpio -o -H newc --quiet | gzip -9 ) > /boot/$INITRAMFS_FILE + +# Remove the temporary directory and file +rm -rf $WDIR $unsorted +printf "done.\n" diff --git a/SRC/mkinitramfs-0.0/usr/share/mkinitramfs/init.in b/SRC/mkinitramfs-0.0/usr/share/mkinitramfs/init.in new file mode 100644 index 0000000..72546a9 --- /dev/null +++ b/SRC/mkinitramfs-0.0/usr/share/mkinitramfs/init.in @@ -0,0 +1,108 @@ +#!/bin/sh + +PATH=/bin:/usr/bin:/sbin:/usr/sbin +export PATH + +problem() +{ + printf "Encountered a problem!\n\nDropping you to a shell.\n\n" + sh +} + +no_device() +{ + printf "The device %s, which is supposed to contain the\n" $1 + printf "root file system, does not exist.\n" + printf "Please fix this problem and exit this shell.\n\n" +} + +no_mount() +{ + printf "Could not mount device %s\n" $1 + printf "Sleeping forever. Please reboot and fix the kernel command line.\n\n" + printf "Maybe the device is formatted with an unsupported file system?\n\n" + printf "Or maybe filesystem type autodetection went wrong, in which case\n" + printf "you should add the rootfstype=... parameter to the kernel command line.\n\n" + printf "Available partitions:\n" +} + +do_mount_root() +{ + mkdir /.root + [ -n "$rootflags" ] && rootflags="$rootflags," + rootflags="$rootflags$ro" + + case "$root" in + /dev/* ) device=$root ;; + UUID=* ) eval $root; device="/dev/disk/by-uuid/$UUID" ;; + LABEL=*) eval $root; device="/dev/disk/by-label/$LABEL" ;; + ZFS=*) eval $root; device="$ZFS"; zfs=true; rootfstype=zfs ;; + "" ) echo "No root device specified." ; problem ;; + esac + + if [ "$zfs" == 'true' ] ; then + zpool import -N -a + else + while [ ! -b "$device" ] ; do + no_device $device + problem + done + fi + + if ! mount -n -t "$rootfstype" -o "$rootflags" "$device" /.root ; then + no_mount $device + cat /proc/partitions + while true ; do sleep 10000 ; done + fi +} + +init=/sbin/init +root= +rootdelay= +rootfstype=auto +ro="ro" +rootflags= +device= + +mount -n -t devtmpfs devtmpfs /dev +mount -n -t proc proc /proc +mount -n -t sysfs sysfs /sys +mount -n -t tmpfs tmpfs /run + +read -r cmdline < /proc/cmdline + +for param in $cmdline ; do + case $param in + init=* ) init=${param#init=} ;; + root=* ) root=${param#root=} ;; + rootdelay=* ) rootdelay=${param#rootdelay=} ;; + rootfstype=*) rootfstype=${param#rootfstype=} ;; + rootflags=* ) rootflags=${param#rootflags=} ;; + ro ) ro="ro" ;; + rw ) ro="rw" ;; + esac +done + +# udevd location depends on version +if [ -x /sbin/udevd ]; then + UDEVD=/sbin/udevd +elif [ -x /lib/udev/udevd ]; then + UDEVD=/lib/udev/udevd +else + echo "Cannot find udevd" + problem +fi + +${UDEVD} --daemon --resolve-names=never +udevadm trigger +udevadm settle + +if [ -f /etc/mdadm.conf ] ; then mdadm -As ; fi +if [ -x /sbin/vgchange ] ; then /sbin/vgchange -a y > /dev/null ; fi +if [ -n "$rootdelay" ] ; then sleep "$rootdelay" ; fi + +do_mount_root + +killall -w ${UDEVD##*/} + +exec switch_root /.root "$init" "$@"