public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: sys-boot/systemrescuecd-x86-grub/, sys-boot/systemrescuecd-x86-grub/files/
@ 2015-11-03 12:43 Michał Górny
  0 siblings, 0 replies; 2+ messages in thread
From: Michał Górny @ 2015-11-03 12:43 UTC (permalink / raw
  To: gentoo-commits

commit:     1e65133983f404ea64079df0933dd820619a9b44
Author:     vitalogy <vitalogy_github <AT> milaw <DOT> biz>
AuthorDate: Sun Nov  1 19:28:25 2015 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Nov  1 19:28:25 2015 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1e651339

sys-boot/systemrescuecd-x86-grub: new ebuild

 .../files/systemrescuecd.default                   | 21 +++++++
 .../files/systemrescuecd.grub                      | 65 ++++++++++++++++++++++
 sys-boot/systemrescuecd-x86-grub/metadata.xml      | 17 ++++++
 .../systemrescuecd-x86-grub-0.1.ebuild             | 33 +++++++++++
 4 files changed, 136 insertions(+)

diff --git a/sys-boot/systemrescuecd-x86-grub/files/systemrescuecd.default b/sys-boot/systemrescuecd-x86-grub/files/systemrescuecd.default
new file mode 100644
index 0000000..d9b2d0b
--- /dev/null
+++ b/sys-boot/systemrescuecd-x86-grub/files/systemrescuecd.default
@@ -0,0 +1,21 @@
+# Here you can set custom bootoptions for the SystemRescueCD
+#
+# You can add for example in a space separated list:
+#  setkmap=xx: which defines the keymap to load (example: setkmap=de)
+#  dostartx: load the X.Org graphical environment and launch Xfce
+#  docache: causes the iso file to be fully loaded into memory
+#           this requires 400MB of memory to cache everything
+#  doload=xxx: loads needed kernel modules (example: doload=3c59x,e1000)
+#  noload=xxx: prevents loading kernel modules
+#  nomodeset: do not load the Kernel-Mode-Setting video driver
+#
+# Example:
+#  SRCD_BOOTOPTIONS="setkmap=de docache dostartx"
+#
+# For all available bootoptions see:
+#  http://www.sysresccd.org/Sysresccd-manual-en_Booting_the_CD-ROM
+#
+# Note:
+#  After changing this, you must update your grub configuration file, to take effect
+
+SRCD_BOOTOPTIONS=""

diff --git a/sys-boot/systemrescuecd-x86-grub/files/systemrescuecd.grub b/sys-boot/systemrescuecd-x86-grub/files/systemrescuecd.grub
new file mode 100644
index 0000000..b69f298
--- /dev/null
+++ b/sys-boot/systemrescuecd-x86-grub/files/systemrescuecd.grub
@@ -0,0 +1,65 @@
+#!/bin/sh
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+. /usr/share/grub/grub-mkconfig_lib
+
+if [ -r /etc/default/systemrescuecd ] ; then
+  . /etc/default/systemrescuecd
+fi
+
+# srcd = path of newest link to iso of systemrescuecd, created by the ebuild
+#        of systemrescuecd-x86
+srcd="/usr/share/systemrescuecd/systemrescuecd-x86-newest.iso"
+
+longname="SystemRescueCD"
+bootops=")"
+
+if [ ! -z "${SRCD_BOOTOPTIONS}" ]; then
+	bootops=" with bootoptions)"
+fi
+
+if [ -f "${srcd}" ]; then
+
+	device=$(${grub_probe} --target=device "${srcd}")
+	path=$(make_system_path_relative_to_its_root "${srcd}")
+	grub_string=$(prepare_grub_to_access_device "${device}" | grub_add_tab | grub_add_tab)
+
+	gettext_printf "Found %s on %s\n" "${longname}" "${device}" >&2
+	onstr=$(gettext_printf "(on %s)" "${device}")
+
+	cat << EOF
+submenu "${longname}" --class submenu {
+	menuentry "${longname} (32bit standard${bootops}" --class rescue {
+${grub_string}
+		set isofile=${srcd}
+		loopback loop \${isofile}
+		linux (loop)/isolinux/rescue32 ${SRCD_BOOTOPTIONS} isoloop=\${isofile}
+		initrd (loop)/isolinux/initram.igz
+	}
+	menuentry "${longname} (64bit standard${bootops}" --class rescue {
+${grub_string}
+		set isofile=${srcd}
+		loopback loop \${isofile}
+		linux (loop)/isolinux/rescue64 ${SRCD_BOOTOPTIONS} isoloop=\${isofile}
+		initrd (loop)/isolinux/initram.igz
+	}
+	menuentry "${longname} (32bit alternative${bootops}" --class rescue {
+${grub_string}
+		set isofile=${srcd}
+		loopback loop \${isofile}
+		linux (loop)/isolinux/altker32 ${SRCD_BOOTOPTIONS} isoloop=\${isofile}
+		initrd (loop)/isolinux/initram.igz
+	}
+	menuentry "${longname} (64bit alternative${bootops}" --class rescue {
+${grub_string}
+		set isofile=${srcd}
+		loopback loop \${isofile}
+		linux (loop)/isolinux/altker64 ${SRCD_BOOTOPTIONS} isoloop=\${isofile}
+		initrd (loop)/isolinux/initram.igz
+	}
+}
+EOF
+
+fi

diff --git a/sys-boot/systemrescuecd-x86-grub/metadata.xml b/sys-boot/systemrescuecd-x86-grub/metadata.xml
new file mode 100644
index 0000000..608603e
--- /dev/null
+++ b/sys-boot/systemrescuecd-x86-grub/metadata.xml
@@ -0,0 +1,17 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+	<maintainer>
+		<name>Michael Lange</name>
+		<email>gentoobugs@milaw.biz</email>
+		<description>Accepts only mails from Gentoo's Bugzilla</description>
+	</maintainer>
+	<maintainer>
+		<name>Michał Górny</name>
+		<email>mgorny@gentoo.org</email>
+	</maintainer>
+	<longdescription>
+		This package adds menu entries in GRUB for the SystemRescueCD. You can
+		add custom bootoptions for SystemRescueCD in a special config file.
+	</longdescription>
+</pkgmetadata>

diff --git a/sys-boot/systemrescuecd-x86-grub/systemrescuecd-x86-grub-0.1.ebuild b/sys-boot/systemrescuecd-x86-grub/systemrescuecd-x86-grub-0.1.ebuild
new file mode 100644
index 0000000..32f5706
--- /dev/null
+++ b/sys-boot/systemrescuecd-x86-grub/systemrescuecd-x86-grub-0.1.ebuild
@@ -0,0 +1,33 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+DESCRIPTION="Grub menu entries for the .iso image of systemrescuecd-x86"
+HOMEPAGE="http://www.sysresccd.org/"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT=0
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+
+S=${WORKDIR}
+
+RDEPEND="app-admin/systemrescuecd-x86
+	sys-boot/grub"
+
+src_install() {
+	exeinto /etc/grub.d
+	newexe "${FILESDIR}"/systemrescuecd.grub 39_systemrescuecd
+
+	insinto /etc/default
+	newins "${FILESDIR}"/systemrescuecd.default systemrescuecd
+}
+
+pkg_postinst() {
+	elog "To add the menu entries for systemrescuecd to grub, you should now run"
+	elog "	grub-mkconfig -o /boot/grub/grub.cfg"
+	elog "You can set custom bootoptions in /etc/default/systemrescuecd"
+}


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: sys-boot/systemrescuecd-x86-grub/, sys-boot/systemrescuecd-x86-grub/files/
@ 2019-07-05 20:31 Michał Górny
  0 siblings, 0 replies; 2+ messages in thread
From: Michał Górny @ 2019-07-05 20:31 UTC (permalink / raw
  To: gentoo-commits

commit:     9b308815f37859def7fc4cb4466b27c8213496e6
Author:     Reinis Danne <rei4dan <AT> gmail <DOT> com>
AuthorDate: Sat Mar  9 12:39:45 2019 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jul  5 20:31:24 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9b308815

sys-boot/systemrescuecd-x86-grub: Update for 6

SystemRescueCD starting from version 6 is based on Arch and the way it
is booted changed.

Rewrite to:
- Support SystemRescueCD versions 5 and 6.

- Create menu entries for all versions found.

- Add option to copy the newest ISO to /boot if there is enough free
space. Helpful if / becomes unaccessible while /boot is on a separate
partition.

- Add a menu entry for persistent boot (version 6 only). Will put data
on the same disk, where the current ISO resides, in
"/persistent_sysresccd-${version}/x86_64".

Signed-off-by: Reinis Danne <rei4dan <AT> gmail.com>
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 .../files/systemrescuecd.default-2                 |  33 +++++
 .../files/systemrescuecd.grub-2                    | 146 +++++++++++++++++++++
 .../systemrescuecd-x86-grub-0.2.ebuild             |  31 +++++
 3 files changed, 210 insertions(+)

diff --git a/sys-boot/systemrescuecd-x86-grub/files/systemrescuecd.default-2 b/sys-boot/systemrescuecd-x86-grub/files/systemrescuecd.default-2
new file mode 100644
index 00000000000..941622bfc3b
--- /dev/null
+++ b/sys-boot/systemrescuecd-x86-grub/files/systemrescuecd.default-2
@@ -0,0 +1,33 @@
+# Here you can set custom bootoptions for the SystemRescueCD
+#
+# For SystemRescueCD version 6.x:
+#
+# You can add in a space separated list:
+#  setkmap=xx: set keyboard layout for terminal
+#  copytoram: load the ISO fully in memory
+#             requires 2GB of memory to cache the system
+#
+# For SystemRescueCD version 5.x:
+#
+# You can add for example in a space separated list:
+#  setkmap=xx: which defines the keymap to load (example: setkmap=de)
+#  dostartx: load the X.Org graphical environment and launch Xfce
+#  docache: causes the iso file to be fully loaded into memory
+#           this requires 400MB of memory to cache everything
+#  doload=xxx: loads needed kernel modules (example: doload=3c59x,e1000)
+#  noload=xxx: prevents loading kernel modules
+#  nomodeset: do not load the Kernel-Mode-Setting video driver
+#
+# Example:
+#  SRCD_BOOTOPTIONS="setkmap=de docache dostartx"
+#
+# For all available bootoptions see:
+#  http://www.sysresccd.org/Sysresccd-manual-en_Booting_the_CD-ROM
+#
+# Note:
+#  After changing this, you must update your grub configuration file, to take effect
+
+SRCD_BOOTOPTIONS=""
+
+# Copy ISO to /boot if there is enough space
+#COPY_SRCD_TO_BOOT="yes"

diff --git a/sys-boot/systemrescuecd-x86-grub/files/systemrescuecd.grub-2 b/sys-boot/systemrescuecd-x86-grub/files/systemrescuecd.grub-2
new file mode 100755
index 00000000000..26857d23e90
--- /dev/null
+++ b/sys-boot/systemrescuecd-x86-grub/files/systemrescuecd.grub-2
@@ -0,0 +1,146 @@
+#!/bin/sh
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+. /usr/share/grub/grub-mkconfig_lib
+
+if [ -r /etc/default/systemrescuecd ] ; then
+	. /etc/default/systemrescuecd
+fi
+
+COPY_SRCD_TO_BOOT=${COPY_SRCD_TO_BOOT:-no}
+
+bootdir="/boot"
+installdir="/usr/share/systemrescuecd"
+
+isorex='^(/.*/)?systemrescuecd-.*[.]iso$'
+
+# Path of the link to the newest ISO, created by ebuild
+srcd="${installdir}/systemrescuecd-x86-newest.iso"
+
+# Extract ISO version
+isovsed() {
+	sed -E 's|^.*systemrescuecd(-x86)?-||;s|.iso$||'
+}
+
+# Find ISOs in a given directory
+isofind() {
+	find "${1}" -maxdepth 1 -type f -regextype egrep -regex ${isorex}
+}
+
+# Copy ISO to boot partition
+copy_srcd_iso() {
+	if [ ! -f "${bootdir}/"$(basename "${1}") ]; then
+		if [ $(df -k --output=avail "${bootdir}" | tail -1) -gt $(du -k "${1}" | cut -f 1) ]; then
+			cp "${1}" "${bootdir}/"
+		else
+			# Before complaining, check if the installed ISO is actually newer
+			if $(printf '%s\n' $(isofind "${bootdir}" | isovsed | sort -V) $(echo "${1}" | isovsed) | sort -VC); then
+				gettext_printf "Error: Not enough free disk space on ${bootdir}!\n" >&2
+				gettext_printf "Error: Failed to copy the new iso!\n" >&2
+			fi
+		fi
+	fi
+}
+
+write_srcd() {
+	cat <<EOF
+	menuentry "${longname} [${1}] (Copy to RAM${bootops}" --class rescue {
+${grub_string}
+		set gfxpayload=keep
+		set isofile=${path}
+		loopback loop \${isofile}
+		linux (loop)/sysresccd/boot/x86_64/vmlinuz archisobasedir=sysresccd img_loop=\${isofile} img_dev=${diskuuid} copytoram ${SRCD_BOOTOPTIONS}
+		initrd (loop)/sysresccd/boot/intel_ucode.img (loop)/sysresccd/boot/amd_ucode.img (loop)/sysresccd/boot/x86_64/sysresccd.img
+	}
+	menuentry "${longname} [${1}] (Copy to RAM with persistence${bootops}" --class rescue {
+${grub_string}
+		set gfxpayload=keep
+		set isofile=${path}
+		loopback loop \${isofile}
+		linux (loop)/sysresccd/boot/x86_64/vmlinuz archisobasedir=sysresccd img_loop=\${isofile} img_dev=${diskuuid} cow_device=${diskuuid} cow_directory=/persistent_sysresccd-${1}/x86_64 copytoram ${SRCD_BOOTOPTIONS}
+		initrd (loop)/sysresccd/boot/intel_ucode.img (loop)/sysresccd/boot/amd_ucode.img (loop)/sysresccd/boot/x86_64/sysresccd.img
+	}
+	menuentry "${longname} [${1}] (Minimal${bootops}" --class rescue {
+${grub_string}
+		set gfxpayload=keep
+		set isofile=${path}
+		loopback loop \${isofile}
+		linux (loop)/sysresccd/boot/x86_64/vmlinuz archisobasedir=sysresccd img_loop=\${isofile} img_dev=${diskuuid} ${SRCD_BOOTOPTIONS}
+		initrd (loop)/sysresccd/boot/intel_ucode.img (loop)/sysresccd/boot/amd_ucode.img (loop)/sysresccd/boot/x86_64/sysresccd.img
+	}
+EOF
+}
+
+write_srcd_5() {
+	cat <<EOF
+	menuentry "${longname} [${1}] (64bit${bootops}" --class rescue {
+${grub_string}
+		set isofile=${path}
+		loopback loop \${isofile}
+		linux (loop)/isolinux/rescue64 ${SRCD_BOOTOPTIONS} isoloop=\${isofile}
+		initrd (loop)/isolinux/initram.igz
+	}
+	menuentry "${longname} [${1}] (32bit${bootops}" --class rescue {
+${grub_string}
+		set isofile=${path}
+		loopback loop \${isofile}
+		linux (loop)/isolinux/rescue32 ${SRCD_BOOTOPTIONS} isoloop=\${isofile}
+		initrd (loop)/isolinux/initram.igz
+	}
+EOF
+}
+
+# Get v5 ISOs
+# Use: isogrep5 [-v]
+#   -v invert match
+isogrep5() {
+	ls -rv "${isopref}"/systemrescuecd-*.iso | grep ${1} -e '-x86-5'
+}
+
+write_srcd_submenu() {
+	# Start submenu
+	echo "submenu \"${longname}\" --class submenu {"
+
+	# Make sure to reverse-sort by version
+	for iso in $(isogrep5 -v; isogrep5); do
+		path=$(make_system_path_relative_to_its_root "${iso}")
+		gettext_printf "  image: ${iso}\n" >&2
+		if $(printf '%s\n' "6.0.0" $(echo ${iso} | isovsed) | sort -VC); then
+			write_srcd $(echo ${iso} | isovsed)
+		else
+			write_srcd_5 $(echo ${iso} | isovsed)
+		fi
+	done
+
+	# End submenu
+	echo "}"
+}
+
+bootops=")"
+
+if [ ! -z "${SRCD_BOOTOPTIONS}" ]; then
+	bootops=" with bootoptions)"
+fi
+
+if [ "${COPY_SRCD_TO_BOOT}" = yes ]; then
+	srcd=$(realpath "${srcd}")
+	copy_srcd_iso "${srcd}"
+fi
+
+# Build menu entries
+for isopref in ${bootdir} ${installdir}; do
+	# Make sure there are any ISOs
+	ls "${isopref}" | grep -E -q -e "${isorex}" || continue
+
+	diskuuid=/dev/disk/by-uuid/$(${grub_probe} --target=fs_uuid "${isopref}")
+	device=$(${grub_probe} --target=device "${isopref}")
+	label=$(${grub_probe} --target=fs_label "${isopref}")
+	[ "${label}" = "(null)" ] && label=${device}
+	grub_string=$(prepare_grub_to_access_device "${device}" | grub_add_tab | grub_add_tab)
+	longname="SystemRescueCD on ${label}"
+
+	gettext_printf "Found %s on %s\n" "${longname}" "${device}" >&2
+
+	write_srcd_submenu
+done

diff --git a/sys-boot/systemrescuecd-x86-grub/systemrescuecd-x86-grub-0.2.ebuild b/sys-boot/systemrescuecd-x86-grub/systemrescuecd-x86-grub-0.2.ebuild
new file mode 100644
index 00000000000..76daeb7ece1
--- /dev/null
+++ b/sys-boot/systemrescuecd-x86-grub/systemrescuecd-x86-grub-0.2.ebuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="Grub menu entries for the .iso image of systemrescuecd-x86"
+HOMEPAGE="http://www.sysresccd.org/"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT=0
+KEYWORDS="~amd64 ~x86"
+
+S="${WORKDIR}"
+
+RDEPEND="app-admin/systemrescuecd-x86
+	sys-boot/grub"
+
+src_install() {
+	exeinto /etc/grub.d
+	newexe "${FILESDIR}"/systemrescuecd.grub-2 39_systemrescuecd
+
+	insinto /etc/default
+	newins "${FILESDIR}"/systemrescuecd.default-2 systemrescuecd
+}
+
+pkg_postinst() {
+	elog "To add the menu entries for systemrescuecd to grub, you should now run"
+	elog "	grub-mkconfig -o /boot/grub/grub.cfg"
+	elog "You can set custom bootoptions in /etc/default/systemrescuecd"
+}


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2019-07-05 20:31 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-03 12:43 [gentoo-commits] repo/gentoo:master commit in: sys-boot/systemrescuecd-x86-grub/, sys-boot/systemrescuecd-x86-grub/files/ Michał Górny
  -- strict thread matches above, loose matches on Subject: below --
2019-07-05 20:31 Michał Górny

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox