From 7dc74b94ec8864f4aa9d221816eadc054e090d7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= Date: Fri, 2 Jun 2017 09:59:17 +0200 Subject: Add recovery mode for myinitramfs --- sys-boot/myinitramfs/files/init | 8 +++- sys-boot/myinitramfs/myinitramfs-1.0.ebuild | 40 ---------------- sys-boot/myinitramfs/myinitramfs-1.1.ebuild | 40 ++++++++++++++++ sys-kernel/linux/linux-4.11.3-r1.ebuild | 73 ---------------------------- sys-kernel/linux/linux-4.11.3-r2.ebuild | 74 +++++++++++++++++++++++++++++ 5 files changed, 121 insertions(+), 114 deletions(-) delete mode 100644 sys-boot/myinitramfs/myinitramfs-1.0.ebuild create mode 100644 sys-boot/myinitramfs/myinitramfs-1.1.ebuild delete mode 100644 sys-kernel/linux/linux-4.11.3-r1.ebuild create mode 100644 sys-kernel/linux/linux-4.11.3-r2.ebuild 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 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.0.ebuild deleted file mode 100644 index 9e8e999..0000000 --- a/sys-boot/myinitramfs/myinitramfs-1.0.ebuild +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright 1999-2017 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -# TODO support encrytion and btrfs only as option - -EAPI=6 - -DESCRIPTION="My personal initramfs (verry simple with encryption support)" -HOMEPAGE="" -SRC_URI="" - -LICENSE="GPLv2" -SLOT="0" -KEYWORDS="amd64 x86" -IUSE="" - -DEPEND="sys-fs/cryptsetup -sys-fs/btrfs-progs -sys-apps/linux-misc-apps -sys-apps/busybox[static]" -RDEPEND="${DEPENDS}" - -src_unpack() { - # Well we have no sources so just create empty directory - mkdir -p "${S}" -} - -src_compile() { - # TODO generate list dynamically - cp "${FILESDIR}"/list list - echo "file /init ${FILESDIR}/init 755 0 0" >> list - gen_init_cpio list > initramfs.cpio - gzip initramfs.cpio -} - -src_install() { - dodir /boot - insinto /boot - newins initramfs.cpio.gz initramfs-gentoo -} diff --git a/sys-boot/myinitramfs/myinitramfs-1.1.ebuild b/sys-boot/myinitramfs/myinitramfs-1.1.ebuild new file mode 100644 index 0000000..9e8e999 --- /dev/null +++ b/sys-boot/myinitramfs/myinitramfs-1.1.ebuild @@ -0,0 +1,40 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +# TODO support encrytion and btrfs only as option + +EAPI=6 + +DESCRIPTION="My personal initramfs (verry simple with encryption support)" +HOMEPAGE="" +SRC_URI="" + +LICENSE="GPLv2" +SLOT="0" +KEYWORDS="amd64 x86" +IUSE="" + +DEPEND="sys-fs/cryptsetup +sys-fs/btrfs-progs +sys-apps/linux-misc-apps +sys-apps/busybox[static]" +RDEPEND="${DEPENDS}" + +src_unpack() { + # Well we have no sources so just create empty directory + mkdir -p "${S}" +} + +src_compile() { + # TODO generate list dynamically + cp "${FILESDIR}"/list list + echo "file /init ${FILESDIR}/init 755 0 0" >> list + gen_init_cpio list > initramfs.cpio + gzip initramfs.cpio +} + +src_install() { + dodir /boot + insinto /boot + newins initramfs.cpio.gz initramfs-gentoo +} diff --git a/sys-kernel/linux/linux-4.11.3-r1.ebuild b/sys-kernel/linux/linux-4.11.3-r1.ebuild deleted file mode 100644 index cece624..0000000 --- a/sys-kernel/linux/linux-4.11.3-r1.ebuild +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright 1999-2017 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -VER="${PV%-r*}" -REV="r${PV##*-r}" - -DESCRIPTION="Linux kernel" -HOMEPAGE="http://kernel.org/" -SRC_URI="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/snapshot/linux-stable-${VER}.tar.gz -> ${P}.tar.gz" -S="${WORKDIR}/linux-stable-${VER}" - -LICENSE="GPLv2" -SLOT="${PV}" -KEYWORDS="amd64 ~x86" -IUSE="" - -DEPEND="" -RDEPEND="${DEPEND} - sys-boot/myinitramfs" - -src_configure() { - # Fix ARCH variable - [ "$ARCH" = "amd64" ] && ARCH="x86" - - "${FILESDIR}"/config_prepare.sh || die "Configuration application failed" -} - -src_install() { - emake modules_install INSTALL_MOD_PATH="${D}" INSTALL_FW_PATH="${D}/lib/firmware/${PV}" - - dodir /boot - insinto /boot - newins "${S}/arch/$ARCH/boot/bzImage" "bzlinux-${PV}" - - # Package source (kind of annoying because of some packages expecting it) - emake clean - dodir /usr/src - cp -a "${S}" "${D}/usr/src/linux-${PV}" -} - -# Link /usr/src/linux to newest kernel -src_link() { - ( - cd "${ROOT}/usr/src" - rm -f linux - ln -s $(ls | grep "linux-" | sort | tail -1) linux - ) -} - -pkg_postinst() { - # Add label to syslinux config if there is non yet - SYSLINUX="${ROOT}/boot/syslinux/syslinux.cfg" - if ! grep -q "^LABEL gentoo-${PV}$" "${SYSLINUX}"; then - 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!" - else - eerror "Adding label to syslinux configuration failed as there are no arguments" - fi - fi - src_link -} - -pkg_prerm() { - # Remove label from syslinux config - sed -i "/^LABEL gentoo-${PV}$/,/^$/d" /boot/syslinux/syslinux.cfg || eerror "Removing label from syslinux fonfiguration failed!" -} - -pkg_postrm() { - src_link -} diff --git a/sys-kernel/linux/linux-4.11.3-r2.ebuild b/sys-kernel/linux/linux-4.11.3-r2.ebuild new file mode 100644 index 0000000..0dcdd3e --- /dev/null +++ b/sys-kernel/linux/linux-4.11.3-r2.ebuild @@ -0,0 +1,74 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +VER="${PV%-r*}" +REV="r${PV##*-r}" + +DESCRIPTION="Linux kernel" +HOMEPAGE="http://kernel.org/" +SRC_URI="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/snapshot/linux-stable-${VER}.tar.gz -> ${P}.tar.gz" +S="${WORKDIR}/linux-stable-${VER}" + +LICENSE="GPLv2" +SLOT="${PV}" +KEYWORDS="amd64 ~x86" +IUSE="" + +DEPEND="" +RDEPEND="${DEPEND} + sys-boot/myinitramfs" + +src_configure() { + # Fix ARCH variable + [ "$ARCH" = "amd64" ] && ARCH="x86" + + "${FILESDIR}"/config_prepare.sh || die "Configuration application failed" +} + +src_install() { + emake modules_install INSTALL_MOD_PATH="${D}" INSTALL_FW_PATH="${D}/lib/firmware/${PV}" + + dodir /boot + insinto /boot + newins "${S}/arch/$ARCH/boot/bzImage" "bzlinux-${PV}" + + # Package source (kind of annoying because of some packages expecting it) + emake clean + dodir /usr/src + cp -a "${S}" "${D}/usr/src/linux-${PV}" +} + +# Link /usr/src/linux to newest kernel +src_link() { + ( + cd "${ROOT}/usr/src" + rm -f linux + ln -s $(ls | grep "linux-" | sort | tail -1) linux + ) +} + +pkg_postinst() { + # Add label to syslinux config if there is non yet + SYSLINUX="${ROOT}/boot/syslinux/syslinux.cfg" + if ! grep -q "^LABEL gentoo-${PV}$" "${SYSLINUX}"; then + 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 + fi + src_link +} + +pkg_prerm() { + # Remove label from syslinux config + sed -i "/^LABEL gentoo-${PV}(|-recovery)$/,/^$/d" /boot/syslinux/syslinux.cfg || eerror "Removing label from syslinux fonfiguration failed!" +} + +pkg_postrm() { + src_link +} -- cgit v1.2.3