diff options
author | Karel Kočí <cynerd@email.cz> | 2017-06-02 09:59:17 +0200 |
---|---|---|
committer | Karel Kočí <cynerd@email.cz> | 2017-06-02 09:59:17 +0200 |
commit | 7dc74b94ec8864f4aa9d221816eadc054e090d7f (patch) | |
tree | 337fccbafec3f12d22143c74ea69d57f50564d17 | |
parent | ee11bb7533c3dc5d39b725881cac04542f575d3c (diff) | |
download | gentoo-personal-overlay-7dc74b94ec8864f4aa9d221816eadc054e090d7f.tar.gz gentoo-personal-overlay-7dc74b94ec8864f4aa9d221816eadc054e090d7f.tar.bz2 gentoo-personal-overlay-7dc74b94ec8864f4aa9d221816eadc054e090d7f.zip |
Add recovery mode for myinitramfs
-rwxr-xr-x | sys-boot/myinitramfs/files/init | 8 | ||||
-rw-r--r-- | sys-boot/myinitramfs/myinitramfs-1.1.ebuild (renamed from sys-boot/myinitramfs/myinitramfs-1.0.ebuild) | 0 | ||||
-rw-r--r-- | sys-kernel/linux/linux-4.11.3-r2.ebuild (renamed from sys-kernel/linux/linux-4.11.3-r1.ebuild) | 3 |
3 files changed, 9 insertions, 2 deletions
diff --git a/sys-boot/myinitramfs/files/init b/sys-boot/myinitramfs/files/init index 3cd6ce9..134d85c 100755 --- a/sys-boot/myinitramfs/files/init +++ b/sys-boot/myinitramfs/files/init @@ -29,7 +29,7 @@ fail() { busybox --install -s while true; do echo -e "${C_GRAY}Mount root to /mnt/root and exit shell to switch root.${C_NO}" - # Note this is hack to enable job control + # Note: this is hack to enable job control setsid sh -c 'exec sh </dev/tty1 >/dev/tty1 2>&1' echo exec switch_root /mnt/root /sbin/init || echo -e "${C_RED}Root switch failed!${C_NO}" @@ -44,6 +44,7 @@ busybox mount -t devtmpfs none /dev || fail "/dev mount failed!" # Now open and mount root root="" rootflags="" +recovery=false for opt in $(cat /proc/cmdline); do case "$opt" in @@ -53,6 +54,9 @@ for opt in $(cat /proc/cmdline); do rootflags=*) rootflags=${opt:10} ;; + recovery) + recovery=true + ;; BOOT_IMAGE=*|initrd=*) # Ignore those ;; @@ -62,6 +66,8 @@ for opt in $(cat /proc/cmdline); do esac done +$recovery && fail "Requested recovery." + [ -z "$root" ] && fail "Missing root argument!" echo -ne "${C_GRAY}Waiting for root ($root)..." diff --git a/sys-boot/myinitramfs/myinitramfs-1.0.ebuild b/sys-boot/myinitramfs/myinitramfs-1.1.ebuild index 9e8e999..9e8e999 100644 --- a/sys-boot/myinitramfs/myinitramfs-1.0.ebuild +++ b/sys-boot/myinitramfs/myinitramfs-1.1.ebuild diff --git a/sys-kernel/linux/linux-4.11.3-r1.ebuild b/sys-kernel/linux/linux-4.11.3-r2.ebuild index cece624..0dcdd3e 100644 --- a/sys-kernel/linux/linux-4.11.3-r1.ebuild +++ b/sys-kernel/linux/linux-4.11.3-r2.ebuild @@ -56,6 +56,7 @@ pkg_postinst() { ARGS="$(grep -E "^# ARGS: " "${SYSLINUX}" | sed 's/^# ARGS: //')" if [ -n "$ARGS" ]; then sed -i "/^## Dynamic labels ##$/a LABEL gentoo-${PV}\n\tMENU LABEL Gentoo ${PV}\n\tLINUX ../bzlinux-${PV}\n\tAPPEND ${ARGS}\n\tINITRD ../initramfs-gentoo\n" "${SYSLINUX}" || eerror "Adding label to syslinux configuration failed!" + sed -i "/^## Dynamic recovery labels ##$/a LABEL gentoo-${PV}\n\tMENU LABEL Gentoo ${PV} - Recovery\n\tLINUX ../bzlinux-${PV}\n\tAPPEND ${ARGS} recovery\n\tINITRD ../initramfs-gentoo\n" "${SYSLINUX}" || eerror "Adding recovery label to syslinux configuration failed!" else eerror "Adding label to syslinux configuration failed as there are no arguments" fi @@ -65,7 +66,7 @@ pkg_postinst() { pkg_prerm() { # Remove label from syslinux config - sed -i "/^LABEL gentoo-${PV}$/,/^$/d" /boot/syslinux/syslinux.cfg || eerror "Removing label from syslinux fonfiguration failed!" + sed -i "/^LABEL gentoo-${PV}(|-recovery)$/,/^$/d" /boot/syslinux/syslinux.cfg || eerror "Removing label from syslinux fonfiguration failed!" } pkg_postrm() { |