summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormaximilian attems <maks@debian.org>2006-10-13 08:52:12 +0200
committermaximilian attems <maks@debian.org>2006-10-13 08:52:12 +0200
commit849c7c5f29f3689a4879204c23a6e89e2e6c0d7e (patch)
treeb2fd92b491127545ac2ff47a33dd96760cd4cf3f
parentf49c698f4838b09794ebdd129e7eee14de2aad54 (diff)
downloadinitramfs-tools-849c7c5f29f3689a4879204c23a6e89e2e6c0d7e.tar.gz
initramfs-tools-849c7c5f29f3689a4879204c23a6e89e2e6c0d7e.zip
- add backup handling to initramfs-tools
- allow conservative settings for skipping updated initramfs. - debug output to screen - parse mbr for lilo + small fixes
-rw-r--r--conf/update-initramfs.conf11
-rw-r--r--debian/changelog38
-rw-r--r--debian/initramfs-tools.install1
-rw-r--r--debian/initramfs-tools.manpages1
-rw-r--r--debian/initramfs-tools.preinst2
-rwxr-xr-xhooks/kernelextras1
-rwxr-xr-xinit4
-rw-r--r--initramfs-tools.89
-rw-r--r--initramfs.conf.56
-rw-r--r--mkinitramfs.86
-rwxr-xr-xscripts/init-top/framebuffer69
-rwxr-xr-xupdate-initramfs78
-rw-r--r--update-initramfs.86
-rw-r--r--update-initramfs.conf.526
14 files changed, 228 insertions, 30 deletions
diff --git a/conf/update-initramfs.conf b/conf/update-initramfs.conf
new file mode 100644
index 0000000..36c3dde
--- /dev/null
+++ b/conf/update-initramfs.conf
@@ -0,0 +1,11 @@
+#
+# Configuration file for update-initramfs(8)
+#
+
+#
+# update_initramfs [ yes | no ]
+#
+# Default is yes
+# If set to no disables any update to initramfs beside kernel upgrade
+
+update_initramfs=yes
diff --git a/debian/changelog b/debian/changelog
index 2990625..1eaf2f9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,41 @@
+initramfs-tools (0.83) unstable; urgency=high
+
+ Release "Ois was du verzapfst is a koida Kaffee"
+
+ * update-initramfs: Keep an initramfs backup while we are running. Do also
+ keep the booted initramfs as .bak in /boot. First helps on power cut.
+ Second is a good conservative approach and demanded feature.
+ Thanks Thiemo Nagel <thiemonagel@gmx.de> for report. (closes: 387780)
+
+ * init: When debug is invoked with an additional arg, write output to
+ console. Thanks Christian Aichinger <Greek0@gmx.net> for the idea.
+ Should ease remote debugging.
+
+ * initramfs-tools.8: Document new debug=<whatever> feature.
+
+ * initramfs-tools.preinstall: Check for right arg. (closes: 391619)
+
+ * update-initramfs: Try to guess harder if lilo might need to be run
+ if grub is also around. On old installs we get _zero_ information from
+ /etc/kernel.img. Parse mbr for lilo signature. (closes: 385949)
+ Thanks to Michael Prokop <mika@grml.org> for finetuning.
+
+ * scripts/init-top/framebuffer: Parse video bootarg and refactor script.
+ This add support for custom framebuffer modules. (closes: 386441)
+ Thanks for the patch by David Härdeman <david@2gen.com>.
+
+ * update.conf: Allow to make "update-initramfs -u" an noop. Useful for
+ conservative settings of a remote server. (closes: 362064) urgency high.
+ Thanks Manoj Srivastava <srivasta@debian.org> for the tough testing.
+
+ * update-initramfs.conf.5: Document the new update_initramfs variable.
+
+ * update-initramfs: Kope with stupid mv of grub to /usr/sbin.
+
+ * manpages: Get a banana and mark myself as author.
+
+ -- maximilian attems <maks@sternwelten.at> Fri, 13 Oct 2006 08:12:40 +0200
+
initramfs-tools (0.82) unstable; urgency=high
* Merge 0.69ubuntu15, plus 0.69ubuntu14 and 0.69ubuntu11 changelog entries
diff --git a/debian/initramfs-tools.install b/debian/initramfs-tools.install
index 5514c2e..5b3d8a6 100644
--- a/debian/initramfs-tools.install
+++ b/debian/initramfs-tools.install
@@ -3,6 +3,7 @@ mkinitramfs-kpkg usr/sbin
init usr/share/initramfs-tools
scripts usr/share/initramfs-tools
conf/initramfs.conf etc/initramfs-tools
+conf/update-initramfs.conf etc/initramfs-tools
hooks usr/share/initramfs-tools
hook-functions usr/share/initramfs-tools
conf/modules usr/share/initramfs-tools
diff --git a/debian/initramfs-tools.manpages b/debian/initramfs-tools.manpages
index f127e99..0c88045 100644
--- a/debian/initramfs-tools.manpages
+++ b/debian/initramfs-tools.manpages
@@ -3,3 +3,4 @@ mkinitramfs-kpkg.8
initramfs.conf.5
initramfs-tools.8
update-initramfs.8
+update-initramfs.conf.5
diff --git a/debian/initramfs-tools.preinst b/debian/initramfs-tools.preinst
index 7b02612..fc1fd06 100644
--- a/debian/initramfs-tools.preinst
+++ b/debian/initramfs-tools.preinst
@@ -3,7 +3,7 @@
set -e
case "$1" in
- configure)
+ install)
if [ -n "$2" ]; then
mkdir -p /etc/initramfs-tools/conf.d
diff --git a/hooks/kernelextras b/hooks/kernelextras
index 6bbd6b9..714e9a9 100755
--- a/hooks/kernelextras
+++ b/hooks/kernelextras
@@ -42,4 +42,3 @@ manual_add_modules vga16fb
if [ ${fbcon} = "y" ]; then
force_load fbcon
fi
-
diff --git a/init b/init
index 85f6291..fbe32be 100755
--- a/init
+++ b/init
@@ -110,6 +110,10 @@ for x in $(cat /proc/cmdline); do
exec >/tmp/initramfs.debug 2>&1
set -x
;;
+ debug=*)
+ debug=y
+ set -x
+ ;;
break=*)
break=${x#break=}
;;
diff --git a/initramfs-tools.8 b/initramfs-tools.8
index 7af09e1..4ce53d3 100644
--- a/initramfs-tools.8
+++ b/initramfs-tools.8
@@ -1,4 +1,4 @@
-.TH INITRAMFS-TOOLS 8 "Date: 2006/08/19" "" "mkinitramfs script overview"
+.TH INITRAMFS-TOOLS 8 "Date: 2006/10/11" "" "mkinitramfs script overview"
.SH NAME
initramfs-tools \- an introduction to writing scripts for mkinitramfs
@@ -96,7 +96,9 @@ sets an timeout on panic. Currently only zero value supported.
.TP
\fB \fI debug
-generates lots of output to /tmp/initramfs.debug.
+generates lots of output. It writes a log to /tmp/initramfs.debug.
+Instead when invoked with an arbitrary argument output is written to console.
+Use for example "debug=vc".
.TP
\fB \fI break
@@ -443,7 +445,8 @@ cpio -i -d -H newc --no-absolute-filenames
.SH AUTHOR
-The initramfs-tools are written by Jeff Bailey <jbailey@ubuntu.com>.
+The initramfs-tools are written by Maximilian Attems <maks@sternwelten.at>,
+Jeff Bailey <jbailey@raspberryginger.com> and numerous others.
.PP
This manual was written by David H\[:a]rdeman <david@2gen.com>,
updated by Maximilian Attems <maks@sternwelten.at>.
diff --git a/initramfs.conf.5 b/initramfs.conf.5
index 89e9f4b..ca47a02 100644
--- a/initramfs.conf.5
+++ b/initramfs.conf.5
@@ -1,4 +1,4 @@
-.TH INITRAMFS.CONF 5 "$Date: 2006/09/02 $" "" "initramfs.conf manual"
+.TH INITRAMFS.CONF 5 "$Date: 2006/10/12 $" "" "initramfs.conf manual"
.SH NAME
initramfs.conf \- configuration file for mkinitramfs
@@ -58,8 +58,8 @@ Otherwise you need to specify \fIHOST:MOUNT\fP.
.SH AUTHOR
-The initramfs-tools are written by Jeff Bailey <jbailey@raspberryginger.com>.
-This manual is maintained by Maximilian Attems <maks@sternwelten.at>.
+The initramfs-tools are written by Maximilian Attems <maks@sternwelten.at>,
+Jeff Bailey <jbailey@raspberryginger.com> and numerous others.
Loosely based on mkinitrd.conf by Herbert Xu.
.SH SEE ALSO
diff --git a/mkinitramfs.8 b/mkinitramfs.8
index 9041ba6..23e719f 100644
--- a/mkinitramfs.8
+++ b/mkinitramfs.8
@@ -1,4 +1,4 @@
-.TH MKINITRAMFS 8 "$Date: 2006/08/12 $" "" "mkinitramfs manual"
+.TH MKINITRAMFS 8 "$Date: 2006/10/12 $" "" "mkinitramfs manual"
.SH NAME
mkinitramfs \- generate an initramfs image
@@ -95,8 +95,8 @@ it to be loaded by ACPI.
.SH AUTHOR
-The initramfs-tools are written by Jeff Bailey <jbailey@ubuntu.com>.
-This manual is maintained by Maximilian Attems <maks@sternwelten.at>.
+The initramfs-tools are written by Maximilian Attems <maks@sternwelten.at>,
+Jeff Bailey <jbailey@raspberryginger.com> and numerous others.
.SH SEE ALSO
.BR
diff --git a/scripts/init-top/framebuffer b/scripts/init-top/framebuffer
index 4f0ab62..bafbe19 100755
--- a/scripts/init-top/framebuffer
+++ b/scripts/init-top/framebuffer
@@ -13,27 +13,78 @@ prereqs)
;;
esac
+
+# The options part of the kernel "video=" argument (i.e. everyting
+# after "video=<fbdriver>:") has very inconsistent rules.
+#
+# Generally the following applies:
+# 1) options are comma-separated
+# 2) options can be in either of these three forms:
+# <arg>=<value>, <arg>:<value>, <boolean-arg>.
+# 3) the "mode" option has the form <xres>x<yres>[M][R][-<bpp>][@<refresh>][i][m]
+# and may or may not start with "mode="
+#
+# When the options are used with modules, they need to be space-separated
+# and the following conversions are needed:
+# <arg>:<value> -> <arg>=<value>
+# <boolean-arg> -> <boolean-arg>=1
+# <modevalue> -> mode=<modevalue>
+parse_video_opts()
+{
+ local OPTS="$1"
+ local IFS=","
+
+ # Must be a line like video=<fbdriver>:<opt1>,[opt2]...
+ if [ "$OPTS" = "${OPTS%%:*}" ]; then
+ return
+ fi
+ OPTS="${OPTS#*:}"
+ for opt in $OPTS; do
+ # Already in the "<arg>=<value>" form
+ if [ "$opt" != "${opt#*=}" ]; then
+ echo -n "$opt "
+ # Presumably a modevalue without the "mode=" prefix
+ elif [ "$opt" != "${opt#[[:digit:]]*x[[:digit:]]}"; then
+ echo -n "mode=$opt "
+ # Presumably a boolean
+ else
+ echo -n "$opt=1 "
+ fi
+ done
+}
+
+FB=""
+OPTS=""
+
SPLASH=false;
VESA=false;
for x in $(cat /proc/cmdline); do
case $x in
splash*)
- SPLASH=true;
+ FB="vga16fb";
+ OPTS="";
;;
vga=*)
- VESA=true;
+ FB="vesafb";
+ OPTS="";
;;
+ video=*)
+ FB=${x#*=}
+ FB="${FB%%:*}"
+ OPTS="$(parse_video_opts "$TMP")"
esac
done
-if [ $SPLASH = "true" -o $VESA = "true" ]; then
- modprobe -q fbcon
- if [ $VESA = "true" ]; then
- modprobe -q vesafb
- else
- modprobe -q vga16fb
- fi
+if [ -n "$FB" ]; then
+ modprobe -q $FB $OPTS
+fi
+
+if [ -e /proc/fb ]; then
+ while read fbno desc; do
+ mknod /dev/fb$fbno 29 $fbno
+ done < /proc/fb
+
mknod /dev/fb0 c 29 0
for i in 0 1 2 3 4 5 6 7 8; do
mknod /dev/tty$i c 4 $i
diff --git a/update-initramfs b/update-initramfs
index 45d4631..4995553 100755
--- a/update-initramfs
+++ b/update-initramfs
@@ -2,10 +2,13 @@
STATEDIR=/var/lib/initramfs-tools
BOOTDIR=/boot
+CONF=/etc/initramfs-tools/update-initramfs.conf
KPKGCONF=/etc/kernel-img.conf
set -e
+[ -r ${CONF} ] && . ${CONF}
+
usage()
{
if [ -n "${1}" ]; then
@@ -62,6 +65,46 @@ set_initramfs()
initramfs="${BOOTDIR}/initrd.img-${version}"
}
+
+# backup initramfs while running
+backup_initramfs()
+{
+ [ ! -r "${initramfs}" ] && return 0
+ initramfs_bak="${initramfs}.dpkg-bak"
+ [ -r "${initramfs_bak}" ] && rm -f "${initramfs_bak}"
+ mv -f "${initramfs}" "${initramfs_bak}"
+ verbose "Keeping ${initramfs_bak}"
+}
+
+# keep booted initramfs
+backup_booted_initramfs()
+{
+ # chroot
+ [ ! -r /proc/uptime ] && rm -f "${initramfs_bak}" && return 0
+
+ # no backup yet
+ initramfs_bak="${initramfs}.dpkg-bak"
+ if [ ! -r "${initramfs}.bak" ]; then
+ mv -f ${initramfs_bak} "${initramfs}.bak"
+ verbose "Backup ${initramfs}.bak"
+ return 0
+ fi
+
+
+ # keep booted initramfs
+ uptime_days=$(awk '{printf "%d", $1 / 3600 / 24}' /proc/uptime)
+ if [ -n "$uptime_days" ]; then
+ boot_initramfs=$(find "${initramfs_bak}" -mtime +${uptime_days})
+ fi
+ if [ -n "${boot_initramfs}" ]; then
+ mv -f "${initramfs_bak}" "${initramfs}.bak"
+ verbose "Backup ${initramfs}.bak"
+ return 0
+ fi
+ verbose "Removing current backup ${initramfs_bak}"
+ rm -f ${initramfs_bak}
+}
+
generate_initramfs()
{
echo "update-initramfs: Generating ${initramfs}"
@@ -91,11 +134,27 @@ run_lilo()
fi
}
+# check if lilo is on mbr
+mbr_check()
+{
+ boot=$(awk -F = '/^boot=/{ print $2}' /etc/lilo.conf)
+ [ -z "${boot}" ] && return 0
+ [ ! -r "${boot}" ] && return 0
+ dd if="${boot}" bs=512 skip=0 count=1 2> /dev/null | grep -q LILO
+ [ $? -eq 0 ] && run_lilo && return 0
+ echo
+ echo "WARNING: grub and lilo installed."
+ echo "If you use grub as bootloader everything is fine."
+ echo "If you use lilo as bootloader you must run lilo!"
+ echo
+}
+
# only run lilo if no grub is around
# or if "do_bootloader = yes" is set
run_bootloader()
{
- if [ -x /sbin/grub ] || [ -e /boot/grub/menu.lst ]; then
+ if [ -x /sbin/grub ] || [ -e /boot/grub/menu.lst ] \
+ || [ -x /usr/sbin/grub ]; then
if [ -e /etc/lilo.conf ] && [ -x /sbin/lilo ]; then
[ -r "${KPKGCONF}" ] && \
do_b=$(awk '/bootloader/{print $3}' "${KPKGCONF}")
@@ -103,13 +162,10 @@ run_bootloader()
|| [ "${do_b}" = "YES" ]; then
run_lilo
return 0
+ else
+ mbr_check
+ return 0
fi
-
- echo
- echo "WARNING: grub and lilo installed."
- echo "If you use grub as bootloader everything is fine."
- echo "If you use lilo as bootloader you must run lilo!"
- echo
fi
return 0
fi
@@ -228,6 +284,11 @@ create()
update()
{
+ if [ "${update_initramfs}" = "no" ]; then
+ echo "update-initramfs: Not updating initramfs."
+ exit 0
+ fi
+
if [ -z "${version}" ]; then
set_linked_version
fi
@@ -251,10 +312,13 @@ update()
altered_check
+ backup_initramfs
+
generate_initramfs
run_bootloader
+ backup_booted_initramfs
}
delete()
diff --git a/update-initramfs.8 b/update-initramfs.8
index 871e9a5..a562349 100644
--- a/update-initramfs.8
+++ b/update-initramfs.8
@@ -1,4 +1,4 @@
-.TH UPDATE-INITRAMFS 8 "$Date: 2006/09/06" $" "" "update\-initramfs manual"
+.TH UPDATE-INITRAMFS 8 "$Date: 2006/10/12" $" "" "update\-initramfs manual"
.SH NAME
update\-initramfs \- generate an initramfs image
@@ -85,8 +85,8 @@ Create the initramfs for a specific kernel:
.B update\-initramfs -c -k 2.6.18-1-686
.SH AUTHOR
-The initramfs-tools are written by Jeff Bailey <jbailey@ubuntu.com>.
-This manual is maintained by Maximilian Attems <maks@sternwelten.at>.
+The initramfs-tools are written by Maximilian Attems <maks@sternwelten.at>,
+Jeff Bailey <jbailey@raspberryginger.com> and numerous others.
.SH SEE ALSO
.BR
diff --git a/update-initramfs.conf.5 b/update-initramfs.conf.5
new file mode 100644
index 0000000..551f6c9
--- /dev/null
+++ b/update-initramfs.conf.5
@@ -0,0 +1,26 @@
+.TH UPDATE-INITRAMFS.CONF 5 "$Date: 2006/10/12 $" "" "update-initramfs.conf manual"
+
+.SH NAME
+update-initramfs.conf \- configuration file for update-initramfs
+
+.SH DESCRIPTION
+The configuration file allows to disable the update action from
+.B update-initramfs.
+
+.SH GENERAL VARIABLES
+.TP
+\fB update_initramfs
+Default is \fIyes\fP for running the latest initramfs-tools hooks in the
+newest Linux image.
+It is possible to set it to \fIno\fP for remote servers or boxes where
+conservative manners needs to be applied. This disables
+the \fBupdate_initramfs -u\fP call.
+
+.SH AUTHOR
+The initramfs-tools are written by Maximilian Attems <maks@sternwelten.at>,
+Jeff Bailey <jbailey@raspberryginger.com> and numerous others.
+.SH SEE ALSO
+.BR
+.IR initramfs-tools (8),
+.IR mkinitramfs (8),
+.IR update-initramfs (8).