Commit 849c7c5f authored by maximilian attems's avatar maximilian attems

- add backup handling to initramfs-tools

- allow conservative settings for skipping updated initramfs.
- debug output to screen
- parse mbr for lilo
+ small fixes
parent f49c698f
#
# 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
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
......
......@@ -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
......
......@@ -3,3 +3,4 @@ mkinitramfs-kpkg.8
initramfs.conf.5
initramfs-tools.8
update-initramfs.8
update-initramfs.conf.5
......@@ -3,7 +3,7 @@
set -e
case "$1" in
configure)
install)
if [ -n "$2" ]; then
mkdir -p /etc/initramfs-tools/conf.d
......
......@@ -42,4 +42,3 @@ manual_add_modules vga16fb
if [ ${fbcon} = "y" ]; then
force_load fbcon
fi
......@@ -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=}
;;
......
.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>.
......
.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
......
.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
......
......@@ -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
......
......@@ -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()
......
.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
......
.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).
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment