initramfs-tools: sync code with upstream 0.98.5.
This commit is contained in:
parent
9ee7b7cfa6
commit
0e4a1d574e
9 changed files with 263 additions and 199 deletions
|
@ -3,7 +3,7 @@
|
||||||
catenate_cpiogz() {
|
catenate_cpiogz() {
|
||||||
# Sanity check
|
# Sanity check
|
||||||
if [ ! -e "${1}" ]; then
|
if [ ! -e "${1}" ]; then
|
||||||
echo "W:catenate_cpiogz: arg1='${1}' does not exist." >&2
|
echo "W: catenate_cpiogz: arg1='${1}' does not exist." >&2
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ add_modules_from_file()
|
||||||
{
|
{
|
||||||
# Sanity check
|
# Sanity check
|
||||||
if [ ! -e "${1}" ]; then
|
if [ ! -e "${1}" ]; then
|
||||||
echo "W:add_modules_from_file: arg1='${1}' does not exist." >&2
|
echo "W: add_modules_from_file: arg1='${1}' does not exist." >&2
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -73,6 +73,7 @@ manual_add_modules()
|
||||||
if [ ! -e /proc/modules ] ; then
|
if [ ! -e /proc/modules ] ; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if grep -q "^$(basename "${kmod}" .ko)[[:space:]]" \
|
if grep -q "^$(basename "${kmod}" .ko)[[:space:]]" \
|
||||||
/proc/modules \
|
/proc/modules \
|
||||||
|| grep -q "^$(basename "${kmod}" .ko)" \
|
|| grep -q "^$(basename "${kmod}" .ko)" \
|
||||||
|
@ -113,7 +114,7 @@ copy_exec() {
|
||||||
[ -f "${src}" ] || return 1
|
[ -f "${src}" ] || return 1
|
||||||
|
|
||||||
if [ -d "${DESTDIR}/${target}" ]; then
|
if [ -d "${DESTDIR}/${target}" ]; then
|
||||||
# check if already copied
|
# check if already copied
|
||||||
[ -e "${DESTDIR}/$target/${src##*/}" ] && return 0
|
[ -e "${DESTDIR}/$target/${src##*/}" ] && return 0
|
||||||
else
|
else
|
||||||
[ -e "${DESTDIR}/$target" ] && return 0
|
[ -e "${DESTDIR}/$target" ] && return 0
|
||||||
|
@ -126,10 +127,10 @@ copy_exec() {
|
||||||
|
|
||||||
# Copy the dependant libraries
|
# Copy the dependant libraries
|
||||||
for x in $(ldd ${src} 2>/dev/null | sed -e '
|
for x in $(ldd ${src} 2>/dev/null | sed -e '
|
||||||
/\//!d;
|
/\//!d;
|
||||||
/linux-gate/d;
|
/linux-gate/d;
|
||||||
/=>/ {s/.*=>[[:blank:]]*\([^[:blank:]]*\).*/\1/};
|
/=>/ {s/.*=>[[:blank:]]*\([^[:blank:]]*\).*/\1/};
|
||||||
s/[[:blank:]]*\([^[:blank:]]*\) (.*)/\1/' 2>/dev/null); do
|
s/[[:blank:]]*\([^[:blank:]]*\) (.*)/\1/' 2>/dev/null); do
|
||||||
|
|
||||||
# Try to use non-optimised libraries where possible.
|
# Try to use non-optimised libraries where possible.
|
||||||
# We assume that all HWCAP libraries will be in tls,
|
# We assume that all HWCAP libraries will be in tls,
|
||||||
|
@ -147,7 +148,7 @@ copy_exec() {
|
||||||
mkdir -p "${DESTDIR}/${dirname}"
|
mkdir -p "${DESTDIR}/${dirname}"
|
||||||
if [ ! -e "${DESTDIR}/${dirname}/${libname}" ]; then
|
if [ ! -e "${DESTDIR}/${dirname}/${libname}" ]; then
|
||||||
ln -s "${x}" "${DESTDIR}/${dirname}"
|
ln -s "${x}" "${DESTDIR}/${dirname}"
|
||||||
[ "${verbose}" = "y" ] && echo "Adding library ${x}"
|
[ "${verbose}" = "y" ] && echo "Adding library ${x}" || true
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
@ -165,7 +166,7 @@ copy_modules_dir()
|
||||||
if [ "${verbose}" = "y" ]; then
|
if [ "${verbose}" = "y" ]; then
|
||||||
echo "Copying module directory ${dir}"
|
echo "Copying module directory ${dir}"
|
||||||
if [ $# -ge 1 ]; then
|
if [ $# -ge 1 ]; then
|
||||||
echo "(excluding $*)"
|
echo "(excluding $*)"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
while [ $# -ge 1 ]; do
|
while [ $# -ge 1 ]; do
|
||||||
|
@ -219,12 +220,38 @@ dep_add_modules()
|
||||||
|
|
||||||
# require mounted sysfs
|
# require mounted sysfs
|
||||||
if [ ! -d /sys/devices/ ]; then
|
if [ ! -d /sys/devices/ ]; then
|
||||||
echo "mkinitramfs: MODULES dep requires mounted sysfs on /sys"
|
echo "mkinitramfs: MODULES dep requires mounted sysfs on /sys" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# findout root block device + fstype
|
# findout root block device + fstype
|
||||||
eval "$(mount | awk '/\/dev\// {if ($3 == "/") {print "root=" $1 "\nFSTYPE=" $5; exit}}')"
|
eval "$(mount | awk '/\/dev\// {if ($3 == "/") {print "root=" $1 "\nFSTYPE=" $5; exit}}')"
|
||||||
|
|
||||||
|
# On failure fallback to /proc/mounts if readable
|
||||||
|
if [ -z "$root" ] && [ -r /proc/mounts ]; then
|
||||||
|
eval "$(awk '/\/dev\// {if ($2 == "/") {print "root=" $1 "\nFSTYPE=" $5; exit}}' /proc/mounts)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# recheck root device
|
||||||
|
if [ -z "$root" ]; then
|
||||||
|
echo "mkinitramfs: failed to determine root device" >&2
|
||||||
|
echo "mkinitramfs: workaround is MODULES=most" >&2
|
||||||
|
echo "Error please report bug on initramfs-tools" >&2
|
||||||
|
echo "Include the output of 'mount' and 'cat /proc/mounts'" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# handle ubifs and return since ubifs root is a char device but
|
||||||
|
# most of the commands below only work with block devices.
|
||||||
|
if [ "${FSTYPE}" = "ubifs" ]; then
|
||||||
|
manual_add_modules "${FSTYPE}"
|
||||||
|
# add some modules required by ubifs on which it doesn's depend
|
||||||
|
manual_add_modules deflate
|
||||||
|
manual_add_modules zlib
|
||||||
|
manual_add_modules lzo
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "${root}" = "/dev/root" ] ; then
|
if [ "${root}" = "/dev/root" ] ; then
|
||||||
root="/dev/disk/by-uuid/"$(blkid -o value -s UUID ${root}) 2>/dev/null
|
root="/dev/disk/by-uuid/"$(blkid -o value -s UUID ${root}) 2>/dev/null
|
||||||
fi
|
fi
|
||||||
|
@ -239,10 +266,10 @@ dep_add_modules()
|
||||||
if [ "${FSTYPE}" = "unknown" ]; then
|
if [ "${FSTYPE}" = "unknown" ]; then
|
||||||
FSTYPE=$(blkid -o value -s TYPE "${root}")
|
FSTYPE=$(blkid -o value -s TYPE "${root}")
|
||||||
if [ -z "${FSTYPE}" ]; then
|
if [ -z "${FSTYPE}" ]; then
|
||||||
echo "mkinitramfs: unknown fstype on root ${root}"
|
echo "mkinitramfs: unknown fstype on root ${root}" >&2
|
||||||
echo "mkinitramfs: workaround is MODULES=most"
|
echo "mkinitramfs: workaround is MODULES=most" >&2
|
||||||
echo "Error please report bug on initramfs-tools"
|
echo "Error please report bug on initramfs-tools" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -260,8 +287,7 @@ dep_add_modules()
|
||||||
done
|
done
|
||||||
# lvm on md or luks on md
|
# lvm on md or luks on md
|
||||||
if [ "${block#md}" != "${block}" ]; then
|
if [ "${block#md}" != "${block}" ]; then
|
||||||
block=$(awk "/^${block}/{print substr(\$5, 1, 4); exit}" \
|
block=$(sed -ne 's/multipath/[/' -e 's/linear/[/' -e 's/raid[0-9][0-9]*/[/' -e 's/\([hs]d[a-z][a-z]*\)[0-9][0-9]*/\1/g' -e '/^'${block}' :/s/^[^[]*\[ \([^\[]*\)\[.*$/\1/p' </proc/mdstat)
|
||||||
/proc/mdstat)
|
|
||||||
fi
|
fi
|
||||||
# luks or lvm on cciss or ida
|
# luks or lvm on cciss or ida
|
||||||
if [ "${block#cciss}" != "${block}" ] \
|
if [ "${block#cciss}" != "${block}" ] \
|
||||||
|
@ -273,13 +299,15 @@ dep_add_modules()
|
||||||
# md root new naming scheme /dev/md/X
|
# md root new naming scheme /dev/md/X
|
||||||
elif [ "${root#/dev/md/}" != "${root}" ]; then
|
elif [ "${root#/dev/md/}" != "${root}" ]; then
|
||||||
root=${root#/dev/md/}
|
root=${root#/dev/md/}
|
||||||
block=$(awk "/^md${root}/{print substr(\$5, 1, 3); exit}" \
|
# drop the partition number only for sdX and hdX devices
|
||||||
/proc/mdstat)
|
# and keep it for other devices like loop#, dm-# devices
|
||||||
|
block=$(sed -ne 's/multipath/[/' -e 's/linear/[/' -e 's/raid[0-9][0-9]*/[/' -e 's/\([hs]d[a-z][a-z]*\)[0-9][0-9]*/\1/g' -e '/^md'$root' :/s/^[^[]*\[ \([^\[]*\)\[.*$/\1/p' </proc/mdstat)
|
||||||
# md root /dev/mdX
|
# md root /dev/mdX
|
||||||
elif [ "${root#/dev/md}" != "${root}" ]; then
|
elif [ "${root#/dev/md}" != "${root}" ]; then
|
||||||
root=${root#/dev/}
|
root=${root#/dev/md}
|
||||||
block=$(awk "/^${root}/{print substr(\$5, 1, 3); exit}" \
|
# drop the partition number only for sdX and hdX devices
|
||||||
/proc/mdstat)
|
# and keep it for other devices like loop#, dm-# devices
|
||||||
|
block=$(sed -ne 's/multipath/[/' -e 's/linear/[/' -e 's/raid[0-9][0-9]*/[/' -e 's/\([hs]d[a-z][a-z]*\)[0-9][0-9]*/\1/g' -e '/^md'$root' :/s/^[^[]*\[ \([^\[]*\)\[.*$/\1/p' </proc/mdstat)
|
||||||
# cciss device
|
# cciss device
|
||||||
elif [ "${root#/dev/cciss/}" != "${root}" ]; then
|
elif [ "${root#/dev/cciss/}" != "${root}" ]; then
|
||||||
block=${root#/dev/cciss/*}
|
block=${root#/dev/cciss/*}
|
||||||
|
@ -320,9 +348,9 @@ dep_add_modules()
|
||||||
|
|
||||||
# Error out if /sys lack block dev
|
# Error out if /sys lack block dev
|
||||||
if [ -z "${block}" ] || [ ! -e /sys/block/${block} ]; then
|
if [ -z "${block}" ] || [ ! -e /sys/block/${block} ]; then
|
||||||
echo "mkinitramfs: for root ${root} missing ${block} /sys/block/ entry"
|
echo "mkinitramfs: for root ${root} missing ${block} /sys/block/ entry" >&2
|
||||||
echo "mkinitramfs: workaround is MODULES=most"
|
echo "mkinitramfs: workaround is MODULES=most" >&2
|
||||||
echo "mkinitramfs: Error please report the bug"
|
echo "mkinitramfs: Error please report the bug" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -347,6 +375,10 @@ dep_add_modules()
|
||||||
manual_add_modules mmc_block
|
manual_add_modules mmc_block
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -e /sys/bus/virtio ] ; then
|
||||||
|
manual_add_modules virtio_pci
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -e /sys/bus/i2o/devices/ ]; then
|
if [ -e /sys/bus/i2o/devices/ ]; then
|
||||||
force_load i2o_block
|
force_load i2o_block
|
||||||
force_load i2o_config
|
force_load i2o_config
|
||||||
|
@ -372,7 +404,7 @@ auto_add_modules()
|
||||||
case "${1:-}" in
|
case "${1:-}" in
|
||||||
base)
|
base)
|
||||||
for x in ehci-hcd ohci-hcd uhci-hcd usbhid xhci hid-apple \
|
for x in ehci-hcd ohci-hcd uhci-hcd usbhid xhci hid-apple \
|
||||||
hid-microsoft \
|
hid-cherry hid-logitech hid-microsoft \
|
||||||
btrfs ext2 ext3 ext4 ext4dev isofs jfs nfs reiserfs udf xfs \
|
btrfs ext2 ext3 ext4 ext4dev isofs jfs nfs reiserfs udf xfs \
|
||||||
af_packet atkbd i8042 virtio_pci; do
|
af_packet atkbd i8042 virtio_pci; do
|
||||||
manual_add_modules "${x}"
|
manual_add_modules "${x}"
|
||||||
|
@ -406,6 +438,11 @@ auto_add_modules()
|
||||||
block)
|
block)
|
||||||
copy_modules_dir kernel/drivers/block
|
copy_modules_dir kernel/drivers/block
|
||||||
;;
|
;;
|
||||||
|
ubi)
|
||||||
|
for x in deflate zlib lzo ubi ubifs; do
|
||||||
|
manual_add_modules "${x}"
|
||||||
|
done
|
||||||
|
;;
|
||||||
ieee1394)
|
ieee1394)
|
||||||
for x in ohci1394 sbp2; do
|
for x in ohci1394 sbp2; do
|
||||||
manual_add_modules "${x}"
|
manual_add_modules "${x}"
|
||||||
|
@ -455,11 +492,11 @@ usage()
|
||||||
Usage: ${0} [OPTION]... -o outfile [version]
|
Usage: ${0} [OPTION]... -o outfile [version]
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
-c compress Override COMPRESS setting in initramfs.conf.
|
-c compress Override COMPRESS setting in initramfs.conf.
|
||||||
-d confdir Specify an alternative configuration directory.
|
-d confdir Specify an alternative configuration directory.
|
||||||
-k Keep temporary directory used to make the image.
|
-k Keep temporary directory used to make the image.
|
||||||
-o outfile Write to outfile.
|
-o outfile Write to outfile.
|
||||||
-r root Override ROOT setting in initramfs.conf.
|
-r root Override ROOT setting in initramfs.conf.
|
||||||
|
|
||||||
See mkinitramfs(8) for further details.
|
See mkinitramfs(8) for further details.
|
||||||
EOF
|
EOF
|
||||||
|
@ -490,9 +527,9 @@ compare_versions()
|
||||||
xbps-uhelper cmpver $curv $minv
|
xbps-uhelper cmpver $curv $minv
|
||||||
if [ $? -eq 0 ] || [ $? -eq 1 ]; then
|
if [ $? -eq 0 ] || [ $? -eq 1 ]; then
|
||||||
return 0
|
return 0
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# minimal supported kernel version
|
# minimal supported kernel version
|
||||||
|
@ -503,8 +540,7 @@ check_minkver()
|
||||||
curversion="${1:-}"
|
curversion="${1:-}"
|
||||||
initdir="${2:-}"
|
initdir="${2:-}"
|
||||||
if [ -z "${initdir}" ]; then
|
if [ -z "${initdir}" ]; then
|
||||||
ARCH=$(uname -m)
|
case ${ARCH:-} in
|
||||||
case ${ARCH} in
|
|
||||||
ia64|hppa)
|
ia64|hppa)
|
||||||
minversion="2.6.15"
|
minversion="2.6.15"
|
||||||
;;
|
;;
|
||||||
|
@ -521,10 +557,10 @@ check_minkver()
|
||||||
fi
|
fi
|
||||||
set_initlist
|
set_initlist
|
||||||
for cm_x in ${initlist:-}; do
|
for cm_x in ${initlist:-}; do
|
||||||
# sed: keep last line starting with MINKVER=,
|
# sed: keep last line starting with MINKVER=,
|
||||||
# remove MINKVER= and trailing space
|
# remove MINKVER= and trailing space
|
||||||
minver=$(sed '/^MINKVER=/!d;$!d;s/^MINKVER=//;s/[[:space:]]*$//' "${initdir}/${cm_x}")
|
minver=$(sed '/^MINKVER=/!d;$!d;s/^MINKVER=//;s/[[:space:]]*$//' "${initdir}/${cm_x}")
|
||||||
if [ -z "${tmp}" ]; then
|
if [ -z "${tmp:-}" ]; then
|
||||||
continue
|
continue
|
||||||
elif ! compare_versions "${curversion}" "${minver}"; then
|
elif ! compare_versions "${curversion}" "${minver}"; then
|
||||||
echo "W: ${cm_x} hook script requires at least kernel version ${minver}" >&2
|
echo "W: ${cm_x} hook script requires at least kernel version ${minver}" >&2
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
PREREQ=""
|
|
||||||
|
|
||||||
prereqs()
|
|
||||||
{
|
|
||||||
echo "$PREREQ"
|
|
||||||
}
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
# get pre-requisites
|
|
||||||
prereqs)
|
|
||||||
prereqs
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
. /usr/share/initramfs-tools/hook-functions
|
|
||||||
|
|
||||||
copy_exec /sbin/modprobe /sbin
|
|
||||||
copy_exec /sbin/depmod /sbin
|
|
||||||
copy_exec /sbin/rmmod /sbin
|
|
||||||
|
|
||||||
if [ -d /etc/modprobe.d ]; then
|
|
||||||
mkdir -p "${DESTDIR}/etc/modprobe.d"
|
|
||||||
cp -a /etc/modprobe.d/* "${DESTDIR}/etc/modprobe.d/"
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
|
|
@ -33,12 +33,13 @@ if [ -e /etc/udev/udev.conf ]; then
|
||||||
. /etc/udev/udev.conf
|
. /etc/udev/udev.conf
|
||||||
fi
|
fi
|
||||||
if ! mount -t devtmpfs -o mode=0755 devtmpfs /dev; then
|
if ! mount -t devtmpfs -o mode=0755 devtmpfs /dev; then
|
||||||
|
echo "W: devtmpfs not available, falling back to tmpfs for /dev"
|
||||||
mount -t tmpfs -o size=$tmpfs_size,mode=0755 udev /dev
|
mount -t tmpfs -o size=$tmpfs_size,mode=0755 udev /dev
|
||||||
[ -e /dev/console ] || mknod -m 0600 /dev/console c 5 1
|
[ -e /dev/console ] || mknod -m 0600 /dev/console c 5 1
|
||||||
[ -e /dev/null ] || mknod /dev/null c 1 3
|
[ -e /dev/null ] || mknod /dev/null c 1 3
|
||||||
fi
|
fi
|
||||||
mkdir /dev/pts
|
mkdir /dev/pts
|
||||||
mount -t devpts -o noexec,nosuid,gid=5,mode=0620 none /dev/pts || true
|
mount -t devpts -o noexec,nosuid,gid=5,mode=0620 devpts /dev/pts || true
|
||||||
> /dev/.initramfs-tools
|
> /dev/.initramfs-tools
|
||||||
mkdir /dev/.initramfs
|
mkdir /dev/.initramfs
|
||||||
|
|
||||||
|
@ -57,6 +58,7 @@ export ROOTFSTYPE=
|
||||||
export IP=
|
export IP=
|
||||||
export BOOT=
|
export BOOT=
|
||||||
export BOOTIF=
|
export BOOTIF=
|
||||||
|
export UBIMTD=
|
||||||
export break=
|
export break=
|
||||||
export init=/sbin/init
|
export init=/sbin/init
|
||||||
export quiet=n
|
export quiet=n
|
||||||
|
@ -141,6 +143,9 @@ for x in $(cat /proc/cmdline); do
|
||||||
boot=*)
|
boot=*)
|
||||||
BOOT=${x#boot=}
|
BOOT=${x#boot=}
|
||||||
;;
|
;;
|
||||||
|
ubi.mtd=*)
|
||||||
|
UBIMTD=${x#ubi.mtd=}
|
||||||
|
;;
|
||||||
resume=*)
|
resume=*)
|
||||||
RESUME="${x#resume=}"
|
RESUME="${x#resume=}"
|
||||||
;;
|
;;
|
||||||
|
@ -221,12 +226,12 @@ run_scripts /scripts/init-premount
|
||||||
[ "$quiet" != "y" ] && log_end_msg
|
[ "$quiet" != "y" ] && log_end_msg
|
||||||
|
|
||||||
maybe_break mount
|
maybe_break mount
|
||||||
[ "$quiet" != "y" ] && log_begin_msg "Mounting root file system"
|
log_begin_msg "Mounting root file system"
|
||||||
. /scripts/${BOOT}
|
. /scripts/${BOOT}
|
||||||
parse_numeric ${ROOT}
|
parse_numeric ${ROOT}
|
||||||
maybe_break mountroot
|
maybe_break mountroot
|
||||||
mountroot
|
mountroot
|
||||||
[ "$quiet" != "y" ] && log_end_msg
|
log_end_msg
|
||||||
|
|
||||||
maybe_break bottom
|
maybe_break bottom
|
||||||
[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/init-bottom"
|
[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/init-bottom"
|
||||||
|
@ -237,25 +242,51 @@ run_scripts /scripts/init-bottom
|
||||||
mount -n -o move /sys ${rootmnt}/sys
|
mount -n -o move /sys ${rootmnt}/sys
|
||||||
mount -n -o move /proc ${rootmnt}/proc
|
mount -n -o move /proc ${rootmnt}/proc
|
||||||
|
|
||||||
|
validate_init() {
|
||||||
|
checktarget="${1}"
|
||||||
|
|
||||||
|
# Work around absolute symlinks
|
||||||
|
if [ -d "${rootmnt}" ] && [ -h "${rootmnt}${checktarget}" ]; then
|
||||||
|
case $(readlink "${rootmnt}${checktarget}") in /*)
|
||||||
|
checktarget="$(chroot ${rootmnt} readlink ${checktarget})"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make sure the specified init can be executed
|
||||||
|
if [ ! -x "${rootmnt}${checktarget}" ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Upstart uses /etc/init as configuration directory :-/
|
||||||
|
if [ -d "${rootmnt}${checktarget}" ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Check init bootarg
|
# Check init bootarg
|
||||||
if [ -n "${init}" ] && [ ! -x "${rootmnt}${init}" ]; then
|
if [ -n "${init}" ]; then
|
||||||
echo "Target filesystem doesn't have ${init}."
|
if ! validate_init "$init"; then
|
||||||
init=
|
echo "Target filesystem doesn't have requested ${init}."
|
||||||
|
init=
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Search for valid init
|
# Common case: /sbin/init is present
|
||||||
if [ -z "${init}" ] ; then
|
if [ ! -x "${rootmnt}/sbin/init" ]; then
|
||||||
for init in /sbin/init /etc/init /bin/init /bin/sh; do
|
# ... if it's not available search for valid init
|
||||||
if [ ! -x "${rootmnt}${init}" ]; then
|
if [ -z "${init}" ] ; then
|
||||||
continue
|
for inittest in /sbin/init /etc/init /bin/init /bin/sh; do
|
||||||
fi
|
if validate_init "${inittest}"; then
|
||||||
break
|
init="$inittest"
|
||||||
done
|
break
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
# No init on rootmount
|
fi
|
||||||
if [ ! -x "${rootmnt}${init}" ]; then
|
# No init on rootmount
|
||||||
panic "No init found. Try passing init= bootarg."
|
if ! validate_init "${init}" ; then
|
||||||
|
panic "No init found. Try passing init= bootarg."
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
maybe_break init
|
maybe_break init
|
||||||
|
@ -272,6 +303,7 @@ unset ROOT
|
||||||
unset IP
|
unset IP
|
||||||
unset BOOT
|
unset BOOT
|
||||||
unset BOOTIF
|
unset BOOTIF
|
||||||
|
unset UBIMTD
|
||||||
unset blacklist
|
unset blacklist
|
||||||
unset break
|
unset break
|
||||||
unset noresume
|
unset noresume
|
||||||
|
@ -282,5 +314,5 @@ unset resume
|
||||||
unset resume_offset
|
unset resume_offset
|
||||||
|
|
||||||
# Chain to real filesystem
|
# Chain to real filesystem
|
||||||
exec switch_root ${rootmnt} ${init} "$@"
|
exec switch_root ${rootmnt} ${init} "$@" <${rootmnt}/dev/console >${rootmnt}/dev/console
|
||||||
panic "Could not execute run-init."
|
panic "Could not execute run-init."
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
.TH INITRAMFS-TOOLS 8 "2010/04/10" "Linux" "mkinitramfs script overview"
|
.TH INITRAMFS-TOOLS 8 "2010/09/23" "Linux" "mkinitramfs script overview"
|
||||||
|
|
||||||
.SH NAME
|
.SH NAME
|
||||||
initramfs-tools \- an introduction to writing scripts for mkinitramfs
|
initramfs-tools \- an introduction to writing scripts for mkinitramfs
|
||||||
|
@ -9,38 +9,28 @@ will be used during different phases of execution. Each of these will be
|
||||||
discussed separately below with the help of an imaginary tool which performs a
|
discussed separately below with the help of an imaginary tool which performs a
|
||||||
frobnication of a lvm partition prior to mounting the root partition.
|
frobnication of a lvm partition prior to mounting the root partition.
|
||||||
|
|
||||||
Valid boot and hook scripts names consist solely of alphabetics, numerics
|
.SH Kernel Command Line
|
||||||
and underscores. Other scripts are discarded.
|
The root filesystem used by the kernel is specified by the boot loader as
|
||||||
|
always. The traditional \fBroot=/dev/sda1\fR style device specification is
|
||||||
|
allowed. If a label is used, as in \fBroot=LABEL=rootPart\fR the initrd will
|
||||||
|
search all available devices for a filesystem with the appropriate label, and
|
||||||
|
mount that device as the root filesystem. \fBroot=UUID=uuidnumber\fR will
|
||||||
|
mount the partition with that UUID as the root filesystem.
|
||||||
|
|
||||||
.SS Hook scripts
|
.SS Standard
|
||||||
These are used when an initramfs image is created and not included in the
|
|
||||||
image itself. They can however cause files to be included in the image.
|
|
||||||
|
|
||||||
.SS Boot scripts
|
|
||||||
These are included in the initramfs image and normally executed during
|
|
||||||
kernel boot in the early user-space before the root partition has been
|
|
||||||
mounted.
|
|
||||||
|
|
||||||
.SH INIT SCRIPT
|
|
||||||
The script which is executed first and is in charge of running all other
|
|
||||||
scripts can be found in /usr/share/initramfs-tools/init. It takes a number of
|
|
||||||
arguments which influence the boot procedure:
|
|
||||||
|
|
||||||
.SS Boot options
|
|
||||||
|
|
||||||
The init and root are usually passed by the boot loader for local boot.
|
|
||||||
The other parameters are optional.
|
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\fB\fI init
|
\fB\fI init= "<path to real init>"
|
||||||
the binary to hand over execution to on the root fs after the initramfs scripts are done.
|
the binary to hand over execution to on the root fs after the initramfs scripts are done.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\fB\fI root
|
\fB\fI root= "<path to blockdevice>"
|
||||||
the device node to mount as the root file system.
|
the device node to mount as the root file system.
|
||||||
The recommended usage is to specify the UUID as followed "root=UUID=xxx".
|
The recommended usage is to specify the UUID as followed "root=UUID=xxx".
|
||||||
As normal device names are not stable and may change depending on the
|
|
||||||
boot order.
|
.TP
|
||||||
|
\fB\fI rootfstype
|
||||||
|
set the root file system type.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\fB\fI rootdelay
|
\fB\fI rootdelay
|
||||||
|
@ -51,10 +41,6 @@ The default is 180 seconds.
|
||||||
\fB\fI rootflags
|
\fB\fI rootflags
|
||||||
set the file system mount option string.
|
set the file system mount option string.
|
||||||
|
|
||||||
.TP
|
|
||||||
\fB\fI rootfstype
|
|
||||||
set the root file system type.
|
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\fB\fI nfsroot
|
\fB\fI nfsroot
|
||||||
can be either "auto" to try to get the relevant information from DHCP or a
|
can be either "auto" to try to get the relevant information from DHCP or a
|
||||||
|
@ -66,12 +52,12 @@ Use root=/dev/nfs for NFS to kick to in. NFSOPTS can be looked up in
|
||||||
\fB\fI ip
|
\fB\fI ip
|
||||||
tells how to configure the ip address. Allows to specify an different
|
tells how to configure the ip address. Allows to specify an different
|
||||||
NFS server than the DHCP server. See Documentation/filesystems/nfsroot.txt
|
NFS server than the DHCP server. See Documentation/filesystems/nfsroot.txt
|
||||||
in any recent Linux source for details. Optional paramater for NFS root.
|
in any recent Linux source for details. Optional parameter for NFS root.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\fB\fI BOOTIF
|
\fB\fI BOOTIF
|
||||||
is a mac adress in pxelinux format with leading "01-" and "-" as separations.
|
is a mac address in pxelinux format with leading "01-" and "-" as separations.
|
||||||
pxelinux passes mac adress of network card used to PXE boot on with this
|
pxelinux passes mac address of network card used to PXE boot on with this
|
||||||
bootarg.
|
bootarg.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
|
@ -106,6 +92,7 @@ mounts the rootfs read-write.
|
||||||
disables load of specific modules.
|
disables load of specific modules.
|
||||||
Use blacklist=module1,module2,module3 bootparameter.
|
Use blacklist=module1,module2,module3 bootparameter.
|
||||||
|
|
||||||
|
.SS Debug
|
||||||
.TP
|
.TP
|
||||||
\fB\fI panic
|
\fB\fI panic
|
||||||
sets an timeout on panic.
|
sets an timeout on panic.
|
||||||
|
@ -136,6 +123,21 @@ loads generic IDE/ATA chipset support on boot.
|
||||||
|
|
||||||
.SH HOOK SCRIPTS
|
.SH HOOK SCRIPTS
|
||||||
|
|
||||||
|
Valid boot and hook scripts names consist solely of alphabetics, numerics,
|
||||||
|
dashes and underscores. Other scripts are discarded.
|
||||||
|
|
||||||
|
.SS Hook scripts
|
||||||
|
These are used when an initramfs image is created and not included in the
|
||||||
|
image itself. They can however cause files to be included in the image.
|
||||||
|
Hook scripts are executed under errexit. Thus a hook script can abort the
|
||||||
|
mkinitramfs build on possible errors (exitcode != 0).
|
||||||
|
|
||||||
|
.SS Boot scripts
|
||||||
|
These are included in the initramfs image and normally executed during
|
||||||
|
kernel boot in the early user-space before the root partition has been
|
||||||
|
mounted.
|
||||||
|
|
||||||
|
|
||||||
Hooks can be found in two places: /usr/share/initramfs-tools/hooks and
|
Hooks can be found in two places: /usr/share/initramfs-tools/hooks and
|
||||||
/etc/initramfs-tools/hooks. They are executed during generation of the
|
/etc/initramfs-tools/hooks. They are executed during generation of the
|
||||||
initramfs-image and are responsible for including all the necessary components
|
initramfs-image and are responsible for including all the necessary components
|
||||||
|
@ -259,7 +261,7 @@ sets if a keymap needs to be added to initramfs.
|
||||||
.TP
|
.TP
|
||||||
\fB\fI MODULES
|
\fB\fI MODULES
|
||||||
specifies which kind of modules should land on initramfs.
|
specifies which kind of modules should land on initramfs.
|
||||||
This setting shouldn't be overriden by hook script, but can guide them
|
This setting shouldn't be overridden by hook script, but can guide them
|
||||||
on how much they need to include on initramfs.
|
on how much they need to include on initramfs.
|
||||||
|
|
||||||
|
|
||||||
|
@ -372,14 +374,14 @@ contains the following subdirectories.
|
||||||
\fB\fI
|
\fB\fI
|
||||||
init-top
|
init-top
|
||||||
the scripts in this directory are the first scripts to be executed after sysfs
|
the scripts in this directory are the first scripts to be executed after sysfs
|
||||||
and procfs have been mounted and /dev/console and /dev/null have been created.
|
and procfs have been mounted.
|
||||||
No other device files are present yet.
|
It also runs the udev hook for populating the /dev tree (udev will keep
|
||||||
|
running until init-bottom).
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\fB\fI
|
\fB\fI
|
||||||
init-premount
|
init-premount
|
||||||
runs the udev hooks for populating the /dev tree (udev will keep running until
|
happens after modules specified by hooks and /etc/initramfs-tools/modules
|
||||||
init-bottom) after modules specified by hooks and /etc/initramfs-tools/modules
|
|
||||||
have been loaded.
|
have been loaded.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
|
@ -399,14 +401,14 @@ been mounted.
|
||||||
\fB\fI
|
\fB\fI
|
||||||
local-bottom OR nfs-bottom
|
local-bottom OR nfs-bottom
|
||||||
are run after the rootfs has been mounted (local) or the NFS root share has
|
are run after the rootfs has been mounted (local) or the NFS root share has
|
||||||
been mounted. udev is stopped.
|
been mounted.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\fB\fI
|
\fB\fI
|
||||||
init-bottom
|
init-bottom
|
||||||
are the last scripts to be executed before procfs and sysfs are moved to the
|
are the last scripts to be executed before procfs and sysfs are moved to the
|
||||||
real rootfs and execution is turned over to the init binary which should now be
|
real rootfs and execution is turned over to the init binary which should now be
|
||||||
found in the mounted rootfs.
|
found in the mounted rootfs. udev is stopped.
|
||||||
|
|
||||||
.SS Boot parameters
|
.SS Boot parameters
|
||||||
.TP
|
.TP
|
||||||
|
@ -496,12 +498,12 @@ init sets several variables for the boot scripts environment.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
\fB\fI ROOT
|
\fB\fI ROOT
|
||||||
correponds to the root boot option.
|
corresponds to the root boot option.
|
||||||
Advanced boot scripts like cryptsetup or live-initramfs need to play tricks.
|
Advanced boot scripts like cryptsetup or live-initramfs need to play tricks.
|
||||||
Otherwise keep it alone.
|
Otherwise keep it alone.
|
||||||
.TP
|
.TP
|
||||||
\fB\fI ROOTDELAY, ROOTFLAGS, ROOTFSTYPE, IP
|
\fB\fI ROOTDELAY, ROOTFLAGS, ROOTFSTYPE, IP
|
||||||
correponds to the rootdelay, rootflags, rootfstype or ip boot option.
|
corresponds to the rootdelay, rootflags, rootfstype or ip boot option.
|
||||||
.TP
|
.TP
|
||||||
\fB\fI DPKG_ARCH
|
\fB\fI DPKG_ARCH
|
||||||
allows arch specific boot actions.
|
allows arch specific boot actions.
|
||||||
|
@ -521,10 +523,10 @@ passes the path to init(8) usually /sbin/init.
|
||||||
.TP
|
.TP
|
||||||
\fB\fI readonly
|
\fB\fI readonly
|
||||||
is the default for mounting the root corresponds to the ro bootarg.
|
is the default for mounting the root corresponds to the ro bootarg.
|
||||||
Overriden by rw bootarg.
|
Overridden by rw bootarg.
|
||||||
.TP
|
.TP
|
||||||
\fB\fI rootmnt
|
\fB\fI rootmnt
|
||||||
is the path where root gets mounted usualy /root.
|
is the path where root gets mounted usually /root.
|
||||||
.TP
|
.TP
|
||||||
\fB\fI debug
|
\fB\fI debug
|
||||||
indicates that a debug log is captured for further investigation.
|
indicates that a debug log is captured for further investigation.
|
||||||
|
|
|
@ -7,12 +7,11 @@ export PATH='/usr/bin:/sbin:/bin'
|
||||||
keep="n"
|
keep="n"
|
||||||
CONFDIR="/etc/initramfs-tools"
|
CONFDIR="/etc/initramfs-tools"
|
||||||
verbose="n"
|
verbose="n"
|
||||||
errors_to="2>/dev/null"
|
|
||||||
|
|
||||||
OPTIONS=`getopt -o c:d:ko:r:v -n "$0" -- "$@"`
|
OPTIONS=`getopt -o c:d:ko:r:v -n "$0" -- "$@"`
|
||||||
|
|
||||||
# Check for non-GNU getopt
|
# Check for non-GNU getopt
|
||||||
if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
|
if [ $? != 0 ] ; then echo "W: non-GNU getopt" >&2 ; exit 1 ; fi
|
||||||
|
|
||||||
eval set -- "$OPTIONS"
|
eval set -- "$OPTIONS"
|
||||||
|
|
||||||
|
@ -68,7 +67,7 @@ for i in /usr/share/initramfs-tools/conf.d/* ${CONFDIR}/conf.d/*; do
|
||||||
| grep '^[[:alnum:]][[:alnum:]\._-]*$' | grep -v '\.dpkg-.*$')";
|
| grep '^[[:alnum:]][[:alnum:]\._-]*$' | grep -v '\.dpkg-.*$')";
|
||||||
done
|
done
|
||||||
# FIXME: deprecated those settings on mkinitramfs run
|
# FIXME: deprecated those settings on mkinitramfs run
|
||||||
# these conf dirs are for boot scripts and land on initramfs
|
# these conf dirs are for boot scripts and land on initramfs
|
||||||
for i in ${EXTRA_CONF}; do
|
for i in ${EXTRA_CONF}; do
|
||||||
if [ -e ${CONFDIR}/conf.d/${i} ]; then
|
if [ -e ${CONFDIR}/conf.d/${i} ]; then
|
||||||
. ${CONFDIR}/conf.d/${i}
|
. ${CONFDIR}/conf.d/${i}
|
||||||
|
@ -132,25 +131,23 @@ else
|
||||||
COMPRESS=${compress}
|
COMPRESS=${compress}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! command -v ${compress} >/dev/null 2>&1; then
|
if ! command -v "${compress}" >/dev/null 2>&1; then
|
||||||
compress=gzip
|
compress=gzip
|
||||||
|
COMPRESS=gzip
|
||||||
[ "${verbose}" = y ] && \
|
[ "${verbose}" = y ] && \
|
||||||
echo "No ${COMPRESS} in ${PATH}, using gzip"
|
echo "No ${COMPRESS} in ${PATH}, using gzip"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -r /boot/config-${version} ]; then
|
if ! `grep -q -i ^config_rd_${COMPRESS%p} /boot/config-${version}` ; then
|
||||||
if ! `grep -q -i config_rd_${COMPRESS}=y /boot/config-${version}` ; then
|
compress=gzip
|
||||||
compress=gzip
|
[ "${verbose}" = y ] && \
|
||||||
[ "${verbose}" = y ] && \
|
echo "linux-2.6 misses ${COMPRESS} support, using gzip"
|
||||||
echo "linux-2.6 misses ${COMPRESS} support, using gzip"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Always use max compression.
|
[ "${compress}" = lzop ] && compress="lzop -9"
|
||||||
compress="${compress} -9"
|
|
||||||
|
|
||||||
if [ -d "${outfile}" ]; then
|
if [ -d "${outfile}" ]; then
|
||||||
echo "${outfile} is a directory"
|
echo "${outfile} is a directory" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -166,6 +163,16 @@ fi
|
||||||
|
|
||||||
DESTDIR="$(mktemp -d ${TMPDIR:-/tmp}/mkinitramfs_XXXXXX)" || exit 1
|
DESTDIR="$(mktemp -d ${TMPDIR:-/tmp}/mkinitramfs_XXXXXX)" || exit 1
|
||||||
chmod 755 "${DESTDIR}"
|
chmod 755 "${DESTDIR}"
|
||||||
|
|
||||||
|
# do not execute cache_run_scripts() if mounted with noexec
|
||||||
|
NOEXEC=""
|
||||||
|
if [ -r /etc/mtab ]; then
|
||||||
|
fs=$(df $DESTDIR | tail -1 | awk '{print $6}')
|
||||||
|
if [ -n "$fs" ] && mount | grep -q "on $fs .*noexec" ; then
|
||||||
|
NOEXEC=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
__TMPCPIOGZ="$(mktemp ${TMPDIR:-/tmp}/mkinitramfs-OL_XXXXXX)" || exit 1
|
__TMPCPIOGZ="$(mktemp ${TMPDIR:-/tmp}/mkinitramfs-OL_XXXXXX)" || exit 1
|
||||||
|
|
||||||
DPKG_ARCH=`uname -m`
|
DPKG_ARCH=`uname -m`
|
||||||
|
@ -191,7 +198,7 @@ done
|
||||||
# Copy the modules.order file in
|
# Copy the modules.order file in
|
||||||
if [ -f "${MODULESDIR}/modules.order" ]; then
|
if [ -f "${MODULESDIR}/modules.order" ]; then
|
||||||
cp -p "${MODULESDIR}/modules.order" \
|
cp -p "${MODULESDIR}/modules.order" \
|
||||||
"${DESTDIR}${MODULESDIR}/modules.order"
|
"${DESTDIR}${MODULESDIR}/modules.order"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# MODULES=list case. Always honour.
|
# MODULES=list case. Always honour.
|
||||||
|
@ -217,26 +224,27 @@ list)
|
||||||
# nothing to add
|
# nothing to add
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "mkinitramfs: Warning unsupported MODULES setting: ${MODULES}."
|
echo "W: mkinitramfs: unsupported MODULES setting: ${MODULES}."
|
||||||
echo "mkinitramfs: Falling back to MODULES=most."
|
echo "W: mkinitramfs: Falling back to MODULES=most."
|
||||||
auto_add_modules
|
auto_add_modules
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Have to do each file, because cpio --dereference doesn't recurse down
|
# Have to do each file, because cpio --dereference doesn't recurse down
|
||||||
# symlinks.
|
# symlinks.
|
||||||
|
|
||||||
cp -p /usr/share/initramfs-tools/init ${DESTDIR}/init
|
cp -p /usr/share/initramfs-tools/init ${DESTDIR}/init
|
||||||
|
|
||||||
# add existant boot scripts
|
# add existant boot scripts
|
||||||
for b in $(cd /usr/share/initramfs-tools/scripts/ && find . \
|
for b in $(cd /usr/share/initramfs-tools/scripts/ && find . \
|
||||||
-regextype posix-extended -regex '.*/[[:alnum:]_.]+$' -type f); do
|
-regextype posix-extended -regex '.*/[[:alnum:]\._-]+$' -type f); do
|
||||||
[ -d "${DESTDIR}/scripts/$(dirname "${b}")" ] \
|
[ -d "${DESTDIR}/scripts/$(dirname "${b}")" ] \
|
||||||
|| mkdir -p "${DESTDIR}/scripts/$(dirname "${b}")"
|
|| mkdir -p "${DESTDIR}/scripts/$(dirname "${b}")"
|
||||||
cp -p "/usr/share/initramfs-tools/scripts/${b}" \
|
cp -p "/usr/share/initramfs-tools/scripts/${b}" \
|
||||||
"${DESTDIR}/scripts/$(dirname "${b}")/"
|
"${DESTDIR}/scripts/$(dirname "${b}")/"
|
||||||
done
|
done
|
||||||
for b in $(cd "${CONFDIR}/scripts" && find . \
|
for b in $(cd "${CONFDIR}/scripts" && find . \
|
||||||
-regextype posix-extended -regex '.*/[[:alnum:]_.]+$' -type f); do
|
-regextype posix-extended -regex '.*/[[:alnum:]\._-]+$' -type f); do
|
||||||
[ -d "${DESTDIR}/scripts/$(dirname "${b}")" ] \
|
[ -d "${DESTDIR}/scripts/$(dirname "${b}")" ] \
|
||||||
|| mkdir -p "${DESTDIR}/scripts/$(dirname "${b}")"
|
|| mkdir -p "${DESTDIR}/scripts/$(dirname "${b}")"
|
||||||
cp -p "${CONFDIR}/scripts/${b}" "${DESTDIR}/scripts/$(dirname "${b}")/"
|
cp -p "${CONFDIR}/scripts/${b}" "${DESTDIR}/scripts/$(dirname "${b}")/"
|
||||||
|
@ -257,16 +265,29 @@ if [ -n "${ROOT:-}" ]; then
|
||||||
echo "ROOT=${ROOT}" > ${DESTDIR}/conf/conf.d/root
|
echo "ROOT=${ROOT}" > ${DESTDIR}/conf/conf.d/root
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if ! command -v ldd >/dev/null 2>&1 ; then
|
||||||
|
echo "WARNING: no ldd around - install libc-bin" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# module-init-tools
|
||||||
|
copy_exec /sbin/depmod /sbin
|
||||||
|
copy_exec /sbin/modprobe /sbin
|
||||||
|
copy_exec /sbin/rmmod /sbin
|
||||||
|
mkdir -p "${DESTDIR}/etc/modprobe.d"
|
||||||
|
cp -a /etc/modprobe.d/* "${DESTDIR}/etc/modprobe.d/"
|
||||||
|
|
||||||
run_scripts /usr/share/initramfs-tools/hooks
|
run_scripts /usr/share/initramfs-tools/hooks
|
||||||
run_scripts "${CONFDIR}"/hooks
|
run_scripts "${CONFDIR}"/hooks
|
||||||
|
|
||||||
# cache boot run order
|
# cache boot run order
|
||||||
for b in $(cd "${DESTDIR}/scripts" && find . -mindepth 1 -type d); do
|
if [ -n "$NOEXEC" ]; then
|
||||||
cache_run_scripts "${DESTDIR}" "/scripts/${b#./}"
|
echo "W: TMPDIR is mounted noexec, will not cache run scripts."
|
||||||
done
|
else
|
||||||
|
for b in $(cd "${DESTDIR}/scripts" && find . -mindepth 1 -type d); do
|
||||||
# Copy in tsort(1).
|
cache_run_scripts "${DESTDIR}" "/scripts/${b#./}"
|
||||||
copy_exec /bin/tsort /bin
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
# generate module deps
|
# generate module deps
|
||||||
depmod -a -b "${DESTDIR}" ${version}
|
depmod -a -b "${DESTDIR}" ${version}
|
||||||
|
@ -279,11 +300,8 @@ fi
|
||||||
|
|
||||||
# Remove any looping or broken symbolic links, since they break cpio.
|
# Remove any looping or broken symbolic links, since they break cpio.
|
||||||
[ "${verbose}" = y ] && xargs_verbose="-t"
|
[ "${verbose}" = y ] && xargs_verbose="-t"
|
||||||
find "${DESTDIR}" -type l -printf '%p %Y\n' | sed -n 's/ [LN]$//p' \
|
(cd "${DESTDIR}" && find . -type l -printf '%p %Y\n' | sed -n 's/ [LN]$//p' \
|
||||||
| xargs ${xargs_verbose:-} -rL1 rm -f
|
| xargs ${xargs_verbose:-} -rL1 rm -f)
|
||||||
|
|
||||||
# Copy resume from klibc
|
|
||||||
copy_exec /bin/resume /bin
|
|
||||||
|
|
||||||
[ "${verbose}" = y ] && echo "Building cpio ${outfile} initramfs"
|
[ "${verbose}" = y ] && echo "Building cpio ${outfile} initramfs"
|
||||||
(
|
(
|
||||||
|
@ -291,19 +309,28 @@ copy_exec /bin/resume /bin
|
||||||
# cd "${DESTDIR}" && find . | cpio --quiet --dereference -o -H newc | gzip >"${outfile}" || exit 1
|
# cd "${DESTDIR}" && find . | cpio --quiet --dereference -o -H newc | gzip >"${outfile}" || exit 1
|
||||||
exec 3>&1
|
exec 3>&1
|
||||||
eval `
|
eval `
|
||||||
# http://cfaj.freeshell.org/shell/cus-faq-2.html
|
# http://cfaj.freeshell.org/shell/cus-faq-2.html
|
||||||
exec 4>&1 >&3 3>&-
|
exec 4>&1 >&3 3>&-
|
||||||
cd "${DESTDIR}"
|
cd "${DESTDIR}"
|
||||||
{
|
{
|
||||||
find . 4>&-; echo "ec1=$?;" >&4
|
find . 4>&-; echo "ec1=$?;" >&4
|
||||||
} | {
|
} | {
|
||||||
cpio --quiet --dereference -o -H newc 4>&-; echo "ec2=$?;" >&4
|
cpio --quiet --dereference -o -H newc 4>&-; echo "ec2=$?;" >&4
|
||||||
} | ${compress} >"${outfile}"
|
} | ${compress} >"${outfile}"
|
||||||
echo "ec3=$?;" >&4
|
echo "ec3=$?;" >&4
|
||||||
`
|
`
|
||||||
if [ "$ec1" -ne 0 ]; then exit "$ec1"; fi
|
if [ "$ec1" -ne 0 ]; then
|
||||||
if [ "$ec2" -ne 0 ]; then exit "$ec2"; fi
|
echo "E: mkinitramfs failure find $ec1 cpio $ec2 $compress $ec3"
|
||||||
if [ "$ec3" -ne 0 ]; then exit "$ec3"; fi
|
exit "$ec1"
|
||||||
|
fi
|
||||||
|
if [ "$ec2" -ne 0 ]; then
|
||||||
|
echo "E: mkinitramfs failure cpio $ec2 $compress $ec3"
|
||||||
|
exit "$ec2"
|
||||||
|
fi
|
||||||
|
if [ "$ec3" -ne 0 ]; then
|
||||||
|
echo "E: mkinitramfs failure $compress $ec3"
|
||||||
|
exit "$ec3"
|
||||||
|
fi
|
||||||
) || exit 1
|
) || exit 1
|
||||||
|
|
||||||
if [ -s "${__TMPCPIOGZ}" ]; then
|
if [ -s "${__TMPCPIOGZ}" ]; then
|
||||||
|
|
|
@ -8,6 +8,13 @@ pre_mountroot()
|
||||||
|
|
||||||
wait_for_udev 10
|
wait_for_udev 10
|
||||||
|
|
||||||
|
# Load ubi with the correct MTD partition and return since fstype
|
||||||
|
# doesn't work with a char device like ubi.
|
||||||
|
if [ -n "$UBIMTD" ]; then
|
||||||
|
modprobe ubi mtd=$UBIMTD
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
# Don't wait for a root device that doesn't have a corresponding
|
# Don't wait for a root device that doesn't have a corresponding
|
||||||
# device in /dev (ie, mtd0)
|
# device in /dev (ie, mtd0)
|
||||||
if [ "${ROOT#/dev}" = "${ROOT}" ]; then
|
if [ "${ROOT#/dev}" = "${ROOT}" ]; then
|
||||||
|
@ -19,12 +26,9 @@ pre_mountroot()
|
||||||
if [ ! -e "${ROOT}" ] || ! $(get_fstype "${ROOT}" >/dev/null); then
|
if [ ! -e "${ROOT}" ] || ! $(get_fstype "${ROOT}" >/dev/null); then
|
||||||
log_begin_msg "Waiting for root file system"
|
log_begin_msg "Waiting for root file system"
|
||||||
|
|
||||||
# Default delay is 180s
|
# Default delay is 30s
|
||||||
if [ -z "${ROOTDELAY}" ]; then
|
slumber=${ROOTDELAY:-30}
|
||||||
slumber=180
|
|
||||||
else
|
|
||||||
slumber=${ROOTDELAY}
|
|
||||||
fi
|
|
||||||
if [ -x /sbin/usplash_write ]; then
|
if [ -x /sbin/usplash_write ]; then
|
||||||
/sbin/usplash_write "TIMEOUT ${slumber}" || true
|
/sbin/usplash_write "TIMEOUT ${slumber}" || true
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -62,21 +62,16 @@ mountroot()
|
||||||
wait_for_udev 10
|
wait_for_udev 10
|
||||||
|
|
||||||
# Default delay is around 180s
|
# Default delay is around 180s
|
||||||
# FIXME: add usplash_write info
|
delay=${ROOTDELAY:-180}
|
||||||
if [ -z "${ROOTDELAY}" ]; then
|
|
||||||
delay=180
|
|
||||||
else
|
|
||||||
delay=${ROOTDELAY}
|
|
||||||
fi
|
|
||||||
|
|
||||||
# loop until nfsmount succeds
|
# loop until nfsmount succeeds
|
||||||
|
do_nfsmount
|
||||||
while [ ${retry_nr} -lt ${delay} ] && [ ! -e ${rootmnt}${init} ]; do
|
while [ ${retry_nr} -lt ${delay} ] && [ ! -e ${rootmnt}${init} ]; do
|
||||||
[ ${retry_nr} -gt 0 ] && \
|
|
||||||
[ "$quiet" != "y" ] && log_begin_msg "Retrying nfs mount"
|
[ "$quiet" != "y" ] && log_begin_msg "Retrying nfs mount"
|
||||||
|
/bin/sleep 1
|
||||||
do_nfsmount
|
do_nfsmount
|
||||||
retry_nr=$(( ${retry_nr} + 1 ))
|
retry_nr=$(( ${retry_nr} + 1 ))
|
||||||
[ ! -e ${rootmnt}${init} ] && /bin/sleep 1
|
[ "$quiet" != "y" ] && log_end_msg
|
||||||
[ ${retry_nr} -gt 0 ] && [ "$quiet" != "y" ] && log_end_msg
|
|
||||||
done
|
done
|
||||||
|
|
||||||
[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/nfs-bottom"
|
[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/nfs-bottom"
|
||||||
|
|
|
@ -131,7 +131,7 @@ backup_booted_initramfs()
|
||||||
# nuke generated copy
|
# nuke generated copy
|
||||||
remove_initramfs_bak()
|
remove_initramfs_bak()
|
||||||
{
|
{
|
||||||
[ -z "${initramfs_bak}" ] && return 0
|
[ -z "${initramfs_bak:-}" ] && return 0
|
||||||
rm -f "${initramfs_bak}"
|
rm -f "${initramfs_bak}"
|
||||||
verbose "Removing ${initramfs_bak}"
|
verbose "Removing ${initramfs_bak}"
|
||||||
}
|
}
|
||||||
|
@ -155,7 +155,7 @@ generate_initramfs()
|
||||||
# minversion wasn't met, exit 0
|
# minversion wasn't met, exit 0
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
echo "update-initramfs: failed for ${initramfs}"
|
echo "update-initramfs: failed for ${initramfs}" >&2
|
||||||
exit $mkinitramfs_return
|
exit $mkinitramfs_return
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -181,7 +181,7 @@ run_bootloader()
|
||||||
echo "update-initramfs: please run 'grub-install ${dev}'."
|
echo "update-initramfs: please run 'grub-install ${dev}'."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if command -v grub-mkconfig 2>&1 >/dev/null; then
|
if command -v grub-mkconfig >/dev/null 2>&1; then
|
||||||
grub-mkconfig -o /boot/grub/grub.cfg
|
grub-mkconfig -o /boot/grub/grub.cfg
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -423,7 +423,7 @@ while getopts "k:cudyvtb:h?BV" flag; do
|
||||||
b)
|
b)
|
||||||
BOOTDIR="${OPTARG}"
|
BOOTDIR="${OPTARG}"
|
||||||
if [ ! -d "${BOOTDIR}" ]; then
|
if [ ! -d "${BOOTDIR}" ]; then
|
||||||
echo "Error: ${BOOTDIR} is not a directory."
|
echo "Error: ${BOOTDIR} is not a directory." >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
@ -440,7 +440,7 @@ done
|
||||||
shift $((${OPTIND} - 1))
|
shift $((${OPTIND} - 1))
|
||||||
|
|
||||||
if [ $# -ne 0 ]; then
|
if [ $# -ne 0 ]; then
|
||||||
echo "Invalid argument for option -k."
|
echo "Invalid argument for option -k." >&2
|
||||||
usage
|
usage
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -469,11 +469,8 @@ if [ "${version}" = "all" ] \
|
||||||
OPTS="${OPTS} -y"
|
OPTS="${OPTS} -y"
|
||||||
fi
|
fi
|
||||||
for u_version in ${version_list}; do
|
for u_version in ${version_list}; do
|
||||||
# Don't stop if one version doesn't work.
|
|
||||||
set +e
|
|
||||||
verbose "Execute: ${0} -${mode} -k \"${u_version}\" ${OPTS}"
|
verbose "Execute: ${0} -${mode} -k \"${u_version}\" ${OPTS}"
|
||||||
"${0}" -${mode} -k "${u_version}" ${OPTS}
|
"${0}" -${mode} -k "${u_version}" ${OPTS}
|
||||||
set -e
|
|
||||||
done
|
done
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Template file for 'initramfs-tools'
|
# Template file for 'initramfs-tools'
|
||||||
pkgname=initramfs-tools
|
pkgname=initramfs-tools
|
||||||
version=0.99.3.debian0.95.1
|
version=0.99.4.debian0.98.5
|
||||||
build_style=custom-install
|
build_style=custom-install
|
||||||
short_desc="Tools for generating an initramfs"
|
short_desc="Tools for generating an initramfs"
|
||||||
maintainer="Juan RP <xtraeme@gmail.com>"
|
maintainer="Juan RP <xtraeme@gmail.com>"
|
||||||
|
@ -22,7 +22,6 @@ conf_files="
|
||||||
/etc/$pkgname/update-initramfs.conf
|
/etc/$pkgname/update-initramfs.conf
|
||||||
/etc/$pkgname/modules"
|
/etc/$pkgname/modules"
|
||||||
|
|
||||||
Add_dependency full glibc
|
|
||||||
Add_dependency full cpio
|
Add_dependency full cpio
|
||||||
Add_dependency full util-linux-ng
|
Add_dependency full util-linux-ng
|
||||||
Add_dependency full gawk
|
Add_dependency full gawk
|
||||||
|
@ -97,5 +96,6 @@ do_install()
|
||||||
# Scripts
|
# Scripts
|
||||||
install -m 755 $FILESDIR/mkinitramfs $DESTDIR/usr/sbin
|
install -m 755 $FILESDIR/mkinitramfs $DESTDIR/usr/sbin
|
||||||
install -m 755 $FILESDIR/update-initramfs $DESTDIR/usr/sbin
|
install -m 755 $FILESDIR/update-initramfs $DESTDIR/usr/sbin
|
||||||
|
install -m 755 $FILESDIR/lsinitramfs $DESTDIR/usr/sbin
|
||||||
sed -i -e "s|@VERSION@|${version}|g" $DESTDIR/usr/sbin/update-initramfs
|
sed -i -e "s|@VERSION@|${version}|g" $DESTDIR/usr/sbin/update-initramfs
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue