Compare commits
79 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
de50e9c002 | ||
![]() |
868f935e23 | ||
![]() |
4ba662ff90 | ||
![]() |
dc7085ceeb | ||
![]() |
9444bf6161 | ||
![]() |
06ca27cdf5 | ||
![]() |
dd82da4e27 | ||
![]() |
190047f161 | ||
![]() |
748867d177 | ||
![]() |
b806625d41 | ||
![]() |
dba2055979 | ||
![]() |
aa23dcd8ae | ||
![]() |
5bbbfeaf19 | ||
![]() |
9b6c5fd7c7 | ||
![]() |
904a76376f | ||
![]() |
52814c0ee3 | ||
![]() |
d124904f2b | ||
![]() |
7fd850d58e | ||
![]() |
71bb2ecd79 | ||
![]() |
6e0348f33b | ||
![]() |
27458b10ff | ||
![]() |
bf27e473cb | ||
![]() |
549442cc2a | ||
![]() |
98836432c1 | ||
![]() |
d988dc30df | ||
![]() |
c5f8b69ad7 | ||
![]() |
2beee35d5e | ||
![]() |
1ae8b8aa02 | ||
![]() |
8f092d0dda | ||
![]() |
d624f60682 | ||
![]() |
5decf6d813 | ||
![]() |
1a1c80febe | ||
![]() |
7b3ff4e055 | ||
![]() |
56b58c0a94 | ||
![]() |
ad2565c8ff | ||
![]() |
9f3d191fce | ||
![]() |
f17c5fa573 | ||
![]() |
99369bea1c | ||
![]() |
45ef8eb723 | ||
![]() |
bc6eae15ab | ||
![]() |
475f3a8128 | ||
![]() |
6b1e7a6ca4 | ||
![]() |
bbaa0d5917 | ||
![]() |
3c4bfd685a | ||
![]() |
9dde7a66b5 | ||
![]() |
34b56de12a | ||
![]() |
951cedf8cb | ||
![]() |
0baf97618d | ||
![]() |
8642792c3e | ||
![]() |
5bbfd48475 | ||
![]() |
c33488feb1 | ||
![]() |
18e61d3d41 | ||
![]() |
fbf717086e | ||
![]() |
5a6a98f875 | ||
![]() |
35857f556c | ||
![]() |
a6865e6897 | ||
![]() |
55068924f7 | ||
![]() |
16addb86fc | ||
![]() |
5f2c30d9bc | ||
![]() |
c00f8e05a6 | ||
![]() |
85231e1ff3 | ||
![]() |
88396c383c | ||
![]() |
df03141dbc | ||
![]() |
bf9cdc472c | ||
![]() |
02b5c8e3a3 | ||
![]() |
f734347ae7 | ||
![]() |
4aca0017e8 | ||
![]() |
1e057b352a | ||
![]() |
431b86c8e9 | ||
![]() |
b093aa2dc7 | ||
![]() |
32bd2fbb4c | ||
![]() |
1d84d6940e | ||
![]() |
87ae968810 | ||
![]() |
f13deabd22 | ||
![]() |
0d59a84b53 | ||
![]() |
68cb510f18 | ||
![]() |
5e60145449 | ||
![]() |
282e0583b0 | ||
![]() |
32d115f385 |
@@ -26,7 +26,7 @@ case "$1" in
|
||||
ret=$?
|
||||
;;
|
||||
remove)
|
||||
rm -f "$3"/initrd
|
||||
rm -f -- "$3"/initrd
|
||||
ret=$?
|
||||
;;
|
||||
esac
|
||||
|
20
AUTHORS
20
AUTHORS
@@ -1,9 +1,9 @@
|
||||
Harald Hoyer <harald@redhat.com>
|
||||
Victor Lowther <victor.lowther@gmail.com>
|
||||
Amadeusz Żołnowski <aidecoe@aidecoe.name>
|
||||
Will Woods <wwoods@redhat.com>
|
||||
Philippe Seewer <philippe.seewer@bfh.ch>
|
||||
Warren Togami <wtogami@redhat.com>
|
||||
Will Woods <wwoods@redhat.com>
|
||||
Jeremy Katz <katzj@redhat.com>
|
||||
David Dillow <dave@thedillows.org>
|
||||
Dave Young <dyoung@redhat.com>
|
||||
@@ -11,15 +11,18 @@ Michal Soltys <soltys@ziu.info>
|
||||
Amerigo Wang <amwang@redhat.com>
|
||||
Colin Guthrie <colin@mageia.org>
|
||||
Andrey Borzenkov <arvidjaar@gmail.com>
|
||||
Peter Jones <pjones@redhat.com>
|
||||
Andreas Thienemann <andreas@bawue.net>
|
||||
Hans de Goede <hdegoede@redhat.com>
|
||||
Peter Jones <pjones@redhat.com>
|
||||
John Reiser <jreiser@bitwagon.com>
|
||||
Luca Berra <bluca@vodka.it>
|
||||
Daniel Drake <dsd@laptop.org>
|
||||
Dan Horák <dhorak@redhat.com>
|
||||
WANG Chao <chaowang@redhat.com>
|
||||
Leho Kraav <leho@kraav.com>
|
||||
Baoquan He <bhe@redhat.com>
|
||||
Brian C. Lane <bcl@redhat.com>
|
||||
Kamil Rytarowski <n54@gmx.com>
|
||||
Marc Grimme <grimme@atix.de>
|
||||
Chao Wang <chaowang@redhat.com>
|
||||
Frederic Crozat <fcrozat@suse.com>
|
||||
@@ -28,7 +31,9 @@ Milan Broz <mbroz@redhat.com>
|
||||
Roberto Sassu <roberto.sassu@polito.it>
|
||||
Anton Blanchard <anton@samba.org>
|
||||
Bill Nottingham <notting@redhat.com>
|
||||
Colin Walters <walters@verbum.org>
|
||||
David Cantrell <dcantrell@redhat.com>
|
||||
Dennis Gilmore <dennis@ausil.us>
|
||||
Jon Ander Hernandez <jonan.h@gmail.com>
|
||||
Juan RP <xtraeme@gmail.com>
|
||||
Lance Albertson <lance@osuosl.org>
|
||||
@@ -36,41 +41,42 @@ Marian Ganisin <mganisin@redhat.com>
|
||||
Michael Ploujnikov <plouj@somanetworks.com>
|
||||
Peter Rajnoha <prajnoha@redhat.com>
|
||||
Radek Vykydal <rvykydal@redhat.com>
|
||||
WANG Chao <chaowang@redhat.com>
|
||||
Wim Muskee <wimmuskee@gmail.com>
|
||||
Alan Jenkins <alan-jenkins@tuffmail.co.uk>
|
||||
Alan Pevec <apevec@redhat.com>
|
||||
Baoquan He <bhe@redhat.com>
|
||||
Colin Walters <walters@verbum.org>
|
||||
Dennis Gilmore <dennis@ausil.us>
|
||||
Frederick Grose <fgrose@sugarlabs.org>
|
||||
Ian Dall <ian@beware.dropbear.id.au>
|
||||
James Buren <ryuo@frugalware.org>
|
||||
Joey Boggs <jboggs@redhat.com>
|
||||
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
||||
Mike Snitzer <snitzer@redhat.com>
|
||||
Przemysław Rudy <prudy1@o2.pl>
|
||||
Stefan Reimer <it@startux.de>
|
||||
Thomas Lange <lange@informatik.uni-koeln.de>
|
||||
Vivek Goyal <vgoyal@redhat.com>
|
||||
Vladislav Bogdanov <bubble@hoster-ok.com>
|
||||
Adam Williamson <awilliam@redhat.com>
|
||||
Alexander Todorov <atodorov@redhat.com>
|
||||
Andy Lutomirski <luto@mit.edu>
|
||||
Anssi Hannula <anssi@mageia.org>
|
||||
Brandon Philips <brandon@ifup.co>
|
||||
Canek Peláez Valdés <caneko@gmail.com>
|
||||
Chris Leech <cleech@redhat.com>
|
||||
Christian Heinz <christian.ch.heinz@gmail.com>
|
||||
Cong Wang <amwang@redhat.com>
|
||||
Dave Jones <davej@redhat.com>
|
||||
Dave Young <dave@redhat.com>
|
||||
Dennis Schridde <devurandom@gmx.net>
|
||||
Duane Griffin <duaneg@dghda.com>
|
||||
Glen Gray <slaine@slaine.org>
|
||||
Hermann Gausterer <git-dracut-2012@mrq1.org>
|
||||
James Laska <jlaska@redhat.com>
|
||||
James Lee <jlee@thestaticvoid.com>
|
||||
Jan Stodola <jstodola@redhat.com>
|
||||
Jiri Pirko <jiri@resnulli.us>
|
||||
Joe Lawrence <Joe.Lawrence@stratus.com>
|
||||
Kevin Yung <Kevin.Yung@myob.com>
|
||||
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
||||
Kyle McMartin <kyle@redhat.com>
|
||||
Lars R. Damerow <lars@pixar.com>
|
||||
Lennert Buytenhek <buytenh@wantstofly.org>
|
||||
Lubomir Rintel <lkundrak@v3.sk>
|
||||
|
8
Makefile
8
Makefile
@@ -82,7 +82,7 @@ dracut.html: dracut.asc $(manpages)
|
||||
--stringparam html.stylesheet \
|
||||
http://docs.fedoraproject.org/en-US/Common_Content/css/default.css \
|
||||
http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl dracut.xml
|
||||
rm dracut.xml
|
||||
rm -f -- dracut.xml
|
||||
|
||||
install: dracut-version.sh
|
||||
mkdir -p $(DESTDIR)$(pkglibdir)
|
||||
@@ -164,9 +164,9 @@ dracut-$(VERSION).tar.bz2: doc
|
||||
mkdir -p dracut-$(VERSION)
|
||||
for i in $(manpages) dracut.html dracut-version.sh; do [ "$${i%/*}" != "$$i" ] && mkdir -p "dracut-$(VERSION)/$${i%/*}"; cp "$$i" "dracut-$(VERSION)/$$i"; done
|
||||
tar --owner=root --group=root -rf dracut-$(VERSION).tar $$(find dracut-$(VERSION) -type f)
|
||||
rm -fr dracut-$(VERSION).tar.bz2 dracut-$(VERSION)
|
||||
rm -fr -- dracut-$(VERSION).tar.bz2 dracut-$(VERSION)
|
||||
bzip2 -9 dracut-$(VERSION).tar
|
||||
rm -f dracut-$(VERSION).tar
|
||||
rm -f -- dracut-$(VERSION).tar
|
||||
|
||||
rpm: dracut-$(VERSION).tar.bz2
|
||||
rpmbuild=$$(mktemp -d -t rpmbuild-dracut.XXXXXX); src=$$(pwd); \
|
||||
@@ -175,7 +175,7 @@ rpm: dracut-$(VERSION).tar.bz2
|
||||
(cd "$$rpmbuild"; rpmbuild --define "_topdir $$PWD" --define "_sourcedir $$PWD" \
|
||||
--define "_specdir $$PWD" --define "_srcrpmdir $$PWD" \
|
||||
--define "_rpmdir $$PWD" -ba dracut.spec; ) && \
|
||||
( mv "$$rpmbuild"/$$(arch)/*.rpm .; mv "$$rpmbuild"/*.src.rpm .;rm -fr "$$rpmbuild"; ls *.rpm )
|
||||
( mv "$$rpmbuild"/$$(arch)/*.rpm .; mv "$$rpmbuild"/*.src.rpm .;rm -fr -- "$$rpmbuild"; ls *.rpm )
|
||||
|
||||
syncheck:
|
||||
@ret=0;for i in dracut-initramfs-restore.sh modules.d/*/*.sh; do \
|
||||
|
47
NEWS
47
NEWS
@@ -1,3 +1,50 @@
|
||||
dracut-031
|
||||
==========
|
||||
- do not include the resume dracut module in hostonly mode,
|
||||
if no swap is present
|
||||
- don't warn twice about omitted modules
|
||||
- use systemd-cat for logging on systemd systems, if logfile is unset
|
||||
- fixed PARTUUID parsing
|
||||
- support kernel module signing keys
|
||||
- do not install the usrmount dracut module in hostonly mode,
|
||||
if /sbin/init does not live in /usr
|
||||
- add debian udev rule files
|
||||
- add support for bcache
|
||||
- network: handle bootif style interfaces
|
||||
e.g. ip=77-77-6f-6f-64-73:dhcp
|
||||
- add support for kmod static devnodes
|
||||
- add vlan support for iBFT
|
||||
|
||||
Contributions from:
|
||||
Harald Hoyer
|
||||
Amadeusz Żołnowski
|
||||
Brandon Philips
|
||||
Colin Walters
|
||||
James Lee
|
||||
Kyle McMartin
|
||||
Peter Jones
|
||||
|
||||
dracut-030
|
||||
==========
|
||||
- support new persistent network interface names
|
||||
- fix findmnt calls, prevents hang on stale NFS mounts
|
||||
- add systemd.slice and slice.target units
|
||||
- major shell cleanup
|
||||
- support root=PARTLABEL= and root=PARTUUID=
|
||||
- terminfo: only install l/linux v/vt100 and v/vt220
|
||||
- unset all LC_* and LANG, 10% faster
|
||||
- fixed dependency loop for dracut-cmdline.service
|
||||
- do not wait_for_dev for the root devices
|
||||
- do not wait_for_dev for devices, if dracut-initqueue is not needed
|
||||
- support early microcode loading with --early-microcode
|
||||
- dmraid, let dmraid setup its own partitions
|
||||
- sosreport renamed to rdsosreport
|
||||
|
||||
Contributions from:
|
||||
Harald Hoyer
|
||||
Konrad Rzeszutek Wilk
|
||||
WANG Chao
|
||||
|
||||
dracut-029
|
||||
==========
|
||||
- wait for IPv6 autoconfiguration
|
||||
|
@@ -33,7 +33,8 @@ _dracut() {
|
||||
--lvmconf --nolvmconf --debug --profile --verbose --quiet
|
||||
--local --hostonly --no-hostonly --fstab --help --bzip2 --lzma
|
||||
--xz --no-compress --gzip --list-modules --show-modules --keep
|
||||
--printsize --regenerate-all --noimageifnotneeded'
|
||||
--printsize --regenerate-all --noimageifnotneeded --early-microcode
|
||||
--no-early-microcode'
|
||||
|
||||
[ARG]='-a -m -o -d -I -k -c -L --kver --add --force-add --add-drivers
|
||||
--omit-drivers --modules --omit --drivers --filesystems --install
|
||||
|
@@ -118,11 +118,11 @@ fi
|
||||
images+=($@)
|
||||
|
||||
dinfo "Using base image $baseimage"
|
||||
cat "$baseimage" > "$outfile"
|
||||
cat -- "$baseimage" > "$outfile"
|
||||
|
||||
for i in "${images[@]}"; do
|
||||
dinfo "Appending $i"
|
||||
cat "$i" >> "$outfile"
|
||||
cat -- "$i" >> "$outfile"
|
||||
done
|
||||
|
||||
dinfo "Created $outfile"
|
||||
|
@@ -39,13 +39,13 @@ strstr() { [[ $1 = *$2* ]]; }
|
||||
# search in the usual places to find the binary.
|
||||
find_binary() {
|
||||
if [[ -z ${1##/*} ]]; then
|
||||
if [[ -x $1 ]] || { strstr "$1" ".so" && ldd $1 &>/dev/null; }; then
|
||||
echo $1
|
||||
if [[ -x $1 ]] || { [[ "$1" == *.so* ]] && ldd "$1" &>/dev/null; }; then
|
||||
printf "%s\n" "$1"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
type -P ${1##*/}
|
||||
type -P "${1##*/}"
|
||||
}
|
||||
|
||||
if ! [[ $dracutbasedir ]]; then
|
||||
@@ -65,7 +65,7 @@ fi
|
||||
|
||||
# Detect lib paths
|
||||
if ! [[ $libdirs ]] ; then
|
||||
if strstr "$(ldd /bin/sh)" "/lib64/" &>/dev/null \
|
||||
if [[ "$(ldd /bin/sh)" == */lib64/* ]] &>/dev/null \
|
||||
&& [[ -d /lib64 ]]; then
|
||||
libdirs+=" /lib64"
|
||||
[[ -d /usr/lib64 ]] && libdirs+=" /usr/lib64"
|
||||
@@ -83,7 +83,7 @@ fi
|
||||
|
||||
srcmods="/lib/modules/$kernel/"
|
||||
[[ $drivers_dir ]] && {
|
||||
if vercmp $(modprobe --version | cut -d' ' -f3) lt 3.7; then
|
||||
if vercmp "$(modprobe --version | cut -d' ' -f3)" lt 3.7; then
|
||||
dfatal 'To use --kmoddir option module-init-tools >= 3.7 is required.'
|
||||
exit 1
|
||||
fi
|
||||
@@ -115,19 +115,21 @@ dracut_need_initqueue() {
|
||||
}
|
||||
|
||||
dracut_module_included() {
|
||||
strstr "$mods_to_load $modules_loaded" "$@"
|
||||
[[ "$mods_to_load $modules_loaded" == *$@* ]]
|
||||
}
|
||||
|
||||
# Create all subdirectories for given path without creating the last element.
|
||||
# $1 = path
|
||||
mksubdirs() { [[ -e ${1%/*} ]] || mkdir -m 0755 -p ${1%/*}; }
|
||||
mksubdirs() {
|
||||
[[ -e ${1%/*} ]] || mkdir -m 0755 -p -- "${1%/*}"
|
||||
}
|
||||
|
||||
# Version comparision function. Assumes Linux style version scheme.
|
||||
# $1 = version a
|
||||
# $2 = comparision op (gt, ge, eq, le, lt, ne)
|
||||
# $3 = version b
|
||||
vercmp() {
|
||||
local _n1=(${1//./ }) _op=$2 _n2=(${3//./ }) _i _res
|
||||
local _n1=${1//./ } _op=$2 _n2=${3//./ } _i _res
|
||||
|
||||
for ((_i=0; ; _i++))
|
||||
do
|
||||
@@ -152,7 +154,7 @@ vercmp() {
|
||||
# is_func <command>
|
||||
# Check whether $1 is a function.
|
||||
is_func() {
|
||||
[[ $(type -t $1) = "function" ]]
|
||||
[[ "$(type -t "$1")" = "function" ]]
|
||||
}
|
||||
|
||||
# Function prints global variables in format name=value line by line.
|
||||
@@ -160,10 +162,10 @@ is_func() {
|
||||
print_vars() {
|
||||
local _var _value
|
||||
|
||||
for _var in $@
|
||||
for _var in "$@"
|
||||
do
|
||||
_value=$(eval echo \$$_var)
|
||||
[[ ${_value} ]] && echo "${_var}=\"${_value}\""
|
||||
eval printf -v _value "%s" "\$$_var"
|
||||
[[ ${_value} ]] && printf '%s="%s"\n' "$_var" "$_value"
|
||||
done
|
||||
}
|
||||
|
||||
@@ -204,7 +206,7 @@ convert_abs_rel() {
|
||||
__abssize=${#__absolute[@]}
|
||||
__cursize=${#__current[@]}
|
||||
|
||||
while [[ ${__absolute[__level]} == ${__current[__level]} ]]
|
||||
while [[ "${__absolute[__level]}" == "${__current[__level]}" ]]
|
||||
do
|
||||
(( __level++ ))
|
||||
if (( __level > __abssize || __level > __cursize ))
|
||||
@@ -234,7 +236,7 @@ convert_abs_rel() {
|
||||
echo "$__newpath"
|
||||
}
|
||||
|
||||
if strstr "$(ln --help)" "--relative"; then
|
||||
if [[ "$(ln --help)" == *--relative* ]]; then
|
||||
ln_r() {
|
||||
ln -sfnr "${initdir}/$1" "${initdir}/$2"
|
||||
}
|
||||
@@ -243,7 +245,7 @@ else
|
||||
local _source=$1
|
||||
local _dest=$2
|
||||
[[ -d "${_dest%/*}" ]] && _dest=$(readlink -f "${_dest%/*}")/${_dest##*/}
|
||||
ln -sfn $(convert_abs_rel "${_dest}" "${_source}") "${initdir}/${_dest}"
|
||||
ln -sfn -- "$(convert_abs_rel "${_dest}" "${_source}")" "${initdir}/${_dest}"
|
||||
}
|
||||
fi
|
||||
|
||||
@@ -257,42 +259,50 @@ get_persistent_dev() {
|
||||
[[ $i == /dev/mapper/mpath* ]] && continue
|
||||
_tmp=$(udevadm info --query=name --name="$i" 2>/dev/null)
|
||||
if [ "$_tmp" = "$_dev" ]; then
|
||||
echo $i
|
||||
printf -- "%s" "$i"
|
||||
return
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# get_fs_env <device>
|
||||
# Get and set the ID_FS_TYPE and ID_FS_UUID variable from udev for a device.
|
||||
# Get and set the ID_FS_TYPE variable from udev for a device.
|
||||
# Example:
|
||||
# $ get_fs_env /dev/sda2; echo $ID_FS_TYPE; echo $ID_FS_UUID
|
||||
# $ get_fs_env /dev/sda2; echo $ID_FS_TYPE
|
||||
# ext4
|
||||
# 551a39aa-4ae9-4e70-a262-ef665cadb574
|
||||
get_fs_env() {
|
||||
local evalstr
|
||||
local found
|
||||
|
||||
[[ $1 ]] || return
|
||||
unset ID_FS_TYPE
|
||||
unset ID_FS_UUID
|
||||
if evalstr=$(udevadm info --query=env --name=$1 \
|
||||
if ID_FS_TYPE=$(udevadm info --query=env --name="$1" \
|
||||
| { while read line; do
|
||||
strstr "$line" "DEVPATH" && found=1;
|
||||
strstr "$line" "ID_FS_TYPE=" && { echo $line; exit 0;}
|
||||
done; [[ $found ]] && exit 0; exit 1; }) ; then
|
||||
eval $evalstr
|
||||
[[ $ID_FS_TYPE ]] && return 0
|
||||
return 1
|
||||
[[ "$line" == DEVPATH\=* ]] && found=1;
|
||||
if [[ "$line" == ID_FS_TYPE\=* ]]; then
|
||||
printf "%s" "${line#ID_FS_TYPE=}";
|
||||
exit 0;
|
||||
fi
|
||||
done; [[ $found ]] && exit 0; exit 1; }) ; then
|
||||
if [[ $ID_FS_TYPE ]]; then
|
||||
printf "%s" "$ID_FS_TYPE"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Fallback, if we don't have udev information
|
||||
if find_binary blkid >/dev/null; then
|
||||
eval $(blkid -o udev $1 \
|
||||
ID_FS_TYPE=$(blkid -u filesystem -o export -- "$1" \
|
||||
| while read line; do
|
||||
strstr "$line" "ID_FS_TYPE=" && echo $line;
|
||||
if [[ "$line" == TYPE\=* ]]; then
|
||||
printf "%s" "${line#TYPE=}";
|
||||
exit 0;
|
||||
fi
|
||||
done)
|
||||
[[ $ID_FS_TYPE ]] && return 0
|
||||
if [[ $ID_FS_TYPE ]]; then
|
||||
printf "%s" "$ID_FS_TYPE"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
@@ -303,10 +313,9 @@ get_fs_env() {
|
||||
# $ get_maj_min /dev/sda2
|
||||
# 8:2
|
||||
get_maj_min() {
|
||||
local _dev
|
||||
_dev=$(stat -L -c '$((0x%t)):$((0x%T))' "$1" 2>/dev/null)
|
||||
_dev=$(eval "echo $_dev")
|
||||
echo $_dev
|
||||
local _maj _min _majmin
|
||||
_majmin="$(stat -L -c '%t:%T' "$1" 2>/dev/null)"
|
||||
printf "%s" "$((0x${_majmin%:*})):$((0x${_majmin#*:}))"
|
||||
}
|
||||
|
||||
# find_block_device <mountpoint>
|
||||
@@ -324,11 +333,35 @@ find_block_device() {
|
||||
_find_mpt="$1"
|
||||
if [[ $use_fstab != yes ]]; then
|
||||
[[ -d $_find_mpt/. ]]
|
||||
while read _majmin _dev; do
|
||||
if [[ -b $_dev ]]; then
|
||||
if ! [[ $_majmin ]] || [[ $_majmin == 0:* ]]; then
|
||||
read _majmin < <(get_maj_min $_dev)
|
||||
findmnt -e -v -n -o 'MAJ:MIN,SOURCE' --target "$_find_mpt" | { \
|
||||
while read _majmin _dev; do
|
||||
if [[ -b $_dev ]]; then
|
||||
if ! [[ $_majmin ]] || [[ $_majmin == 0:* ]]; then
|
||||
_majmin=$(get_maj_min $_dev)
|
||||
fi
|
||||
if [[ $_majmin ]]; then
|
||||
echo $_majmin
|
||||
else
|
||||
echo $_dev
|
||||
fi
|
||||
return 0
|
||||
fi
|
||||
if [[ $_dev = *:* ]]; then
|
||||
echo $_dev
|
||||
return 0
|
||||
fi
|
||||
done; return 1; } && return 0
|
||||
fi
|
||||
# fall back to /etc/fstab
|
||||
|
||||
findmnt -e --fstab -v -n -o 'MAJ:MIN,SOURCE' --target "$_find_mpt" | { \
|
||||
while read _majmin _dev; do
|
||||
if ! [[ $_dev ]]; then
|
||||
_dev="$_majmin"
|
||||
unset _majmin
|
||||
fi
|
||||
if [[ -b $_dev ]]; then
|
||||
[[ $_majmin ]] || _majmin=$(get_maj_min $_dev)
|
||||
if [[ $_majmin ]]; then
|
||||
echo $_majmin
|
||||
else
|
||||
@@ -340,29 +373,7 @@ find_block_device() {
|
||||
echo $_dev
|
||||
return 0
|
||||
fi
|
||||
done < <(findmnt -e -v -n -o 'MAJ:MIN,SOURCE' "$_find_mpt")
|
||||
fi
|
||||
# fall back to /etc/fstab
|
||||
|
||||
while read _majmin _dev; do
|
||||
if ! [[ $_dev ]]; then
|
||||
_dev="$_majmin"
|
||||
unset _majmin
|
||||
fi
|
||||
if [[ -b $_dev ]]; then
|
||||
[[ $_majmin ]] || read _majmin < <(get_maj_min $_dev)
|
||||
if [[ $_majmin ]]; then
|
||||
echo $_majmin
|
||||
else
|
||||
echo $_dev
|
||||
fi
|
||||
return 0
|
||||
fi
|
||||
if [[ $_dev = *:* ]]; then
|
||||
echo $_dev
|
||||
return 0
|
||||
fi
|
||||
done < <(findmnt -e --fstab -v -n -o 'MAJ:MIN,SOURCE' "$_find_mpt")
|
||||
done; return 1; } && return 0
|
||||
|
||||
return 1
|
||||
}
|
||||
@@ -379,20 +390,22 @@ find_mp_fstype() {
|
||||
local _fs
|
||||
|
||||
if [[ $use_fstab != yes ]]; then
|
||||
findmnt -e -v -n -o 'FSTYPE' --target "$1" | { \
|
||||
while read _fs; do
|
||||
[[ $_fs ]] || continue
|
||||
[[ $_fs = "autofs" ]] && continue
|
||||
echo -n $_fs
|
||||
return 0
|
||||
done; return 1; } && return 0
|
||||
fi
|
||||
|
||||
findmnt --fstab -e -v -n -o 'FSTYPE' --target "$1" | { \
|
||||
while read _fs; do
|
||||
[[ $_fs ]] || continue
|
||||
[[ $_fs = "autofs" ]] && continue
|
||||
echo -n $_fs
|
||||
return 0
|
||||
done < <(findmnt -e -v -n -o 'FSTYPE' "$1")
|
||||
fi
|
||||
|
||||
while read _fs; do
|
||||
[[ $_fs ]] || continue
|
||||
[[ $_fs = "autofs" ]] && continue
|
||||
echo -n $_fs
|
||||
return 0
|
||||
done < <(findmnt --fstab -e -v -n -o 'FSTYPE' "$1")
|
||||
done; return 1; } && return 0
|
||||
|
||||
return 1
|
||||
}
|
||||
@@ -406,10 +419,30 @@ find_mp_fstype() {
|
||||
# $ find_dev_fstype /dev/sda2;echo
|
||||
# ext4
|
||||
find_dev_fstype() {
|
||||
local _x _mpt _majmin _dev _fs _maj _min _find_dev
|
||||
local _find_dev _fs
|
||||
_find_dev="$1"
|
||||
[[ "$_find_dev" = /dev* ]] || _find_dev="/dev/block/$_find_dev"
|
||||
find_mp_fstype "$_find_dev"
|
||||
|
||||
if [[ $use_fstab != yes ]]; then
|
||||
findmnt -e -v -n -o 'FSTYPE' --source "$_find_dev" | { \
|
||||
while read _fs; do
|
||||
[[ $_fs ]] || continue
|
||||
[[ $_fs = "autofs" ]] && continue
|
||||
echo -n $_fs
|
||||
return 0
|
||||
done; return 1; } && return 0
|
||||
fi
|
||||
|
||||
findmnt --fstab -e -v -n -o 'FSTYPE' --source "$_find_dev" | { \
|
||||
while read _fs; do
|
||||
[[ $_fs ]] || continue
|
||||
[[ $_fs = "autofs" ]] && continue
|
||||
echo -n $_fs
|
||||
return 0
|
||||
done; return 1; } && return 0
|
||||
|
||||
return 1
|
||||
|
||||
}
|
||||
|
||||
# finds the major:minor of the block device backing the root filesystem.
|
||||
@@ -447,12 +480,12 @@ check_block_and_slaves() {
|
||||
"$1" $2 && return
|
||||
check_vol_slaves "$@" && return 0
|
||||
if [[ -f /sys/dev/block/$2/../dev ]]; then
|
||||
check_block_and_slaves $1 $(cat "/sys/dev/block/$2/../dev") && return 0
|
||||
check_block_and_slaves $1 $(<"/sys/dev/block/$2/../dev") && return 0
|
||||
fi
|
||||
[[ -d /sys/dev/block/$2/slaves ]] || return 1
|
||||
for _x in /sys/dev/block/$2/slaves/*/dev; do
|
||||
[[ -f $_x ]] || continue
|
||||
check_block_and_slaves $1 $(cat "$_x") && return 0
|
||||
check_block_and_slaves $1 $(<"$_x") && return 0
|
||||
done
|
||||
return 1
|
||||
}
|
||||
@@ -461,16 +494,16 @@ check_block_and_slaves_all() {
|
||||
local _x _ret=1
|
||||
[[ -b /dev/block/$2 ]] || return 1 # Not a block device? So sorry.
|
||||
if "$1" $2; then
|
||||
_ret=0
|
||||
_ret=0
|
||||
fi
|
||||
check_vol_slaves "$@" && return 0
|
||||
if [[ -f /sys/dev/block/$2/../dev ]]; then
|
||||
check_block_and_slaves_all $1 $(cat "/sys/dev/block/$2/../dev") && _ret=0
|
||||
check_block_and_slaves_all $1 $(<"/sys/dev/block/$2/../dev") && _ret=0
|
||||
fi
|
||||
[[ -d /sys/dev/block/$2/slaves ]] || return 1
|
||||
for _x in /sys/dev/block/$2/slaves/*/dev; do
|
||||
[[ -f $_x ]] || continue
|
||||
check_block_and_slaves_all $1 $(cat "$_x") && _ret=0
|
||||
check_block_and_slaves_all $1 $(<"$_x") && _ret=0
|
||||
done
|
||||
return $_ret
|
||||
}
|
||||
@@ -488,7 +521,7 @@ for_each_host_dev_and_slaves_all()
|
||||
for _dev in ${host_devs[@]}; do
|
||||
[[ -b "$_dev" ]] || continue
|
||||
if check_block_and_slaves_all $_func $(get_maj_min $_dev); then
|
||||
_ret=0
|
||||
_ret=0
|
||||
fi
|
||||
done
|
||||
return $_ret
|
||||
@@ -643,7 +676,7 @@ else
|
||||
# We never overwrite the target if it exists.
|
||||
inst_simple() {
|
||||
[[ -f "$1" ]] || return 1
|
||||
strstr "$1" "/" || return 1
|
||||
[[ "$1" == */* ]] || return 1
|
||||
local _src=$1 _target="${2:-$1}"
|
||||
|
||||
[[ -L $_src ]] && { inst_symlink $_src $_target; return $?; }
|
||||
@@ -672,7 +705,7 @@ else
|
||||
# same as above, but specialized for symlinks
|
||||
inst_symlink() {
|
||||
local _src=$1 _target=${2:-$1} _realsrc
|
||||
strstr "$1" "/" || return 1
|
||||
[[ "$1" == */* ]] || return 1
|
||||
[[ -L $1 ]] || return 1
|
||||
[[ -L $initdir/$_target ]] && return 0
|
||||
_realsrc=$(readlink -f "$_src")
|
||||
@@ -693,7 +726,7 @@ else
|
||||
# is referenced.
|
||||
inst_library() {
|
||||
local _src="$1" _dest=${2:-$1} _lib _reallib _symlink
|
||||
strstr "$1" "/" || return 1
|
||||
[[ "$1" == */* ]] || return 1
|
||||
[[ -e $initdir/$_dest ]] && return 0
|
||||
if [[ -L $_src ]]; then
|
||||
if [[ $DRACUT_FIPS_MODE ]]; then
|
||||
@@ -745,7 +778,7 @@ else
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ $_line =~ not\ found ]]; then
|
||||
if [[ $_line == *not\ found* ]]; then
|
||||
dfatal "Missing a shared library required by $_bin."
|
||||
dfatal "Run \"ldd $_bin\" to find out what it is."
|
||||
dfatal "$_line"
|
||||
@@ -831,7 +864,7 @@ rev_lib_symlinks() {
|
||||
|
||||
local fn="$1" orig="$(readlink -f "$1")" links=''
|
||||
|
||||
[[ ${fn} =~ .*\.so\..* ]] || return 1
|
||||
[[ ${fn} == *.so.* ]] || return 1
|
||||
|
||||
until [[ ${fn##*.} == so ]]; do
|
||||
fn="${fn%.*}"
|
||||
@@ -985,7 +1018,7 @@ inst_hook() {
|
||||
dfatal "Cannot install a hook ($3) that does not exist."
|
||||
dfatal "Aborting initrd creation."
|
||||
exit 1
|
||||
elif ! strstr "$hookdirs" "$1"; then
|
||||
elif ! [[ "$hookdirs" == *$1* ]]; then
|
||||
dfatal "No such hook type $1. Aborting initrd creation."
|
||||
exit 1
|
||||
fi
|
||||
@@ -1103,6 +1136,7 @@ module_check() {
|
||||
_ret=$?
|
||||
else
|
||||
unset check depends install installkernel
|
||||
check() { true; }
|
||||
. $_moddir/module-setup.sh
|
||||
is_func check || return 0
|
||||
[ $_forced -ne 0 ] && unset hostonly
|
||||
@@ -1130,8 +1164,8 @@ module_check_mount() {
|
||||
_ret=$?
|
||||
else
|
||||
unset check depends install installkernel
|
||||
check() { false; }
|
||||
. $_moddir/module-setup.sh
|
||||
is_func check || return 1
|
||||
check 0
|
||||
_ret=$?
|
||||
unset check depends install installkernel
|
||||
@@ -1154,8 +1188,8 @@ module_depends() {
|
||||
return $?
|
||||
else
|
||||
unset check depends install installkernel
|
||||
depends() { true; }
|
||||
. $_moddir/module-setup.sh
|
||||
is_func depends || return 0
|
||||
depends
|
||||
_ret=$?
|
||||
unset check depends install installkernel
|
||||
@@ -1175,8 +1209,8 @@ module_install() {
|
||||
return $?
|
||||
else
|
||||
unset check depends install installkernel
|
||||
install() { true; }
|
||||
. $_moddir/module-setup.sh
|
||||
is_func install || return 0
|
||||
install
|
||||
_ret=$?
|
||||
unset check depends install installkernel
|
||||
@@ -1196,8 +1230,8 @@ module_installkernel() {
|
||||
return $?
|
||||
else
|
||||
unset check depends install installkernel
|
||||
installkernel() { true; }
|
||||
. $_moddir/module-setup.sh
|
||||
is_func installkernel || return 0
|
||||
installkernel
|
||||
_ret=$?
|
||||
unset check depends install installkernel
|
||||
@@ -1217,20 +1251,19 @@ check_mount() {
|
||||
[ "${#host_fs_types[*]}" -le 0 ] && return 1
|
||||
|
||||
# If we are already scheduled to be loaded, no need to check again.
|
||||
strstr " $mods_to_load " " $_mod " && return 0
|
||||
strstr " $mods_checked_as_dep " " $_mod " && return 1
|
||||
[[ " $mods_to_load " == *\ $_mod\ * ]] && return 0
|
||||
[[ " $mods_checked_as_dep " == *\ $_mod\ * ]] && return 1
|
||||
|
||||
# This should never happen, but...
|
||||
[[ -d $_moddir ]] || return 1
|
||||
|
||||
[[ $2 ]] || mods_checked_as_dep+=" $_mod "
|
||||
|
||||
if strstr " $omit_dracutmodules " " $_mod "; then
|
||||
dinfo "dracut module '$_mod' will not be installed, because it's in the list to be omitted!"
|
||||
if [[ " $omit_dracutmodules " == *\ $_mod\ * ]]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
if strstr " $dracutmodules $add_dracutmodules $force_add_dracutmodules" " $_mod "; then
|
||||
if [[ " $dracutmodules $add_dracutmodules $force_add_dracutmodules" == *\ $_mod\ * ]]; then
|
||||
module_check_mount $_mod; ret=$?
|
||||
|
||||
# explicit module, so also accept ret=255
|
||||
@@ -1249,9 +1282,9 @@ check_mount() {
|
||||
|
||||
for _moddep in $(module_depends $_mod); do
|
||||
# handle deps as if they were manually added
|
||||
strstr " $add_dracutmodules " " $_moddep " || \
|
||||
[[ " $add_dracutmodules " == *\ $_moddep\ * ]] || \
|
||||
add_dracutmodules+=" $_moddep "
|
||||
strstr " $force_add_dracutmodules " " $_moddep " || \
|
||||
[[ " $force_add_dracutmodules " == *\ $_moddep\ * ]] || \
|
||||
force_add_dracutmodules+=" $_moddep "
|
||||
# if a module we depend on fail, fail also
|
||||
if ! check_module $_moddep; then
|
||||
@@ -1260,7 +1293,7 @@ check_mount() {
|
||||
fi
|
||||
done
|
||||
|
||||
strstr " $mods_to_load " " $_mod " || \
|
||||
[[ " $mods_to_load " == *\ $_mod\ * ]] || \
|
||||
mods_to_load+=" $_mod "
|
||||
|
||||
return 0
|
||||
@@ -1276,21 +1309,21 @@ check_module() {
|
||||
local _ret
|
||||
local _moddep
|
||||
# If we are already scheduled to be loaded, no need to check again.
|
||||
strstr " $mods_to_load " " $_mod " && return 0
|
||||
strstr " $mods_checked_as_dep " " $_mod " && return 1
|
||||
[[ " $mods_to_load " == *\ $_mod\ * ]] && return 0
|
||||
[[ " $mods_checked_as_dep " == *\ $_mod\ * ]] && return 1
|
||||
|
||||
# This should never happen, but...
|
||||
[[ -d $_moddir ]] || return 1
|
||||
|
||||
[[ $2 ]] || mods_checked_as_dep+=" $_mod "
|
||||
|
||||
if strstr " $omit_dracutmodules " " $_mod "; then
|
||||
if [[ " $omit_dracutmodules " == *\ $_mod\ * ]]; then
|
||||
dinfo "dracut module '$_mod' will not be installed, because it's in the list to be omitted!"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if strstr " $dracutmodules $add_dracutmodules $force_add_dracutmodules" " $_mod "; then
|
||||
if strstr " $force_add_dracutmodules" " $_mod"; then
|
||||
if [[ " $dracutmodules $add_dracutmodules $force_add_dracutmodules" == *\ $_mod\ * ]]; then
|
||||
if [[ " $force_add_dracutmodules " == *\ $_mod\ * ]]; then
|
||||
module_check $_mod 1; ret=$?
|
||||
else
|
||||
module_check $_mod 0; ret=$?
|
||||
@@ -1310,9 +1343,9 @@ check_module() {
|
||||
|
||||
for _moddep in $(module_depends $_mod); do
|
||||
# handle deps as if they were manually added
|
||||
strstr " $add_dracutmodules " " $_moddep " || \
|
||||
[[ " $add_dracutmodules " == *\ $_moddep\ * ]] || \
|
||||
add_dracutmodules+=" $_moddep "
|
||||
strstr " $force_add_dracutmodules " " $_moddep " || \
|
||||
[[ " $force_add_dracutmodules " == *\ $_moddep\ * ]] || \
|
||||
force_add_dracutmodules+=" $_moddep "
|
||||
# if a module we depend on fail, fail also
|
||||
if ! check_module $_moddep; then
|
||||
@@ -1321,7 +1354,7 @@ check_module() {
|
||||
fi
|
||||
done
|
||||
|
||||
strstr " $mods_to_load " " $_mod " || \
|
||||
[[ " $mods_to_load " == *\ $_mod\ * ]] || \
|
||||
mods_to_load+=" $_mod "
|
||||
|
||||
return 0
|
||||
@@ -1344,8 +1377,8 @@ for_each_module_dir() {
|
||||
_modcheck="$add_dracutmodules $force_add_dracutmodules"
|
||||
[[ $dracutmodules != all ]] && _modcheck="$m $dracutmodules"
|
||||
for _mod in $_modcheck; do
|
||||
strstr "$mods_to_load" "$_mod" && continue
|
||||
strstr "$omit_dracutmodules" "$_mod" && continue
|
||||
[[ " $mods_to_load " == *\ $_mod\ * ]] && continue
|
||||
[[ " $omit_dracutmodules " == *\ $_mod\ * ]] && continue
|
||||
derror "dracut module '$_mod' cannot be found or installed."
|
||||
done
|
||||
}
|
||||
@@ -1377,6 +1410,14 @@ install_kmod_with_fw() {
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ $silent_omit_drivers ]]; then
|
||||
local _kmod=${1##*/}
|
||||
_kmod=${_kmod%.ko}
|
||||
_kmod=${_kmod/-/_}
|
||||
[[ "$_kmod" =~ $silent_omit_drivers ]] && return 0
|
||||
[[ "${1##*/lib/modules/$kernel/}" =~ $silent_omit_drivers ]] && return 0
|
||||
fi
|
||||
|
||||
inst_simple "$1" "/lib/modules/$kernel/${1##*/lib/modules/$kernel/}"
|
||||
ret=$?
|
||||
[[ $DRACUT_KERNEL_LAZY_HASHDIR ]] && \
|
||||
@@ -1427,6 +1468,7 @@ for_each_kmod_dep() {
|
||||
|
||||
dracut_kernel_post() {
|
||||
local _moddirname=${srcmods%%/lib/modules/*}
|
||||
local _pid
|
||||
|
||||
if [[ $DRACUT_KERNEL_LAZY_HASHDIR ]] && [[ -f "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist" ]]; then
|
||||
xargs -r modprobe -a ${_moddirname+-d ${_moddirname}/} \
|
||||
@@ -1450,6 +1492,8 @@ dracut_kernel_post() {
|
||||
done < "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist.dep"
|
||||
fi
|
||||
) &
|
||||
_pid=$(jobs -p | while read a ; do printf ":$a";done)
|
||||
_pid=${_pid##*:}
|
||||
|
||||
if [[ $DRACUT_INSTALL ]]; then
|
||||
xargs -r modinfo -k $kernel -F firmware < "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist.dep" \
|
||||
@@ -1469,7 +1513,7 @@ dracut_kernel_post() {
|
||||
done
|
||||
fi
|
||||
|
||||
wait
|
||||
wait $_pid
|
||||
fi
|
||||
|
||||
for _f in modules.builtin.bin modules.builtin; do
|
||||
@@ -1490,18 +1534,20 @@ dracut_kernel_post() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
[[ $DRACUT_KERNEL_LAZY_HASHDIR ]] && rm -fr "$DRACUT_KERNEL_LAZY_HASHDIR"
|
||||
[[ $DRACUT_KERNEL_LAZY_HASHDIR ]] && rm -fr -- "$DRACUT_KERNEL_LAZY_HASHDIR"
|
||||
}
|
||||
|
||||
module_is_host_only() (
|
||||
module_is_host_only() {
|
||||
local _mod=$1
|
||||
_mod=${_mod##*/}
|
||||
_mod=${_mod%.ko}
|
||||
|
||||
[[ "$add_drivers" =~ " ${_mod} " ]] && return 0
|
||||
[[ " $add_drivers " == *\ ${_mod}\ * ]] && return 0
|
||||
|
||||
# check if module is loaded
|
||||
[[ -d $(echo /sys/module/${_mod//-/_}|{ read a b; echo $a; }) ]] && return 0
|
||||
for i in /sys/module/${_mod//-/_}; do
|
||||
[[ -d $i ]] && return 0
|
||||
done
|
||||
|
||||
# check if module is loadable on the current kernel
|
||||
# this covers the case, where a new module is introduced
|
||||
@@ -1510,22 +1556,22 @@ module_is_host_only() (
|
||||
modinfo -F filename "$_mod" &>/dev/null || return 0
|
||||
|
||||
return 1
|
||||
)
|
||||
}
|
||||
|
||||
find_kernel_modules_by_path () (
|
||||
find_kernel_modules_by_path () {
|
||||
local _OLDIFS
|
||||
|
||||
[[ -f $srcmods/modules.dep ]] || return 0
|
||||
[[ -f "$srcmods/modules.dep" ]] || return 0
|
||||
|
||||
_OLDIFS=$IFS
|
||||
IFS=:
|
||||
while read a rest; do
|
||||
[[ $a = */$1/* ]] || continue
|
||||
echo $srcmods/$a
|
||||
done < $srcmods/modules.dep
|
||||
printf "%s\n" "$srcmods/$a"
|
||||
done < "$srcmods/modules.dep"
|
||||
IFS=$_OLDIFS
|
||||
return 0
|
||||
)
|
||||
}
|
||||
|
||||
find_kernel_modules () {
|
||||
find_kernel_modules_by_path drivers
|
||||
@@ -1631,7 +1677,40 @@ instmods() {
|
||||
# Capture all stderr from modprobe to _fderr. We could use {var}>...
|
||||
# redirections, but that would make dracut require bash4 at least.
|
||||
eval "( instmods_1 \"\$@\" ) ${_fderr}>&1" \
|
||||
| while read line; do [[ "$line" =~ $_filter_not_found ]] || echo $line;done | derror
|
||||
| while read line; do [[ "$line" =~ $_filter_not_found ]] || echo $line;done | derror
|
||||
_ret=$?
|
||||
return $_ret
|
||||
}
|
||||
# get_cpu_vendor
|
||||
# Only two values are returned: AMD or Intel
|
||||
get_cpu_vendor ()
|
||||
{
|
||||
if grep -qE AMD /proc/cpuinfo; then
|
||||
printf "AMD"
|
||||
fi
|
||||
if grep -qE Intel /proc/cpuinfo; then
|
||||
printf "Intel"
|
||||
fi
|
||||
}
|
||||
|
||||
# get_host_ucode
|
||||
# Get the hosts' ucode file based on the /proc/cpuinfo
|
||||
get_ucode_file ()
|
||||
{
|
||||
local family=`grep -E "cpu family" /proc/cpuinfo | head -1 | sed s/.*:\ //`
|
||||
local model=`grep -E "model" /proc/cpuinfo |grep -v name | head -1 | sed s/.*:\ //`
|
||||
local stepping=`grep -E "stepping" /proc/cpuinfo | head -1 | sed s/.*:\ //`
|
||||
|
||||
if [[ "$(get_cpu_vendor)" == "AMD" ]]; then
|
||||
# If family greater or equal than 0x15
|
||||
if [[ $family -ge 21 ]]; then
|
||||
printf "microcode_amd_fam15h.bin"
|
||||
else
|
||||
printf "microcode_amd.bin"
|
||||
fi
|
||||
fi
|
||||
if [[ "$(get_cpu_vendor)" == "Intel" ]]; then
|
||||
# The /proc/cpuinfo are in decimal.
|
||||
printf "%02x-%02x-%02x" ${family} ${model} ${stepping}
|
||||
fi
|
||||
}
|
||||
|
@@ -17,13 +17,13 @@ cd /run/initramfs
|
||||
|
||||
[ -f .need_shutdown -a -f "$IMG" ] || exit 1
|
||||
if zcat "$IMG" | cpio -id --quiet >/dev/null; then
|
||||
rm .need_shutdown
|
||||
rm -f -- .need_shutdown
|
||||
elif xzcat "$IMG" | cpio -id --quiet >/dev/null; then
|
||||
rm .need_shutdown
|
||||
rm -f -- .need_shutdown
|
||||
else
|
||||
# something failed, so we clean up
|
||||
echo "Unpacking of $IMG to /run/initramfs failed" >&2
|
||||
rm -f /run/initramfs/shutdown
|
||||
rm -f -- /run/initramfs/shutdown
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@@ -117,30 +117,38 @@ dlog_init() {
|
||||
if [ -z "$fileloglvl" ]; then
|
||||
[ -w "$logfile" ] && fileloglvl=4 || fileloglvl=0
|
||||
elif (( $fileloglvl > 0 )); then
|
||||
__oldumask=$(umask)
|
||||
umask 0377
|
||||
! [ -e "$logfile" ] && >"$logfile"
|
||||
umask $__oldumask
|
||||
if [ -w "$logfile" -a -f "$logfile" ]; then
|
||||
if [[ $logfile ]]; then
|
||||
__oldumask=$(umask)
|
||||
umask 0377
|
||||
! [ -e "$logfile" ] && >"$logfile"
|
||||
umask $__oldumask
|
||||
if [ -w "$logfile" -a -f "$logfile" ]; then
|
||||
# Mark new run in the log file
|
||||
echo >>"$logfile"
|
||||
if command -v date >/dev/null; then
|
||||
echo "=== $(date) ===" >>"$logfile"
|
||||
echo >>"$logfile"
|
||||
if command -v date >/dev/null; then
|
||||
echo "=== $(date) ===" >>"$logfile"
|
||||
else
|
||||
echo "===============================================" >>"$logfile"
|
||||
fi
|
||||
echo >>"$logfile"
|
||||
else
|
||||
echo "===============================================" >>"$logfile"
|
||||
fi
|
||||
echo >>"$logfile"
|
||||
else
|
||||
# We cannot log to file, so turn this facility off.
|
||||
fileloglvl=0
|
||||
ret=1
|
||||
errmsg="'$logfile' is not a writable file"
|
||||
fileloglvl=0
|
||||
ret=1
|
||||
errmsg="'$logfile' is not a writable file"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if (( $sysloglvl > 0 )); then
|
||||
if ! [ -S /dev/log -a -w /dev/log ] || ! command -v logger >/dev/null
|
||||
then
|
||||
if [[ -d /run/systemd/journal ]] && type -P systemd-cat &>/dev/null && (( $UID == 0 )) ; then
|
||||
readonly _dlogdir="$(mktemp --tmpdir="$TMPDIR/" -d -t dracut-log.XXXXXX)"
|
||||
readonly _systemdcatfile="$_dlogdir/systemd-cat"
|
||||
mkfifo "$_systemdcatfile"
|
||||
readonly _dlogfd=15
|
||||
systemd-cat -t 'dracut' <"$_systemdcatfile" &
|
||||
exec 15>"$_systemdcatfile"
|
||||
elif ! [ -S /dev/log -a -w /dev/log ] || ! command -v logger >/dev/null; then
|
||||
# We cannot log to syslog, so turn this facility off.
|
||||
sysloglvl=0
|
||||
ret=1
|
||||
@@ -306,15 +314,23 @@ _dlvl2syslvl() {
|
||||
_do_dlog() {
|
||||
local lvl="$1"; shift
|
||||
local lvlc=$(_lvl2char "$lvl") || return 0
|
||||
local msg="$lvlc: $*"
|
||||
local msg="$*"
|
||||
local lmsg="$lvlc: $*"
|
||||
|
||||
(( $lvl <= $stdloglvl )) && echo "$msg" >&2
|
||||
|
||||
if (( $lvl <= $sysloglvl )); then
|
||||
logger -t "dracut[$$]" -p $(_lvl2syspri $lvl) "$msg"
|
||||
if [[ "$_dlogfd" ]]; then
|
||||
echo "<$(_dlvl2syslvl $lvl)>$msg" >&$_dlogfd
|
||||
else
|
||||
logger -t "dracut[$$]" -p $(_lvl2syspri $lvl) "$msg"
|
||||
fi
|
||||
fi
|
||||
|
||||
if (( $lvl <= $fileloglvl )) && [[ -w "$logfile" ]] && [[ -f "$logfile" ]]; then
|
||||
echo "$msg" >>"$logfile"
|
||||
echo "$lmsg" >>"$logfile"
|
||||
fi
|
||||
|
||||
(( $lvl <= $kmsgloglvl )) && \
|
||||
echo "<$(_dlvl2syslvl $lvl)>dracut[$$] $msg" >/dev/kmsg
|
||||
}
|
||||
|
@@ -31,10 +31,10 @@ early userspace.
|
||||
For a complete list of kernel command line options see *dracut.cmdline*(7).
|
||||
|
||||
If you are dropped to an emergency shell, while booting your initramfs,
|
||||
the file _/run/initramfs/sosreport.txt_ is created, which can be safed to a
|
||||
the file _/run/initramfs/rdsosreport.txt_ is created, which can be safed to a
|
||||
(to be mounted by hand) partition (usually /boot) or a USB stick.
|
||||
Additional debugging info can be produced by adding **rd.debug** to the kernel command line.
|
||||
_/run/initramfs/sosreport.txt_ contains all logs and the output of some tools.
|
||||
_/run/initramfs/rdsosreport.txt_ contains all logs and the output of some tools.
|
||||
It should be attached to any report about dracut problems.
|
||||
|
||||
EXAMPLE
|
||||
|
@@ -489,7 +489,7 @@ dracut shell commands are printed as they are executed
|
||||
----
|
||||
# journalctl -ab
|
||||
----
|
||||
. With dracut >= 025 the file /run/initramfs/sosreport.txt is generated, which contains all the logs and the output of all significant tools, which are mentioned later.
|
||||
. With dracut >= 025 the file /run/initramfs/rdsosreport.txt is generated, which contains all the logs and the output of all significant tools, which are mentioned later.
|
||||
|
||||
If you want to save that output, simply mount /boot by hand or insert an USB stick and mount that.
|
||||
Then you can store the output for later inspection.
|
||||
|
@@ -128,10 +128,10 @@ Misc
|
||||
[[dracutkerneldebug]]
|
||||
Debug
|
||||
~~~~~
|
||||
If you are dropped to an emergency shell, the file _/run/initramfs/sosreport.txt_ is created,
|
||||
If you are dropped to an emergency shell, the file _/run/initramfs/rdsosreport.txt_ is created,
|
||||
which can be safed to a (to be mounted by hand) partition (usually /boot) or a USB stick.
|
||||
Additional debugging info can be produced by adding **rd.debug** to the kernel command line.
|
||||
_/run/initramfs/sosreport.txt_ contains all logs and the output of some tools.
|
||||
_/run/initramfs/rdsosreport.txt_ contains all logs and the output of some tools.
|
||||
It should be attached to any report about dracut problems.
|
||||
|
||||
**rd.info**::
|
||||
|
@@ -3,16 +3,12 @@
|
||||
# i18n
|
||||
i18n_vars="/etc/sysconfig/keyboard:KEYTABLE-KEYMAP /etc/sysconfig/i18n:SYSFONT-FONT,FONTACM-FONT_MAP,FONT_UNIMAP"
|
||||
i18n_default_font="latarcyrheb-sun16"
|
||||
omit_drivers+=' .*/fs/ocfs/.* i2o_scsi'
|
||||
stdloglvl=3
|
||||
logfile=/var/log/dracut.log
|
||||
fileloglvl=6
|
||||
sysloglvl=5
|
||||
install_items+=" vi /etc/virc ps grep cat rm "
|
||||
prefix="/"
|
||||
systemdutildir=/usr/lib/systemd
|
||||
systemdsystemunitdir=/usr/lib/systemd/system
|
||||
systemdsystemconfdir=/etc/systemd/system
|
||||
udevdir=/usr/lib/udev
|
||||
add_dracutmodules+=" systemd "
|
||||
hostonly="yes"
|
||||
dracut_rescue_image="yes"
|
||||
|
@@ -10,5 +10,6 @@ ro_mnt=yes
|
||||
|
||||
# i18n
|
||||
i18n_vars="/etc/conf.d/keymaps:keymap-KEYMAP,extended_keymaps-EXT_KEYMAPS /etc/conf.d/consolefont:consolefont-FONT,consoletranslation-FONT_MAP /etc/rc.conf:unicode-UNICODE"
|
||||
i18n_default_font="LatArCyrHeb-16"
|
||||
|
||||
omit_drivers+=" i2o_scsi"
|
||||
|
318
dracut.sh
318
dracut.sh
@@ -91,6 +91,8 @@ Creates initial ramdisk images for preloading modules
|
||||
firmwares, separated by :
|
||||
--kernel-only Only install kernel drivers and firmware files
|
||||
--no-kernel Do not install kernel drivers and firmware files
|
||||
--early-microcode Combine early microcode with ramdisk
|
||||
--no-early-microcode Do not combine early microcode with ramdisk
|
||||
--kernel-cmdline [PARAMETERS] Specify default kernel command line parameters
|
||||
--strip Strip binaries in the initramfs
|
||||
--nostrip Do not strip binaries in the initramfs
|
||||
@@ -213,7 +215,7 @@ pop() {
|
||||
if [[ "$__resultvar" ]]; then
|
||||
eval $__resultvar="'$_value'"
|
||||
else
|
||||
echo "$_value"
|
||||
printf "%s" "$_value"
|
||||
fi
|
||||
eval unset ${__stack}'[${#'${__stack}'[@]}-1]'
|
||||
return 0
|
||||
@@ -237,28 +239,30 @@ read_arg() {
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
dropindirs_sort()
|
||||
{
|
||||
suffix=$1; shift
|
||||
args=("$@")
|
||||
files=$(
|
||||
while (( $# > 0 )); do
|
||||
for i in ${1}/*${suffix}; do
|
||||
[[ -f $i ]] && echo ${i##*/}
|
||||
done
|
||||
shift
|
||||
done | sort -Vu
|
||||
)
|
||||
local suffix=$1; shift
|
||||
local -a files
|
||||
local f d
|
||||
|
||||
for f in $files; do
|
||||
for d in "${args[@]}"; do
|
||||
if [[ -f "$d/$f" ]]; then
|
||||
echo "$d/$f"
|
||||
continue 2
|
||||
for d in "$@"; do
|
||||
for i in "$d/"*"$suffix"; do
|
||||
if [[ -e "$i" ]]; then
|
||||
printf "%s\n" "${i##*/}"
|
||||
fi
|
||||
done
|
||||
done
|
||||
done | sort -Vu | {
|
||||
readarray -t files
|
||||
|
||||
for f in "${files[@]}"; do
|
||||
for d in "$@"; do
|
||||
if [[ -e "$d/$f" ]]; then
|
||||
printf "%s\n" "$d/$f"
|
||||
continue 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
}
|
||||
}
|
||||
|
||||
verbosity_mod_l=0
|
||||
@@ -376,6 +380,8 @@ while :; do
|
||||
-f|--force) force=yes;;
|
||||
--kernel-only) kernel_only="yes"; no_kernel="no";;
|
||||
--no-kernel) kernel_only="no"; no_kernel="yes";;
|
||||
--early-microcode) early_microcode="yes";;
|
||||
--no-early-microcode) early_microcode="no";;
|
||||
--strip) do_strip_l="yes";;
|
||||
--nostrip) do_strip_l="no";;
|
||||
--hardlink) do_hardlink_l="yes";;
|
||||
@@ -392,8 +398,8 @@ while :; do
|
||||
-q|--quiet) ((verbosity_mod_l--));;
|
||||
-l|--local)
|
||||
allowlocal="yes"
|
||||
[[ -f "$(readlink -f ${0%/*})/dracut-functions.sh" ]] \
|
||||
&& dracutbasedir="$(readlink -f ${0%/*})"
|
||||
[[ -f "$(readlink -f "${0%/*}")/dracut-functions.sh" ]] \
|
||||
&& dracutbasedir="$(readlink -f "${0%/*}")"
|
||||
;;
|
||||
-H|--hostonly|--host-only)
|
||||
hostonly_l="yes" ;;
|
||||
@@ -450,12 +456,12 @@ done
|
||||
if [[ $regenerate_all == "yes" ]]; then
|
||||
ret=0
|
||||
if [[ $kernel ]]; then
|
||||
echo "--regenerate-all cannot be called with a kernel version" >&2
|
||||
printf -- "--regenerate-all cannot be called with a kernel version\n" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ $outfile ]]; then
|
||||
echo "--regenerate-all cannot be called with a image file" >&2
|
||||
printf -- "--regenerate-all cannot be called with a image file\n" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -468,7 +474,7 @@ if [[ $regenerate_all == "yes" ]]; then
|
||||
cd /lib/modules
|
||||
for i in *; do
|
||||
[[ -f $i/modules.builtin ]] || continue
|
||||
dracut --kver=$i "${dracut_args[@]}"
|
||||
dracut --kver="$i" "${dracut_args[@]}"
|
||||
((ret+=$?))
|
||||
done
|
||||
exit $ret
|
||||
@@ -498,6 +504,10 @@ for i in /usr/sbin /sbin /usr/bin /bin; do
|
||||
fi
|
||||
done
|
||||
export PATH="${NPATH#:}"
|
||||
unset LC_MESSAGES
|
||||
unset LC_CTYPE
|
||||
export LC_ALL=C
|
||||
export LANG=C
|
||||
unset NPATH
|
||||
unset LD_LIBRARY_PATH
|
||||
unset GREP_OPTIONS
|
||||
@@ -519,13 +529,19 @@ export DRACUT_LOG_LEVEL=warning
|
||||
|
||||
# if we were not passed a config file, try the default one
|
||||
if [[ ! -f $conffile ]]; then
|
||||
[[ $allowlocal ]] && conffile="$dracutbasedir/dracut.conf" || \
|
||||
if [[ $allowlocal ]]; then
|
||||
conffile="$dracutbasedir/dracut.conf"
|
||||
else
|
||||
conffile="/etc/dracut.conf"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ ! -d $confdir ]]; then
|
||||
[[ $allowlocal ]] && confdir="$dracutbasedir/dracut.conf.d" || \
|
||||
if [[ $allowlocal ]]; then
|
||||
confdir="$dracutbasedir/dracut.conf.d"
|
||||
else
|
||||
confdir="/etc/dracut.conf.d"
|
||||
fi
|
||||
fi
|
||||
|
||||
# source our config file
|
||||
@@ -643,8 +659,7 @@ case $compress in
|
||||
bzip2) compress="bzip2 -9";;
|
||||
lzma) compress="lzma -9";;
|
||||
xz) compress="xz --check=crc32 --lzma2=dict=1MiB";;
|
||||
gzip) command -v pigz > /dev/null 2>&1 && compress="pigz -9" || \
|
||||
compress="gzip -9";;
|
||||
gzip) compress="gzip -9"; command -v pigz > /dev/null 2>&1 && compress="pigz -9";;
|
||||
esac
|
||||
if [[ $_no_compress_l = "cat" ]]; then
|
||||
compress="cat"
|
||||
@@ -654,14 +669,29 @@ fi
|
||||
[[ $hostonly != "-h" ]] && unset hostonly
|
||||
|
||||
readonly TMPDIR="$tmpdir"
|
||||
readonly initdir=$(mktemp --tmpdir="$TMPDIR/" -d -t initramfs.XXXXXX)
|
||||
readonly initdir="$(mktemp --tmpdir="$TMPDIR/" -d -t initramfs.XXXXXX)"
|
||||
[ -d "$initdir" ] || {
|
||||
echo "dracut: mktemp --tmpdir=\"$TMPDIR/\" -d -t initramfs.XXXXXX failed." >&2
|
||||
printf "%s\n" "dracut: mktemp --tmpdir=\"$TMPDIR/\" -d -t initramfs.XXXXXX failed." >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [[ $early_microcode = yes ]]; then
|
||||
readonly microcode_dir="$(mktemp --tmpdir="$TMPDIR/" -d -t early_microcode.XXXXXX)"
|
||||
[ -d "$microcode_dir" ] || {
|
||||
printf "%s\n" "dracut: mktemp --tmpdir=\"$TMPDIR/\" -d -t early_microcode.XXXXXX failed." >&2
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
# clean up after ourselves no matter how we die.
|
||||
trap 'ret=$?;[[ $outfile ]] && [[ -f $outfile.$$ ]] && rm -f "$outfile.$$";[[ $keep ]] && echo "Not removing $initdir." >&2 || { [[ $initdir ]] && rm -rf "$initdir";exit $ret; };' EXIT
|
||||
trap '
|
||||
ret=$?;
|
||||
[[ $outfile ]] && [[ -f $outfile.$$ ]] && rm -f -- "$outfile.$$";
|
||||
[[ $keep ]] && echo "Not removing $initdir." >&2 || { [[ $initdir ]] && rm -rf -- "$initdir"; };
|
||||
[[ $keep ]] && echo "Not removing $microcode_dir." >&2 || { [[ $microcode_dir ]] && rm -Rf -- "$microcode_dir"; };
|
||||
[[ $_dlogdir ]] && rm -Rf -- "$_dlogdir";
|
||||
exit $ret;
|
||||
' EXIT
|
||||
|
||||
# clean up after ourselves no matter how we die.
|
||||
trap 'exit 1;' SIGINT
|
||||
|
||||
@@ -671,9 +701,9 @@ export DRACUT_RESOLVE_LAZY="1"
|
||||
if [[ -f $dracutbasedir/dracut-functions.sh ]]; then
|
||||
. $dracutbasedir/dracut-functions.sh
|
||||
else
|
||||
echo "dracut: Cannot find $dracutbasedir/dracut-functions.sh." >&2
|
||||
echo "dracut: Are you running from a git checkout?" >&2
|
||||
echo "dracut: Try passing -l as an argument to $0" >&2
|
||||
printf "%s\n" "dracut: Cannot find $dracutbasedir/dracut-functions.sh." >&2
|
||||
printf "%s\n" "dracut: Are you running from a git checkout?" >&2
|
||||
printf "%s\n" "dracut: Try passing -l as an argument to $0" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -682,16 +712,15 @@ if ! $DRACUT_INSTALL ${initdir+-D "$initdir"} -R "$initdir/bin/sh" &>/dev/null;
|
||||
unset DRACUT_RESOLVE_LAZY
|
||||
export DRACUT_RESOLVE_DEPS=1
|
||||
fi
|
||||
rm -fr ${initdir}/*
|
||||
rm -fr -- ${initdir}/*
|
||||
|
||||
if [[ -f $dracutbasedir/dracut-version.sh ]]; then
|
||||
. $dracutbasedir/dracut-version.sh
|
||||
fi
|
||||
|
||||
# Verify bash version, current minimum is 3.1
|
||||
if (( ${BASH_VERSINFO[0]} < 3 ||
|
||||
( ${BASH_VERSINFO[0]} == 3 && ${BASH_VERSINFO[1]} < 1 ) )); then
|
||||
dfatal 'You need at least Bash 3.1 to use dracut, sorry.'
|
||||
if (( BASH_VERSINFO[0] < 4 )); then
|
||||
dfatal 'You need at least Bash 4 to use dracut, sorry.'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -728,7 +757,7 @@ fi
|
||||
|
||||
omit_drivers_corrected=""
|
||||
for d in $omit_drivers; do
|
||||
strstr " $drivers $add_drivers " " $d " && continue
|
||||
[[ " $drivers $add_drivers " == *\ $d\ * ]] && continue
|
||||
omit_drivers_corrected+="$d|"
|
||||
done
|
||||
omit_drivers="${omit_drivers_corrected%|}"
|
||||
@@ -736,18 +765,18 @@ unset omit_drivers_corrected
|
||||
|
||||
# prepare args for logging
|
||||
for ((i=0; i < ${#dracut_args[@]}; i++)); do
|
||||
strstr "${dracut_args[$i]}" " " && \
|
||||
[[ "${dracut_args[$i]}" == *\ * ]] && \
|
||||
dracut_args[$i]="\"${dracut_args[$i]}\""
|
||||
#" keep vim happy
|
||||
done
|
||||
ddebug "Executing: $0 ${dracut_args[@]}"
|
||||
dinfo "Executing: $0 ${dracut_args[@]}"
|
||||
|
||||
[[ $do_list = yes ]] && {
|
||||
for mod in $dracutbasedir/modules.d/*; do
|
||||
[[ -d $mod ]] || continue;
|
||||
[[ -e $mod/install || -e $mod/installkernel || \
|
||||
-e $mod/module-setup.sh ]] || continue
|
||||
echo ${mod##*/??}
|
||||
printf "%s\n" "${mod##*/??}"
|
||||
done
|
||||
exit 0
|
||||
}
|
||||
@@ -789,7 +818,7 @@ chmod 755 "$initdir"
|
||||
|
||||
if [[ $hostonly ]]; then
|
||||
for i in /sys /proc /run /dev; do
|
||||
if ! findmnt "$i" &>/dev/null; then
|
||||
if ! findmnt --target "$i" &>/dev/null; then
|
||||
dwarning "Turning off host-only mode: '$i' is not mounted!"
|
||||
unset hostonly
|
||||
fi
|
||||
@@ -810,22 +839,23 @@ for line in "${fstab_lines[@]}"; do
|
||||
done
|
||||
|
||||
for f in $add_fstab; do
|
||||
[ -e $f ] || continue
|
||||
[[ -e $f ]] || continue
|
||||
while read dev rest; do
|
||||
push host_devs $dev
|
||||
done < $f
|
||||
push host_devs "$dev"
|
||||
done < "$f"
|
||||
done
|
||||
|
||||
for dev in $add_device; do
|
||||
push host_devs "$dev"
|
||||
done
|
||||
|
||||
if (( ${#add_device_l[@]} )); then
|
||||
while pop add_device_l val; do
|
||||
add_device+=" $val "
|
||||
push host_devs "$val"
|
||||
done
|
||||
fi
|
||||
|
||||
for dev in $add_device; do
|
||||
push host_devs $dev
|
||||
done
|
||||
|
||||
if [[ $hostonly ]]; then
|
||||
# in hostonly mode, determine all devices, which have to be accessed
|
||||
# and examine them for filesystem types
|
||||
@@ -833,71 +863,74 @@ if [[ $hostonly ]]; then
|
||||
for mp in \
|
||||
"/" \
|
||||
"/etc" \
|
||||
"/usr" \
|
||||
"/usr/bin" \
|
||||
"/usr/sbin" \
|
||||
"/usr/lib" \
|
||||
"/usr/lib64" \
|
||||
"/bin" \
|
||||
"/sbin" \
|
||||
"/lib" \
|
||||
"/lib64" \
|
||||
"/boot";
|
||||
do
|
||||
mp=$(readlink -f "$mp")
|
||||
mountpoint "$mp" >/dev/null 2>&1 || continue
|
||||
push host_devs $(readlink -f "/dev/block/$(find_block_device "$mp")")
|
||||
_dev="$(readlink -f "/dev/block/$(find_block_device "$mp")")"
|
||||
[[ "$_mp" == "/" ]] && root_dev="$_dev"
|
||||
push host_devs "$_dev"
|
||||
done
|
||||
|
||||
while read dev type rest; do
|
||||
[[ -b $dev ]] || continue
|
||||
[[ "$type" == "partition" ]] || continue
|
||||
while read _d _m _t _o _r; do
|
||||
[[ "$_d" == \#* ]] && continue
|
||||
[[ $_d ]] || continue
|
||||
[[ $_t != "swap" ]] || [[ $_m != "swap" ]] && continue
|
||||
[[ "$_o" == *noauto* ]] && continue
|
||||
[[ "$_d" == UUID\=* ]] && _d="/dev/disk/by-uuid/${_d#UUID=}"
|
||||
[[ "$_d" == LABEL\=* ]] && _d="/dev/disk/by-label/$_d#LABEL=}"
|
||||
[[ "$_d" -ef "$dev" ]] || continue
|
||||
if [[ -f /proc/swaps ]] && [[ -f /etc/fstab ]]; then
|
||||
while read dev type rest; do
|
||||
[[ -b $dev ]] || continue
|
||||
[[ "$type" == "partition" ]] || continue
|
||||
|
||||
while read _mapper _a _p _o; do
|
||||
[[ $_mapper = \#* ]] && continue
|
||||
[[ "$_d" -ef /dev/mapper/"$_mapper" ]] || continue
|
||||
[[ "$_o" ]] || _o="$_p"
|
||||
while read _d _m _t _o _r; do
|
||||
[[ "$_d" == \#* ]] && continue
|
||||
[[ $_d ]] || continue
|
||||
[[ $_t != "swap" ]] || [[ $_m != "swap" ]] && continue
|
||||
[[ "$_o" == *noauto* ]] && continue
|
||||
[[ "$_d" == UUID\=* ]] && _d="/dev/disk/by-uuid/${_d#UUID=}"
|
||||
[[ "$_d" == LABEL\=* ]] && _d="/dev/disk/by-label/$_d#LABEL=}"
|
||||
[[ "$_d" -ef "$dev" ]] || continue
|
||||
|
||||
if [[ -f /etc/crypttab ]]; then
|
||||
while read _mapper _a _p _o; do
|
||||
[[ $_mapper = \#* ]] && continue
|
||||
[[ "$_d" -ef /dev/mapper/"$_mapper" ]] || continue
|
||||
[[ "$_o" ]] || _o="$_p"
|
||||
# skip mkswap swap
|
||||
[[ $_o == *swap* ]] && continue 2
|
||||
done < /etc/crypttab
|
||||
[[ $_o == *swap* ]] && continue 2
|
||||
done < /etc/crypttab
|
||||
fi
|
||||
|
||||
push host_devs $(readlink -f $dev)
|
||||
break
|
||||
done < /etc/fstab
|
||||
done < /proc/swaps
|
||||
push host_devs "$(readlink -f "$dev")"
|
||||
break
|
||||
done < /etc/fstab
|
||||
done < /proc/swaps
|
||||
fi
|
||||
fi
|
||||
|
||||
_get_fs_type() (
|
||||
_get_fs_type() {
|
||||
[[ $1 ]] || return
|
||||
if [[ -b $1 ]] && get_fs_env $1; then
|
||||
echo "$(readlink -f $1) $ID_FS_TYPE"
|
||||
if [[ -b /dev/block/$1 ]] && ID_FS_TYPE=$(get_fs_env "/dev/block/$1"); then
|
||||
host_fs_types["$(readlink -f "/dev/block/$1")"]="$ID_FS_TYPE"
|
||||
return 1
|
||||
fi
|
||||
if [[ -b /dev/block/$1 ]] && get_fs_env /dev/block/$1; then
|
||||
echo "$(readlink -f /dev/block/$1) $ID_FS_TYPE"
|
||||
if [[ -b $1 ]] && ID_FS_TYPE=$(get_fs_env "$1"); then
|
||||
host_fs_types["$(readlink -f "$1")"]="$ID_FS_TYPE"
|
||||
return 1
|
||||
fi
|
||||
if fstype=$(find_dev_fstype $1); then
|
||||
echo "$1 $fstype"
|
||||
if fstype=$(find_dev_fstype "$1"); then
|
||||
host_fs_types["$1"]="$fstype"
|
||||
return 1
|
||||
fi
|
||||
return 1
|
||||
)
|
||||
}
|
||||
|
||||
for dev in "${host_devs[@]}"; do
|
||||
while read key val; do
|
||||
host_fs_types["$key"]="$val"
|
||||
done < <(
|
||||
_get_fs_type $dev
|
||||
check_block_and_slaves_all _get_fs_type $(get_maj_min $dev)
|
||||
)
|
||||
for dev in ${host_devs[@]}; do
|
||||
_get_fs_type "$dev"
|
||||
check_block_and_slaves_all _get_fs_type "$(get_maj_min "$dev")"
|
||||
done
|
||||
|
||||
[[ -d $udevdir ]] \
|
||||
|| udevdir=$(pkg-config udev --variable=udevdir 2>/dev/null)
|
||||
|| udevdir="$(pkg-config udev --variable=udevdir 2>/dev/null)"
|
||||
if ! [[ -d "$udevdir" ]]; then
|
||||
[[ -d /lib/udev ]] && udevdir=/lib/udev
|
||||
[[ -d /usr/lib/udev ]] && udevdir=/usr/lib/udev
|
||||
@@ -923,7 +956,7 @@ fi
|
||||
|
||||
export initdir dracutbasedir dracutmodules \
|
||||
fw_dir drivers_dir debug no_kernel kernel_only \
|
||||
omit_drivers mdadmconf lvmconf \
|
||||
omit_drivers mdadmconf lvmconf root_dev \
|
||||
use_fstab fstab_lines libdirs fscks nofscks ro_mnt \
|
||||
stdloglvl sysloglvl fileloglvl kmsgloglvl logfile \
|
||||
debug host_fs_types host_devs sshkey add_fstab \
|
||||
@@ -938,7 +971,7 @@ export initdir dracutbasedir dracutmodules \
|
||||
|
||||
if [[ $prefix ]]; then
|
||||
for d in bin etc lib sbin tmp usr var $libdirs; do
|
||||
strstr "$d" "/" && continue
|
||||
[[ "$d" == */* ]] && continue
|
||||
ln -sfn "${prefix#/}/${d#/}" "$initdir/$d"
|
||||
done
|
||||
fi
|
||||
@@ -993,25 +1026,28 @@ mods_to_load=""
|
||||
for_each_module_dir check_module
|
||||
for_each_module_dir check_mount
|
||||
|
||||
strstr "$mods_to_load" "fips" && export DRACUT_FIPS_MODE=1
|
||||
[[ "$mods_to_load " == *01fips\ * ]] && export DRACUT_FIPS_MODE=1
|
||||
|
||||
_isize=0 #initramfs size
|
||||
modules_loaded=" "
|
||||
# source our modules.
|
||||
for moddir in "$dracutbasedir/modules.d"/[0-9][0-9]*; do
|
||||
_d_mod=${moddir##*/}; _d_mod=${_d_mod#[0-9][0-9]}
|
||||
if strstr "$mods_to_load" " $_d_mod "; then
|
||||
[[ $show_modules = yes ]] && echo "$_d_mod" || \
|
||||
if [[ "$mods_to_load" == *\ $_d_mod\ * ]]; then
|
||||
if [[ $show_modules = yes ]]; then
|
||||
printf "%s\n" "$_d_mod"
|
||||
else
|
||||
dinfo "*** Including module: $_d_mod ***"
|
||||
if [[ $kernel_only = yes ]]; then
|
||||
module_installkernel $_d_mod || {
|
||||
fi
|
||||
if [[ $kernel_only == yes ]]; then
|
||||
module_installkernel "$_d_mod" || {
|
||||
dfatal "installkernel failed in module $_d_mod"
|
||||
exit 1
|
||||
}
|
||||
else
|
||||
module_install $_d_mod
|
||||
module_install "$_d_mod"
|
||||
if [[ $no_kernel != yes ]]; then
|
||||
module_installkernel $_d_mod || {
|
||||
module_installkernel "$_d_mod" || {
|
||||
dfatal "installkernel failed in module $_d_mod"
|
||||
exit 1
|
||||
}
|
||||
@@ -1023,8 +1059,8 @@ for moddir in "$dracutbasedir/modules.d"/[0-9][0-9]*; do
|
||||
#print the module install size
|
||||
if [ -n "$printsize" ]; then
|
||||
_isize_new=$(du -sk ${initdir}|cut -f1)
|
||||
_isize_delta=$(($_isize_new - $_isize))
|
||||
echo "$_d_mod install size: ${_isize_delta}k"
|
||||
_isize_delta=$((_isize_new - _isize))
|
||||
printf "%s\n" "$_d_mod install size: ${_isize_delta}k"
|
||||
_isize=$_isize_new
|
||||
fi
|
||||
fi
|
||||
@@ -1033,7 +1069,7 @@ unset moddir
|
||||
|
||||
for i in $modules_loaded; do
|
||||
mkdir -p $initdir/lib/dracut
|
||||
echo "$i" >> $initdir/lib/dracut/modules.txt
|
||||
printf "%s\n" "$i" >> $initdir/lib/dracut/modules.txt
|
||||
done
|
||||
|
||||
dinfo "*** Including modules done ***"
|
||||
@@ -1068,24 +1104,24 @@ if [[ $no_kernel != yes ]]; then
|
||||
fi
|
||||
|
||||
if [[ $kernel_only != yes ]]; then
|
||||
(( ${#install_items[@]} > 0 )) && dracut_install ${install_items[@]}
|
||||
(( ${#install_items[@]} > 0 )) && dracut_install ${install_items[@]}
|
||||
|
||||
[[ $kernel_cmdline ]] && echo "$kernel_cmdline" >> "${initdir}/etc/cmdline.d/01-default.conf"
|
||||
[[ $kernel_cmdline ]] && printf "%s\n" "$kernel_cmdline" >> "${initdir}/etc/cmdline.d/01-default.conf"
|
||||
|
||||
while pop fstab_lines line; do
|
||||
echo "$line 0 0" >> "${initdir}/etc/fstab"
|
||||
printf "%s\n" "$line 0 0" >> "${initdir}/etc/fstab"
|
||||
done
|
||||
|
||||
for f in $add_fstab; do
|
||||
cat $f >> "${initdir}/etc/fstab"
|
||||
cat "$f" >> "${initdir}/etc/fstab"
|
||||
done
|
||||
|
||||
if [ -d ${initdir}/$systemdutildir ]; then
|
||||
mkdir -p ${initdir}/etc/conf.d
|
||||
{
|
||||
echo "systemdutildir=\"$systemdutildir\""
|
||||
echo "systemdsystemunitdir=\"$systemdsystemunitdir\""
|
||||
echo "systemdsystemconfdir=\"$systemdsystemconfdir\""
|
||||
printf "%s\n" "systemdutildir=\"$systemdutildir\""
|
||||
printf "%s\n" "systemdsystemunitdir=\"$systemdsystemunitdir\""
|
||||
printf "%s\n" "systemdsystemconfdir=\"$systemdsystemconfdir\""
|
||||
} > ${initdir}/etc/conf.d/systemd.conf
|
||||
fi
|
||||
|
||||
@@ -1094,7 +1130,7 @@ if [[ $kernel_only != yes ]]; then
|
||||
find "$initdir" -type f \
|
||||
'(' -perm -0100 -or -perm -0010 -or -perm -0001 ')' \
|
||||
-not -path '*.ko' -print0 \
|
||||
| xargs -r -0 $DRACUT_INSTALL ${initdir+-D "$initdir"} -R ${DRACUT_FIPS_MODE+-H}
|
||||
| xargs -r -0 $DRACUT_INSTALL ${initdir+-D "$initdir"} -R ${DRACUT_FIPS_MODE+-H} --
|
||||
dinfo "*** Resolving executable dependencies done***"
|
||||
fi
|
||||
fi
|
||||
@@ -1139,12 +1175,7 @@ if [[ $kernel_only != yes ]]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if (($maxloglvl >= 5)); then
|
||||
ddebug "Listing sizes of included files:"
|
||||
du -c "$initdir" | sort -n | ddebug
|
||||
fi
|
||||
|
||||
PRELINK_BIN=$(command -v prelink)
|
||||
PRELINK_BIN="$(command -v prelink)"
|
||||
if [[ $UID = 0 ]] && [[ $PRELINK_BIN ]]; then
|
||||
if [[ $DRACUT_FIPS_MODE ]]; then
|
||||
dinfo "*** Installing prelink files ***"
|
||||
@@ -1152,9 +1183,9 @@ if [[ $UID = 0 ]] && [[ $PRELINK_BIN ]]; then
|
||||
else
|
||||
dinfo "*** Pre-linking files ***"
|
||||
dracut_install -o prelink /etc/prelink.conf /etc/prelink.conf.d/*.conf
|
||||
chroot "$initdir" $PRELINK_BIN -a
|
||||
rm -f "$initdir"/$PRELINK_BIN
|
||||
rm -fr "$initdir"/etc/prelink.*
|
||||
chroot "$initdir" "$PRELINK_BIN" -a
|
||||
rm -f -- "$initdir/$PRELINK_BIN"
|
||||
rm -fr -- "$initdir"/etc/prelink.*
|
||||
dinfo "*** Pre-linking files done ***"
|
||||
fi
|
||||
fi
|
||||
@@ -1186,7 +1217,7 @@ if [[ $do_strip = yes ]] ; then
|
||||
&& ! [[ -e "/lib64/hmaccalc/${f##*/}.hmac" ]] \
|
||||
&& ! [[ -e "/lib/fipscheck/${f##*/}.hmac" ]] \
|
||||
&& ! [[ -e "/lib64/fipscheck/${f##*/}.hmac" ]]; then
|
||||
echo -n "$f"; echo -n -e "\000"
|
||||
printf "%s\000" "$f";
|
||||
fi
|
||||
done | xargs -r -0 strip -g 2>/dev/null
|
||||
else
|
||||
@@ -1199,23 +1230,54 @@ if [[ $do_strip = yes ]] ; then
|
||||
find "$initdir" -type f -path '*/lib/modules/*.ko' -print0 \
|
||||
| while read -r -d $'\0' f; do
|
||||
SIG=$(tail -c 28 "$f")
|
||||
[[ $SIG == '~Module signature appended~' ]] || { echo -n "$f"; echo -n -e "\000"; }
|
||||
[[ $SIG == '~Module signature appended~' ]] || { printf "%s\000" "$f"; }
|
||||
done | xargs -r -0 strip -g
|
||||
|
||||
dinfo "*** Stripping files done ***"
|
||||
fi
|
||||
if [[ $early_microcode = yes ]]; then
|
||||
dinfo "*** Generating early-microcode cpio image ***"
|
||||
ucode_dir=(amd-ucode intel-ucode)
|
||||
ucode_dest=(AuthenticAMD.bin GenuineIntel.bin)
|
||||
_dest_dir="$microcode_dir/d/kernel/x86/microcode"
|
||||
_dest_idx="0 1"
|
||||
mkdir -p $_dest_dir
|
||||
if [[ $hostonly ]]; then
|
||||
[[ $(get_cpu_vendor) == "AMD" ]] && _dest_idx="0"
|
||||
[[ $(get_cpu_vendor) == "Intel" ]] && _dest_idx="1"
|
||||
fi
|
||||
for idx in $_dest_idx; do
|
||||
_fw=${ucode_dir[$idx]}
|
||||
for _fwdir in $fw_dir; do
|
||||
if [[ -d $_fwdir && -d $_fwdir/$_fw ]]; then
|
||||
_src="*"
|
||||
dinfo "*** Constructing ${ucode_dest[$idx]} ****"
|
||||
if [[ $hostonly ]]; then
|
||||
_src=$(get_ucode_file)
|
||||
fi
|
||||
cat $_fwdir/$_fw/$_src > $_dest_dir/${ucode_dest[$idx]}
|
||||
fi
|
||||
done
|
||||
done
|
||||
(cd "$microcode_dir/d"; find . | cpio -o -H newc --quiet >../ucode.cpio)
|
||||
fi
|
||||
|
||||
rm -f "$outfile"
|
||||
rm -f -- "$outfile"
|
||||
dinfo "*** Creating image file ***"
|
||||
if [[ $early_microcode = yes ]]; then
|
||||
# The microcode blob is _before_ the initramfs blob, not after
|
||||
mv $microcode_dir/ucode.cpio $outfile.$$
|
||||
fi
|
||||
if ! ( umask 077; cd "$initdir"; find . |cpio -R 0:0 -H newc -o --quiet| \
|
||||
$compress > "$outfile.$$"; ); then
|
||||
$compress >> "$outfile.$$"; ); then
|
||||
dfatal "dracut: creation of $outfile.$$ failed"
|
||||
exit 1
|
||||
fi
|
||||
mv $outfile.$$ $outfile
|
||||
mv -- "$outfile.$$" "$outfile"
|
||||
dinfo "*** Creating image file done ***"
|
||||
|
||||
dinfo "Wrote $outfile:"
|
||||
dinfo "$(ls -l "$outfile")"
|
||||
if (( maxloglvl >= 5 )); then
|
||||
lsinitrd "$outfile"| ddebug
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
70
dracut.spec
70
dracut.spec
@@ -76,6 +76,10 @@ Provides: mkinitrd = 2.6.1
|
||||
Obsoletes: dracut-kernel < 005
|
||||
Provides: dracut-kernel = %{version}-%{release}
|
||||
|
||||
Obsoletes: dracut <= 029
|
||||
Obsoletes: dracut-norescue
|
||||
Provides: dracut-norescue
|
||||
|
||||
Requires: bash >= 4
|
||||
Requires: coreutils
|
||||
Requires: cpio
|
||||
@@ -91,6 +95,7 @@ Requires: kpartx
|
||||
%if 0%{?fedora} || 0%{?rhel} > 6
|
||||
Requires: util-linux >= 2.21
|
||||
Requires: systemd >= 199
|
||||
Requires: procps-ng
|
||||
Conflicts: grubby < 8.23
|
||||
%else
|
||||
Requires: udev > 166
|
||||
@@ -158,20 +163,23 @@ Requires: libcap
|
||||
This package requires everything which is needed to build an
|
||||
initramfs with dracut, which drops capabilities.
|
||||
|
||||
%package nohostonly
|
||||
%package config-generic
|
||||
Summary: dracut configuration to turn off hostonly image generation
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Obsoletes: dracut-nohostonly
|
||||
Provides: dracut-nohostonly
|
||||
|
||||
%description nohostonly
|
||||
%description config-generic
|
||||
This package provides the configuration to turn off the host specific initramfs
|
||||
generation with dracut.
|
||||
generation with dracut and generates a generic image by default.
|
||||
|
||||
%package norescue
|
||||
Summary: dracut configuration to turn off rescue image generation
|
||||
%package config-rescue
|
||||
Summary: dracut configuration to turn on rescue image generation
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Obsoletes: dracut <= 029
|
||||
|
||||
%description norescue
|
||||
This package provides the configuration to turn off the rescue initramfs
|
||||
%description config-rescue
|
||||
This package provides the configuration to turn on the rescue initramfs
|
||||
generation with dracut.
|
||||
|
||||
%package tools
|
||||
@@ -202,7 +210,7 @@ make %{?_smp_mflags}
|
||||
|
||||
%install
|
||||
%if 0%{?fedora} || 0%{?rhel}
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
rm -rf -- $RPM_BUILD_ROOT
|
||||
%endif
|
||||
make %{?_smp_mflags} install \
|
||||
DESTDIR=$RPM_BUILD_ROOT \
|
||||
@@ -211,26 +219,26 @@ make %{?_smp_mflags} install \
|
||||
echo "DRACUT_VERSION=%{version}-%{release}" > $RPM_BUILD_ROOT/%{dracutlibdir}/dracut-version.sh
|
||||
|
||||
%if 0%{?fedora} == 0 && 0%{?rhel} == 0 && 0%{?suse_version} == 0
|
||||
rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/01fips
|
||||
rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/02fips-aesni
|
||||
rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/01fips
|
||||
rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/02fips-aesni
|
||||
%endif
|
||||
|
||||
%if %{defined _unitdir}
|
||||
# for systemd, better use systemd-bootchart
|
||||
rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/00bootchart
|
||||
rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/00bootchart
|
||||
%endif
|
||||
|
||||
# we do not support dash in the initramfs
|
||||
rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/00dash
|
||||
rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/00dash
|
||||
|
||||
# remove gentoo specific modules
|
||||
rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/50gensplash
|
||||
rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/50gensplash
|
||||
|
||||
%if %{defined _unitdir}
|
||||
# with systemd IMA and selinux modules do not make sense
|
||||
rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/96securityfs
|
||||
rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/97masterkey
|
||||
rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/98integrity
|
||||
rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/96securityfs
|
||||
rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/97masterkey
|
||||
rm -fr -- $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/98integrity
|
||||
%endif
|
||||
|
||||
mkdir -p $RPM_BUILD_ROOT/boot/dracut
|
||||
@@ -249,8 +257,8 @@ install -m 0644 dracut.conf.d/suse.conf.example $RPM_BUILD_ROOT%{dracutlibdir}
|
||||
%endif
|
||||
|
||||
%if 0%{?fedora} <= 12 && 0%{?rhel} < 6 && 0%{?suse_version} <= 9999
|
||||
rm $RPM_BUILD_ROOT%{_bindir}/mkinitrd
|
||||
rm $RPM_BUILD_ROOT%{_bindir}/lsinitrd
|
||||
rm -f -- $RPM_BUILD_ROOT%{_bindir}/mkinitrd
|
||||
rm -f -- $RPM_BUILD_ROOT%{_bindir}/lsinitrd
|
||||
%endif
|
||||
|
||||
%if 0%{?fedora} || 0%{?rhel} > 6
|
||||
@@ -258,19 +266,16 @@ rm $RPM_BUILD_ROOT%{_bindir}/lsinitrd
|
||||
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/kernel/postinst.d
|
||||
install -m 0755 51-dracut-rescue-postinst.sh $RPM_BUILD_ROOT%{_sysconfdir}/kernel/postinst.d/51-dracut-rescue-postinst.sh
|
||||
|
||||
echo 'hostonly="no"' > $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/02-nohostonly.conf
|
||||
echo 'dracut_rescue_image="no"' > $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/02-norescue.conf
|
||||
echo 'hostonly="no"' > $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/02-generic-image.conf
|
||||
echo 'dracut_rescue_image="yes"' > $RPM_BUILD_ROOT%{dracutlibdir}/dracut.conf.d/02-rescue.conf
|
||||
%endif
|
||||
|
||||
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d
|
||||
install -m 0644 dracut.logrotate $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/dracut_log
|
||||
|
||||
# create compat symlink
|
||||
mkdir -p $RPM_BUILD_ROOT/sbin
|
||||
ln -s /usr/bin/dracut $RPM_BUILD_ROOT/sbin/dracut
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
rm -rf -- $RPM_BUILD_ROOT
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,0755)
|
||||
@@ -313,6 +318,7 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%else
|
||||
%{dracutlibdir}/modules.d/00bootchart
|
||||
%endif
|
||||
%{dracutlibdir}/modules.d/03modsign
|
||||
%{dracutlibdir}/modules.d/03rescue
|
||||
%{dracutlibdir}/modules.d/04watchdog
|
||||
%{dracutlibdir}/modules.d/05busybox
|
||||
@@ -322,6 +328,7 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{dracutlibdir}/modules.d/50drm
|
||||
%{dracutlibdir}/modules.d/50plymouth
|
||||
%{dracutlibdir}/modules.d/80cms
|
||||
%{dracutlibdir}/modules.d/90bcache
|
||||
%{dracutlibdir}/modules.d/90btrfs
|
||||
%{dracutlibdir}/modules.d/90crypt
|
||||
%{dracutlibdir}/modules.d/90dm
|
||||
@@ -360,7 +367,6 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{dracutlibdir}/modules.d/99fs-lib
|
||||
%{dracutlibdir}/modules.d/99img-lib
|
||||
%{dracutlibdir}/modules.d/99shutdown
|
||||
%config(noreplace) %{_sysconfdir}/logrotate.d/dracut_log
|
||||
%attr(0644,root,root) %ghost %config(missingok,noreplace) %{_localstatedir}/log/dracut.log
|
||||
%dir %{_sharedstatedir}/initramfs
|
||||
%if %{defined _unitdir}
|
||||
@@ -384,8 +390,6 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%endif
|
||||
%if 0%{?fedora} || 0%{?rhel} > 6
|
||||
%{_prefix}/lib/kernel/install.d/50-dracut.install
|
||||
%{_prefix}/lib/kernel/install.d/51-dracut-rescue.install
|
||||
%{_sysconfdir}/kernel/postinst.d/51-dracut-rescue-postinst.sh
|
||||
%endif
|
||||
|
||||
%files network
|
||||
@@ -426,12 +430,16 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%dir /var/lib/dracut
|
||||
%dir /var/lib/dracut/overlay
|
||||
|
||||
%files nohostonly
|
||||
%files config-generic
|
||||
%defattr(-,root,root,0755)
|
||||
%{dracutlibdir}/dracut.conf.d/02-nohostonly.conf
|
||||
%{dracutlibdir}/dracut.conf.d/02-generic-image.conf
|
||||
|
||||
%files norescue
|
||||
%files config-rescue
|
||||
%defattr(-,root,root,0755)
|
||||
%{dracutlibdir}/dracut.conf.d/02-norescue.conf
|
||||
%{dracutlibdir}/dracut.conf.d/02-rescue.conf
|
||||
%if 0%{?fedora} || 0%{?rhel} > 6
|
||||
%{_prefix}/lib/kernel/install.d/51-dracut-rescue.install
|
||||
%{_sysconfdir}/kernel/postinst.d/51-dracut-rescue-postinst.sh
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
|
10
lsinitrd.sh
10
lsinitrd.sh
@@ -126,7 +126,7 @@ if (( ${#filenames[@]} > 0 )); then
|
||||
for f in ${!filenames[@]}; do
|
||||
[[ $nofileinfo ]] || echo "initramfs:/$f"
|
||||
[[ $nofileinfo ]] || echo "========================================================================"
|
||||
$CAT $image | cpio --extract --verbose --quiet --to-stdout $f 2>/dev/null
|
||||
$CAT -- $image | cpio --extract --verbose --quiet --to-stdout $f 2>/dev/null
|
||||
((ret+=$?))
|
||||
[[ $nofileinfo ]] || echo "========================================================================"
|
||||
[[ $nofileinfo ]] || echo
|
||||
@@ -134,16 +134,16 @@ if (( ${#filenames[@]} > 0 )); then
|
||||
else
|
||||
echo "Image: $image: $(du -h $image | while read a b; do echo $a;done)"
|
||||
echo "========================================================================"
|
||||
version=$($CAT "$image" | cpio --extract --verbose --quiet --to-stdout '*lib/dracut/dracut-*' 2>/dev/null)
|
||||
version=$($CAT -- "$image" | cpio --extract --verbose --quiet --to-stdout -- '*lib/dracut/dracut-*' 2>/dev/null)
|
||||
((ret+=$?))
|
||||
echo "$version with dracut modules:"
|
||||
$CAT "$image" | cpio --extract --verbose --quiet --to-stdout 'usr/lib/dracut/modules.txt' 2>/dev/null
|
||||
$CAT -- "$image" | cpio --extract --verbose --quiet --to-stdout -- 'usr/lib/dracut/modules.txt' 2>/dev/null
|
||||
((ret+=$?))
|
||||
echo "========================================================================"
|
||||
if [ "$sorted" -eq 1 ]; then
|
||||
$CAT "$image" | cpio --extract --verbose --quiet --list | sort -n -k5
|
||||
$CAT -- "$image" | cpio --extract --verbose --quiet --list | sort -n -k5
|
||||
else
|
||||
$CAT "$image" | cpio --extract --verbose --quiet --list | sort -k9
|
||||
$CAT -- "$image" | cpio --extract --verbose --quiet --list | sort -k9
|
||||
fi
|
||||
((ret+=$?))
|
||||
echo "========================================================================"
|
||||
|
@@ -3,7 +3,7 @@
|
||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
|
||||
if ! fipsmode=$(getarg fips) || [ $fipsmode = "0" ]; then
|
||||
rm -f /etc/modprobe.d/fips.conf >/dev/null 2>&1
|
||||
rm -f -- /etc/modprobe.d/fips.conf >/dev/null 2>&1
|
||||
elif getarg boot= >/dev/null; then
|
||||
. /sbin/fips.sh
|
||||
if mount_boot; then
|
||||
|
@@ -3,7 +3,7 @@
|
||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
|
||||
if ! fipsmode=$(getarg fips) || [ $fipsmode = "0" ]; then
|
||||
rm -f /etc/modprobe.d/fips.conf >/dev/null 2>&1
|
||||
rm -f -- /etc/modprobe.d/fips.conf >/dev/null 2>&1
|
||||
elif ! [ -f /tmp/fipsdone ]; then
|
||||
. /sbin/fips.sh
|
||||
mount_boot
|
||||
|
@@ -15,6 +15,12 @@ mount_boot()
|
||||
UUID=*)
|
||||
boot="/dev/disk/by-uuid/${boot#UUID=}"
|
||||
;;
|
||||
PARTUUID=*)
|
||||
boot="/dev/disk/by-partuuid/${boot#PARTUUID=}"
|
||||
;;
|
||||
PARTLABEL=*)
|
||||
boot="/dev/disk/by-partlabel/${boot#PARTLABEL=}"
|
||||
;;
|
||||
/dev/*)
|
||||
;;
|
||||
*)
|
||||
@@ -44,13 +50,34 @@ mount_boot()
|
||||
info "Mounting $boot as /boot"
|
||||
mount -oro "$boot" /boot || return 1
|
||||
elif [ -d "$NEWROOT/boot" ]; then
|
||||
rm -fr /boot
|
||||
rm -fr -- /boot
|
||||
ln -sf "$NEWROOT/boot" /boot
|
||||
fi
|
||||
}
|
||||
|
||||
do_rhevh_check()
|
||||
{
|
||||
KERNEL=$(uname -r)
|
||||
kpath=${1}
|
||||
|
||||
# If we're on RHEV-H, the kernel is in /dev/.initramfs/live/vmlinuz0
|
||||
HMAC_SUM_ORIG=$(cat /boot/.vmlinuz-${KERNEL}.hmac | while read a b; do printf "%s\n" $a; done)
|
||||
HMAC_SUM_CALC=$(sha512hmac $kpath | while read a b; do printf "%s\n" $a; done || return 1)
|
||||
if [ -z "$HMAC_SUM_ORIG" ] || [ -z "$HMAC_SUM_CALC" ] || [ "${HMAC_SUM_ORIG}" != "${HMAC_SUM_CALC}" ]; then
|
||||
warn "HMAC sum mismatch"
|
||||
return 1
|
||||
fi
|
||||
info "rhevh_check OK"
|
||||
return 0
|
||||
}
|
||||
|
||||
do_fips()
|
||||
{
|
||||
local _v
|
||||
local _s
|
||||
local _v
|
||||
local _module
|
||||
|
||||
KERNEL=$(uname -r)
|
||||
|
||||
if ! [ -e "/boot/.vmlinuz-${KERNEL}.hmac" ]; then
|
||||
@@ -61,17 +88,37 @@ do_fips()
|
||||
FIPSMODULES=$(cat /etc/fipsmodules)
|
||||
|
||||
info "Loading and integrity checking all crypto modules"
|
||||
for module in $FIPSMODULES; do
|
||||
if [ "$module" != "tcrypt" ]; then
|
||||
modprobe ${module}
|
||||
mv /etc/modprobe.d/fips.conf /etc/modprobe.d/fips.conf.bak
|
||||
for _module in $FIPSMODULES; do
|
||||
if [ "$_module" != "tcrypt" ]; then
|
||||
if ! modprobe "${_module}"; then
|
||||
# check if kernel provides generic algo
|
||||
_found=0
|
||||
while read _k _s _v; do
|
||||
[ "$_k" != "name" -a "$_k" != "driver" ] && continue
|
||||
[ "$_k" = "driver" ] && _v=$(str_replace "$_v" "_" "-")
|
||||
[ "$_v" != "$_module" ] && continue
|
||||
_found=1
|
||||
break
|
||||
done </proc/crypto
|
||||
[ "$_found" = "0" ] && return 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
mv /etc/modprobe.d/fips.conf.bak /etc/modprobe.d/fips.conf
|
||||
|
||||
info "Self testing crypto algorithms"
|
||||
modprobe tcrypt || return 1
|
||||
rmmod tcrypt
|
||||
|
||||
info "Checking integrity of kernel"
|
||||
sha512hmac -c "/boot/.vmlinuz-${KERNEL}.hmac" || return 1
|
||||
if [ -e "$NEWROOT/dev/.initramfs/live/vmlinuz0" ]; then
|
||||
do_rhevh_check "$NEWROOT/dev/.initramfs/live/vmlinuz0" || return 1
|
||||
elif [ -e "$NEWROOT/dev/.initramfs/live/isolinux/vmlinuz0" ]; then
|
||||
do_rhevh_check "$NEWROOT/dev/.initramfs/live/isolinux/vmlinuz0" || return 1
|
||||
else
|
||||
sha512hmac -c "/boot/.vmlinuz-${KERNEL}.hmac" || return 1
|
||||
fi
|
||||
|
||||
info "All initrd crypto checks done"
|
||||
|
||||
|
13
modules.d/03modsign/load-modsign-keys.sh
Normal file
13
modules.d/03modsign/load-modsign-keys.sh
Normal file
@@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
|
||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
#
|
||||
# Licensed under the GPLv2
|
||||
#
|
||||
# Copyright 2013 Red Hat, Inc.
|
||||
# Peter Jones <pjones@redhat.com>
|
||||
|
||||
for x in /lib/modules/keys/* ; do
|
||||
[ "${x}" = "/lib/modules/keys/*" ] && break
|
||||
keyctl padd asymmetric "" @s < ${x}
|
||||
done
|
37
modules.d/03modsign/module-setup.sh
Normal file
37
modules.d/03modsign/module-setup.sh
Normal file
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
|
||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
#
|
||||
# Licensed under the GPLv2
|
||||
#
|
||||
# Copyright 2013 Red Hat, Inc.
|
||||
# Peter Jones <pjones@redhat.com>
|
||||
|
||||
check() {
|
||||
[[ -x /usr/bin/keyctl ]] || return 1
|
||||
|
||||
# do not include module in hostonly mode,
|
||||
# if no keys are present
|
||||
if [[ $hostonly ]]; then
|
||||
x=$(echo /lib/modules/keys/*)
|
||||
[[ "${x}" = "/lib/modules/keys/*" ]] && return 255
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
depends() {
|
||||
return 0
|
||||
}
|
||||
|
||||
install() {
|
||||
inst_dir /lib/modules/keys
|
||||
inst_binary /usr/bin/keyctl
|
||||
|
||||
inst_hook pre-trigger 01 "$moddir/load-modsign-keys.sh"
|
||||
|
||||
for x in /lib/modules/keys/* ; do
|
||||
[[ "${x}" = "/lib/modules/keys/*" ]] && break
|
||||
inst_simple "${x}"
|
||||
done
|
||||
}
|
@@ -12,6 +12,15 @@ depends() {
|
||||
}
|
||||
|
||||
install() {
|
||||
if dracut_module_included "systemd"; then
|
||||
[[ -f /etc/vconsole.conf ]] || return 0
|
||||
unset FONT
|
||||
unset KEYMAP
|
||||
. /etc/vconsole.conf
|
||||
# if vconsole.conf has no settings, do not include anything
|
||||
[[ $FONT ]] || [[ $KEYMAP ]] || return 0
|
||||
fi
|
||||
|
||||
dracut_install -o $systemdutildir/systemd-vconsole-setup
|
||||
KBDSUBDIRS=consolefonts,consoletrans,keymaps,unimaps
|
||||
DEFAULT_FONT="${i18n_default_font:-LatArCyrHeb-16}"
|
||||
@@ -102,7 +111,7 @@ install() {
|
||||
done
|
||||
|
||||
# remove unnecessary files
|
||||
rm -f "${initdir}${kbddir}/consoletrans/utflist"
|
||||
rm -f -- "${initdir}${kbddir}/consoletrans/utflist"
|
||||
find "${initdir}${kbddir}/" -name README\* -delete
|
||||
find "${initdir}${kbddir}/" -name '*.gz' -print -quit \
|
||||
| while read line; do
|
||||
@@ -212,12 +221,6 @@ install() {
|
||||
kbddir=''
|
||||
done
|
||||
|
||||
[[ ${kbddir} ]] || {
|
||||
derror "Directories ${KBDSUBDIRS//,/, } not found. Please" \
|
||||
"inform us about the issue including your OS name and version."
|
||||
return 1
|
||||
}
|
||||
|
||||
[[ -f $I18N_CONF && -f $VCONFIG_CONF ]] || \
|
||||
[[ ! ${hostonly} || ${i18n_vars} ]] || {
|
||||
derror 'i18n_vars not set! Please set up i18n_vars in ' \
|
||||
|
@@ -36,7 +36,7 @@ if [ -f /etc/locale.conf ]; then
|
||||
fi
|
||||
|
||||
if [ -n "$DRACUT_SYSTEMD" ]; then
|
||||
rm -f /etc/udev/rules.d/10-console.rules
|
||||
rm -f /lib/udev/rules.d/10-console.rules
|
||||
rm -f /lib/udev/console_init
|
||||
rm -f -- /etc/udev/rules.d/10-console.rules
|
||||
rm -f -- /lib/udev/rules.d/10-console.rules
|
||||
rm -f -- /lib/udev/console_init
|
||||
fi
|
||||
|
@@ -56,22 +56,22 @@ if ! needconvert; then
|
||||
fi
|
||||
|
||||
testfile="$ROOT/.usrmovecheck$$"
|
||||
rm -f "$testfile"
|
||||
rm -f -- "$testfile"
|
||||
> "$testfile"
|
||||
if [[ ! -e "$testfile" ]]; then
|
||||
echo "Cannot write to $ROOT/"
|
||||
exit 1
|
||||
fi
|
||||
rm -f "$testfile"
|
||||
rm -f -- "$testfile"
|
||||
|
||||
testfile="$ROOT/usr/.usrmovecheck$$"
|
||||
rm -f "$testfile"
|
||||
rm -f -- "$testfile"
|
||||
> "$testfile"
|
||||
if [[ ! -e "$testfile" ]]; then
|
||||
echo "Cannot write to $ROOT/usr/"
|
||||
exit 1
|
||||
fi
|
||||
rm -f "$testfile"
|
||||
rm -f -- "$testfile"
|
||||
|
||||
find_mount() {
|
||||
local dev mnt etc wanted_dev
|
||||
@@ -108,11 +108,11 @@ cleanup() {
|
||||
for dir in "$ROOT/bin" "$ROOT/sbin" "$ROOT/lib" "$ROOT/lib64" \
|
||||
"$ROOT/usr/bin" "$ROOT/usr/sbin" "$ROOT/usr/lib" \
|
||||
"$ROOT/usr/lib64"; do
|
||||
[[ -d "${dir}.usrmove-new" ]] && rm -fr "${dir}.usrmove-new"
|
||||
[[ -d "${dir}.usrmove-new" ]] && rm -fr -- "${dir}.usrmove-new"
|
||||
if [[ -d "${dir}.usrmove-old" ]]; then
|
||||
mv "$dir" "${dir}.del~"
|
||||
mv "${dir}.usrmove-old" "$dir"
|
||||
rm -fr "${dir}.del~"
|
||||
rm -fr -- "${dir}.del~"
|
||||
fi
|
||||
done
|
||||
}
|
||||
@@ -126,7 +126,7 @@ set -e
|
||||
|
||||
# merge / and /usr in new dir in /usr
|
||||
for dir in bin sbin lib lib64; do
|
||||
rm -rf "$ROOT/usr/${dir}.usrmove-new"
|
||||
rm -rf -- "$ROOT/usr/${dir}.usrmove-new"
|
||||
[[ -L "$ROOT/$dir" ]] && continue
|
||||
[[ -d "$ROOT/$dir" ]] || continue
|
||||
echo "Make a copy of \`$ROOT/usr/$dir'."
|
||||
@@ -150,7 +150,7 @@ done
|
||||
for dir in bin sbin lib lib64; do
|
||||
[[ -d "$ROOT/usr/${dir}.usrmove-new" ]] || continue
|
||||
echo "Switch to new \`$ROOT/usr/$dir'."
|
||||
rm -fr "$ROOT/usr/${dir}.usrmove-old"
|
||||
rm -fr -- "$ROOT/usr/${dir}.usrmove-old"
|
||||
mv "$ROOT/usr/$dir" "$ROOT/usr/${dir}.usrmove-old"
|
||||
mv "$ROOT/usr/${dir}.usrmove-new" "$ROOT/usr/$dir"
|
||||
done
|
||||
@@ -160,7 +160,7 @@ for dir in bin sbin lib lib64; do
|
||||
[[ -L "$ROOT/$dir" ]] && continue
|
||||
[[ -d "$ROOT/$dir" ]] || continue
|
||||
echo "Create \`$ROOT/$dir' symlink."
|
||||
rm -rf "$ROOT/${dir}.usrmove-old" || :
|
||||
rm -fr -- "$ROOT/${dir}.usrmove-old" || :
|
||||
mv "$ROOT/$dir" "$ROOT/${dir}.usrmove-old"
|
||||
ln -sfn usr/$dir "$ROOT/$dir"
|
||||
done
|
||||
@@ -178,9 +178,9 @@ done
|
||||
|
||||
for dir in bin sbin lib lib64; do
|
||||
[[ -d "$ROOT/usr/${dir}.usrmove-old~" ]] \
|
||||
&& rm -rf "$ROOT/usr/${dir}.usrmove-old~" || :
|
||||
&& rm -rf -- "$ROOT/usr/${dir}.usrmove-old~" || :
|
||||
[[ -d "$ROOT/${dir}.usrmove-old~" ]] \
|
||||
&& rm -rf "$ROOT/${dir}.usrmove-old~" || :
|
||||
&& rm -rf -- "$ROOT/${dir}.usrmove-old~" || :
|
||||
done
|
||||
|
||||
for dir in lib lib64; do
|
||||
|
@@ -9,7 +9,7 @@ setup_interface() {
|
||||
bcast=$new_broadcast_address
|
||||
gw=${new_routers%%,*}
|
||||
domain=$new_domain_name
|
||||
search=$(printf "$new_domain_search")
|
||||
search=$(printf -- "$new_domain_search")
|
||||
namesrv=$new_domain_name_servers
|
||||
hostname=$new_host_name
|
||||
|
||||
@@ -89,7 +89,7 @@ case $reason in
|
||||
[ -e /tmp/net.$netif.manualup ] || echo "/sbin/netroot $netif"
|
||||
echo "> /tmp/setup_net_$netif.ok"
|
||||
echo "> /tmp/setup_net_\$(cat /sys/class/net/$netif/address).ok"
|
||||
echo "rm -f $hookdir/initqueue/setup_net_$netif.sh"
|
||||
echo "rm -f -- $hookdir/initqueue/setup_net_$netif.sh"
|
||||
} > $hookdir/initqueue/setup_net_$netif.sh
|
||||
|
||||
echo "[ -f /tmp/setup_net_$netif.ok ]" > $hookdir/initqueue/finished/dhclient-$netif.sh
|
||||
|
@@ -287,6 +287,17 @@ for p in $(getargs ip=); do
|
||||
# skip ibft
|
||||
[ "$autoconf" = "ibft" ] && continue
|
||||
|
||||
case "$dev" in
|
||||
??:??:??:??:??:??) # MAC address
|
||||
_dev=$(iface_for_mac $dev)
|
||||
[ -n "$_dev" ] && dev="$_dev"
|
||||
;;
|
||||
??-??-??-??-??-??) # MAC address in BOOTIF form
|
||||
_dev=$(iface_for_mac $(fix_bootif $dev))
|
||||
[ -n "$_dev" ] && dev="$_dev"
|
||||
;;
|
||||
esac
|
||||
|
||||
# If this option isn't directed at our interface, skip it
|
||||
[ -n "$dev" ] && [ "$dev" != "$netif" ] && \
|
||||
[ "$use_bridge" != 'true' ] && \
|
||||
|
@@ -105,7 +105,7 @@ ifdown() {
|
||||
ip link set $netif down
|
||||
ip addr flush dev $netif
|
||||
echo "#empty" > /etc/resolv.conf
|
||||
rm -f /tmp/net.$netif.did-setup
|
||||
rm -f -- /tmp/net.$netif.did-setup
|
||||
# TODO: send "offline" uevent?
|
||||
}
|
||||
|
||||
@@ -205,16 +205,33 @@ ibft_to_cmdline() {
|
||||
mac=$(read a < ${iface}/mac; echo $a)
|
||||
[ -z "$mac" ] && continue
|
||||
dev=$(set_ifname ibft $mac)
|
||||
dhcp=$(read a < ${iface}/dhcp; echo $a)
|
||||
[ -e ${iface}/dhcp ] && dhcp=$(read a < ${iface}/dhcp; echo $a)
|
||||
if [ -e ${iface}/vlan ]; then
|
||||
vlan=$(read a < ${iface}/vlan; echo $a)
|
||||
echo "vlan=$vlan:$dev"
|
||||
fi
|
||||
|
||||
if [ -n "$dhcp" ]; then
|
||||
echo "ip=$dev:dhcp"
|
||||
elif [ -e ${iface}/ip-addr ]; then
|
||||
[ -e ${iface}/ip-addr ] && ip=$(read a < ${iface}/ip-addr; echo $a)
|
||||
[ -e ${iface}/gateway ] && gw=$(read a < ${iface}/gateway; echo $a)
|
||||
[ -e ${iface}/subnet-mask ] && mask=$(read a < ${iface}/subnet-mask; echo $a)
|
||||
[ -e ${iface}/hostname ] && hostname=$(read a < ${iface}/hostname; echo $a)
|
||||
if [ -n "$ip" ] && [ -n "$mask" ]; then
|
||||
echo "ip=$ip::$gw:$mask:$hostname:$dev:none"
|
||||
else
|
||||
warn "${iface} does not contain a valid iBFT configuration"
|
||||
warn "ip-addr=$ip"
|
||||
warn "gateway=$gw"
|
||||
warn "subnet-mask=$mask"
|
||||
warn "hostname=$hostname"
|
||||
fi
|
||||
else
|
||||
ip=$(read a < ${iface}/ip-addr; echo $a)
|
||||
gw=$(read a < ${iface}/gateway; echo $a)
|
||||
mask=$(read a < ${iface}/subnet-mask; echo $a)
|
||||
hostname=$(read a < ${iface}/hostname; echo $a)
|
||||
echo "ip=$ip::$gw:$mask:$hostname:$dev:none"
|
||||
info "${iface} does not contain a valid iBFT configuration"
|
||||
ls -l ${iface} | vinfo
|
||||
fi
|
||||
|
||||
echo $mac > /tmp/net.${dev}.has_ibft_config
|
||||
done
|
||||
) >> /etc/cmdline.d/40-ibft.conf
|
||||
|
@@ -76,7 +76,7 @@ source_hook netroot $netif
|
||||
# Run the handler; don't store the root, it may change from device to device
|
||||
# XXX other variables to export?
|
||||
if $handler $netif $netroot $NEWROOT; then
|
||||
rm -f $hookdir/initqueue/finished/dhcp.sh
|
||||
rm -f -- $hookdir/initqueue/finished/dhcp.sh
|
||||
# Network rootfs mount successful - save interface info for ifcfg etc.
|
||||
save_netinfo $netif
|
||||
fi
|
||||
|
@@ -12,7 +12,7 @@ depends() {
|
||||
}
|
||||
|
||||
install() {
|
||||
local _dir _crt _found
|
||||
local _dir _crt _found _lib
|
||||
inst_simple "$moddir/url-lib.sh" "/lib/url-lib.sh"
|
||||
dracut_install curl
|
||||
# also install libs for curl https
|
||||
@@ -22,8 +22,10 @@ install() {
|
||||
inst_libdir_file "libsqlite3.so*"
|
||||
|
||||
for _dir in $libdirs; do
|
||||
[[ -d $_dir ]] || continue
|
||||
_crt=$(grep -F --binary-files=text -z .crt $_dir/libcurl.so)
|
||||
[[ -d $_dir ]] || continue
|
||||
for _lib in $_dir/libcurl.so.*; do
|
||||
[[ -e $_lib ]] || continue
|
||||
_crt=$(grep -F --binary-files=text -z .crt $_lib)
|
||||
[[ $_crt ]] || continue
|
||||
[[ $_crt == /*/* ]] || continue
|
||||
if ! inst_simple "$_crt"; then
|
||||
@@ -31,6 +33,7 @@ install() {
|
||||
continue
|
||||
fi
|
||||
_found=1
|
||||
done
|
||||
done
|
||||
[[ $_found ]] || dwarn "Couldn't find SSL CA cert bundle; HTTPS won't work."
|
||||
}
|
||||
|
@@ -23,7 +23,7 @@ fetch_url() {
|
||||
local handler="$(get_url_handler $url)"
|
||||
[ -n "$handler" ] || return 254
|
||||
[ -n "$url" ] || return 255
|
||||
$handler "$url" "$outloc"
|
||||
"$handler" "$url" "$outloc"
|
||||
}
|
||||
|
||||
# get_url_handler URL
|
||||
@@ -64,7 +64,7 @@ curl_fetch_url() {
|
||||
local url="$1" outloc="$2"
|
||||
echo "$url" > /proc/self/fd/0
|
||||
if [ -n "$outloc" ]; then
|
||||
curl $curl_args --output "$outloc" "$url" || return $?
|
||||
curl $curl_args --output "$outloc" -- "$url" || return $?
|
||||
else
|
||||
local outdir="$(mkuniqdir /tmp curl_fetch_url)"
|
||||
( cd "$outdir"; curl $curl_args --remote-name "$url" || return $? )
|
||||
@@ -106,18 +106,18 @@ nfs_fetch_url() {
|
||||
local filepath="${path%/*}" filename="${path##*/}" mntdir=""
|
||||
|
||||
# skip mount if server:/filepath is already mounted
|
||||
mntdir=$(nfs_already_mounted $server $path)
|
||||
mntdir=$(nfs_already_mounted "$server" "$path")
|
||||
if [ -z "$mntdir" ]; then
|
||||
local mntdir="$(mkuniqdir /run nfs_mnt)"
|
||||
mount_nfs $nfs:$server:$filepath${options:+:$options} $mntdir
|
||||
mount_nfs "$nfs:$server:$filepath${options:+:$options}" "$mntdir"
|
||||
# lazy unmount during pre-pivot hook
|
||||
inst_hook --hook pre-pivot --name 99url-lib-umount-nfs umount -l $mntdir
|
||||
inst_hook --hook pre-pivot --name 99url-lib-umount-nfs umount -l -- "$mntdir"
|
||||
fi
|
||||
|
||||
if [ -z "$outloc" ]; then
|
||||
outloc="$mntdir/$filename"
|
||||
else
|
||||
cp -f "$mntdir/$filename" "$outloc" || return $?
|
||||
cp -f -- "$mntdir/$filename" "$outloc" || return $?
|
||||
fi
|
||||
[ -f "$outloc" ] || return 253
|
||||
if [ -z "$2" ]; then echo "$outloc" ; fi
|
||||
|
@@ -167,7 +167,7 @@ function dasd_settle_all() {
|
||||
|
||||
printf 'SUBSYSTEM=="net", ACTION=="add", DRIVERS=="%s", KERNELS=="%s", ENV{INTERFACE}=="?*", RUN+="/sbin/initqueue --onetime --unique --name cmsifup-$env{INTERFACE} /sbin/cmsifup $env{INTERFACE}"\n' "$driver" "$devbusid" > /etc/udev/rules.d/99-cms.rules
|
||||
# remove the default net rules
|
||||
rm -f /etc/udev/rules.d/91-default-net.rules
|
||||
rm -f -- /etc/udev/rules.d/91-default-net.rules
|
||||
[[ -f /etc/udev/rules.d/90-net.rules ]] \
|
||||
|| printf 'SUBSYSTEM=="net", ACTION=="online", RUN+="/sbin/initqueue --onetime --env netif=$env{INTERFACE} source_hook initqueue/online"\n' >> /etc/udev/rules.d/99-cms.rules
|
||||
udevadm control --reload
|
||||
|
30
modules.d/90bcache/module-setup.sh
Executable file
30
modules.d/90bcache/module-setup.sh
Executable file
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
|
||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
|
||||
check() {
|
||||
type -P probe-bcache >/dev/null || return 1
|
||||
|
||||
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
||||
for fs in "${host_fs_types[@]}"; do
|
||||
[[ $fs = "bcache" ]] && return 0
|
||||
done
|
||||
return 255
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
depends() {
|
||||
return 0
|
||||
}
|
||||
|
||||
installkernel() {
|
||||
instmods bcache
|
||||
}
|
||||
|
||||
install() {
|
||||
dracut_install probe-bcache ${udevdir}/bcache-register
|
||||
inst_rules 61-bcache.rules
|
||||
}
|
||||
|
@@ -2,7 +2,7 @@
|
||||
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
|
||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
# close everything which is not busy
|
||||
rm -f /etc/udev/rules.d/70-luks.rules >/dev/null 2>&1
|
||||
rm -f -- /etc/udev/rules.d/70-luks.rules >/dev/null 2>&1
|
||||
|
||||
if ! getarg rd.luks.uuid -d rd_LUKS_UUID >/dev/null 2>&1 && getargbool 1 rd.luks -d -n rd_NO_LUKS >/dev/null 2>&1; then
|
||||
while true; do
|
||||
|
@@ -57,7 +57,7 @@ install() {
|
||||
inst_hook cleanup 30 "$moddir/crypt-cleanup.sh"
|
||||
fi
|
||||
|
||||
if [[ $hostonly ]]; then
|
||||
if [[ $hostonly ]] && [[ -f /etc/cryptab ]]; then
|
||||
# filter /etc/crypttab for the devices we need
|
||||
while read _mapper _dev _rest; do
|
||||
[[ $_mapper = \#* ]] && continue
|
||||
|
@@ -4,7 +4,7 @@
|
||||
|
||||
if ! getargbool 1 rd.luks -d -n rd_NO_LUKS; then
|
||||
info "rd.luks=0: removing cryptoluks activation"
|
||||
rm -f /etc/udev/rules.d/70-luks.rules
|
||||
rm -f -- /etc/udev/rules.d/70-luks.rules
|
||||
else
|
||||
{
|
||||
echo 'SUBSYSTEM!="block", GOTO="luks_end"'
|
||||
@@ -23,7 +23,7 @@ else
|
||||
{
|
||||
printf -- 'ENV{ID_FS_TYPE}=="crypto_LUKS", '
|
||||
printf -- 'ENV{ID_FS_UUID}=="*%s*", ' $luksid
|
||||
printf -- 'RUN+="%s --unique --onetime ' $(command -v initqueue)
|
||||
printf -- 'RUN+="%s --settled --unique --onetime ' $(command -v initqueue)
|
||||
printf -- '--name cryptroot-ask-%%k %s ' $(command -v cryptroot-ask)
|
||||
printf -- '$env{DEVNAME} luks-$env{ID_FS_UUID} %s"\n' $tout
|
||||
} >> /etc/udev/rules.d/70-luks.rules.new
|
||||
@@ -31,7 +31,7 @@ else
|
||||
{
|
||||
printf -- 'ENV{ID_FS_TYPE}=="crypto_LUKS", '
|
||||
printf -- 'ENV{ID_FS_UUID}=="*%s*", ' $luksid
|
||||
printf -- 'RUN+="%s --unique --onetime ' $(command -v initqueue)
|
||||
printf -- 'RUN+="%s --settled --unique --onetime ' $(command -v initqueue)
|
||||
printf -- '--name systemd-cryptsetup-%%k %s start ' $(command -v systemctl)
|
||||
printf -- 'systemd-cryptsetup@luks$$(dev_unit_name -$env{ID_FS_UUID}).service"\n'
|
||||
} >> /etc/udev/rules.d/70-luks.rules.new
|
||||
@@ -51,13 +51,13 @@ else
|
||||
if [ -z "$DRACUT_SYSTEMD" ]; then
|
||||
{
|
||||
printf -- 'ENV{ID_FS_TYPE}=="crypto_LUKS", RUN+="%s ' $(command -v initqueue)
|
||||
printf -- '--unique --onetime --name cryptroot-ask-%%k '
|
||||
printf -- '--unique --settled --onetime --name cryptroot-ask-%%k '
|
||||
printf -- '%s $env{DEVNAME} luks-$env{ID_FS_UUID} %s"\n' $(command -v cryptroot-ask) $tout
|
||||
} >> /etc/udev/rules.d/70-luks.rules.new
|
||||
else
|
||||
{
|
||||
printf -- 'ENV{ID_FS_TYPE}=="crypto_LUKS", RUN+="%s ' $(command -v initqueue)
|
||||
printf -- '--unique --onetime --name crypt-run-generator-%%k '
|
||||
printf -- '--unique --settled --onetime --name crypt-run-generator-%%k '
|
||||
printf -- '%s $env{DEVNAME} luks-$env{ID_FS_UUID}"\n' $(command -v crypt-run-generator)
|
||||
} >> /etc/udev/rules.d/70-luks.rules.new
|
||||
fi
|
||||
|
@@ -29,6 +29,8 @@ install() {
|
||||
# Gentoo ebuild for LVM2 prior to 2.02.63-r1 doesn't install above rules
|
||||
# files, but provides the one below:
|
||||
inst_rules 64-device-mapper.rules
|
||||
# debian udev rules
|
||||
inst_rules 60-persistent-storage-dm.rules 55-dm.rules
|
||||
|
||||
inst_rules "$moddir/11-dm.rules"
|
||||
|
||||
|
@@ -27,8 +27,7 @@ if [ -n "$DM_RAIDS" ] || getargbool 0 rd.auto; then
|
||||
for s in $SETS; do
|
||||
if [ "${s##$r}" != "$s" ]; then
|
||||
info "Activating $s"
|
||||
dmraid -ay -i -p --rm_partitions "$s" 2>&1 | vinfo
|
||||
[ -e "/dev/mapper/$s" ] && kpartx -a "/dev/mapper/$s" 2>&1 | vinfo
|
||||
dmraid -ay -i --rm_partitions "$s" 2>&1 | vinfo
|
||||
udevsettle
|
||||
fi
|
||||
done
|
||||
@@ -37,8 +36,7 @@ if [ -n "$DM_RAIDS" ] || getargbool 0 rd.auto; then
|
||||
# scan and activate all DM RAIDS
|
||||
for s in $SETS; do
|
||||
info "Activating $s"
|
||||
dmraid -ay -i -p --rm_partitions "$s" 2>&1 | vinfo
|
||||
[ -e "/dev/mapper/$s" ] && kpartx -a "/dev/mapper/$s" 2>&1 | vinfo
|
||||
dmraid -ay -i --rm_partitions "$s" 2>&1 | vinfo
|
||||
done
|
||||
fi
|
||||
|
||||
|
@@ -24,7 +24,7 @@ do_iso_scan() {
|
||||
mount -t auto -o ro "$dev" "/run/initramfs/isoscan" || continue
|
||||
if [ -f "/run/initramfs/isoscan/$isofile" ]; then
|
||||
losetup -f "/run/initramfs/isoscan/$isofile"
|
||||
rm -f "$job"
|
||||
rm -f -- "$job"
|
||||
exit 0
|
||||
else
|
||||
umount "/run/initramfs/isoscan"
|
||||
|
@@ -34,6 +34,14 @@ case "$liveroot" in
|
||||
root="${root#live:}"
|
||||
root="live:/dev/disk/by-uuid/${root#UUID=}"
|
||||
rootok=1 ;;
|
||||
live:PARTUUID=*|PARTUUID=*) \
|
||||
root="${root#live:}"
|
||||
root="live:/dev/disk/by-partuuid/${root#PARTUUID=}"
|
||||
rootok=1 ;;
|
||||
live:PARTLABEL=*|PARTLABEL=*) \
|
||||
root="${root#live:}"
|
||||
root="live:/dev/disk/by-partlabel/${root#PARTLABEL=}"
|
||||
rootok=1 ;;
|
||||
live:/*.[Ii][Ss][Oo]|/*.[Ii][Ss][Oo])
|
||||
root="${root#live:}"
|
||||
root="liveiso:${root}"
|
||||
|
@@ -47,7 +47,8 @@ installkernel() {
|
||||
if [[ "$(uname -p)" == arm* ]]; then
|
||||
# arm specific modules
|
||||
hostonly='' instmods sdhci_esdhc_imx mmci sdhci_tegra mvsdio omap omapdrm \
|
||||
omap_hsmmc panel-tfp410 sdhci_dove ahci_platform pata_imx sata_mv
|
||||
omap_hsmmc panel-tfp410 sdhci_dove ahci_platform pata_imx sata_mv \
|
||||
ehci-tegra
|
||||
fi
|
||||
|
||||
# install virtual machine support
|
||||
@@ -60,8 +61,7 @@ installkernel() {
|
||||
# if the required list is not set via the filesystems variable
|
||||
if ! [[ $hostonly ]]; then
|
||||
if [[ -z $filesystems ]]; then
|
||||
omit_drivers="${omit_drivers}|kernel/fs/nfs|kernel/fs/nfsd|kernel/fs/lockd" \
|
||||
omit_drivers="${omit_drivers##|}" \
|
||||
silent_omit_drivers="kernel/fs/nfs|kernel/fs/nfsd|kernel/fs/lockd" \
|
||||
instmods '=fs'
|
||||
fi
|
||||
else
|
||||
|
@@ -125,7 +125,7 @@ if [ -z "$LVS" -o -n "$VGS" ]; then
|
||||
fi
|
||||
|
||||
if [ "$lvmwritten" ]; then
|
||||
rm -f /etc/lvm/lvm.conf
|
||||
rm -f -- /etc/lvm/lvm.conf
|
||||
fi
|
||||
unset lvmwritten
|
||||
|
||||
|
@@ -34,7 +34,7 @@ install() {
|
||||
eval $(udevadm info --query=property --name=$1 | egrep '(DM_VG_NAME|DM_LV_NAME|DM_UDEV_DISABLE_DISK_RULES_FLAG)=')
|
||||
[[ "$DM_UDEV_DISABLE_DISK_RULES_FLAG" = "1" ]] && return 1
|
||||
[[ ${DM_VG_NAME} ]] && [[ ${DM_LV_NAME} ]] || return 1
|
||||
if ! strstr " ${_activated[*]} " " ${DM_VG_NAME}/${DM_LV_NAME} "; then
|
||||
if ! [[ " ${_activated[*]} " == *\ ${DM_VG_NAME}/${DM_LV_NAME}\ * ]]; then
|
||||
if ! [[ $kernel_only ]]; then
|
||||
echo " rd.lvm.lv=${DM_VG_NAME}/${DM_LV_NAME} " >> "${initdir}/etc/cmdline.d/90lvm.conf"
|
||||
fi
|
||||
@@ -65,6 +65,8 @@ install() {
|
||||
# Gentoo ebuild for LVM2 prior to 2.02.63-r1 doesn't install above rules
|
||||
# files, but provides the one below:
|
||||
inst_rules 64-device-mapper.rules
|
||||
# debian udev rules
|
||||
inst_rules 56-lvm.rules 60-persistent-storage-lvm.rules
|
||||
|
||||
inst_script "$moddir/lvm_scan.sh" /sbin/lvm_scan
|
||||
inst_hook cmdline 30 "$moddir/parse-lvm.sh"
|
||||
|
@@ -2,7 +2,7 @@
|
||||
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
|
||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
if [ -e /etc/lvm/lvm.conf ] && ! getargbool 1 rd.lvm.conf -d -n rd_NO_LVMCONF; then
|
||||
rm -f /etc/lvm/lvm.conf
|
||||
rm -f -- /etc/lvm/lvm.conf
|
||||
fi
|
||||
|
||||
LV_DEVS="$(getargs rd.lvm.vg -d rd_LVM_VG=) $(getargs rd.lvm.lv -d rd_LVM_LV=)"
|
||||
@@ -10,7 +10,7 @@ LV_DEVS="$(getargs rd.lvm.vg -d rd_LVM_VG=) $(getargs rd.lvm.lv -d rd_LVM_LV=)"
|
||||
if ! getargbool 1 rd.lvm -d -n rd_NO_LVM \
|
||||
|| ( [ -z "$LV_DEVS" ] && ! getargbool 0 rd.auto ); then
|
||||
info "rd.lvm=0: removing LVM activation"
|
||||
rm -f /etc/udev/rules.d/64-lvm*.rules
|
||||
rm -f -- /etc/udev/rules.d/64-lvm*.rules
|
||||
else
|
||||
for dev in $LV_DEVS; do
|
||||
wait_for_dev "/dev/$dev"
|
||||
|
@@ -11,6 +11,4 @@ _do_mdmon_takeover() {
|
||||
|
||||
if command -v mdmon >/dev/null; then
|
||||
_do_mdmon_takeover $1
|
||||
else
|
||||
:
|
||||
fi
|
||||
|
@@ -32,11 +32,11 @@ fi
|
||||
|
||||
if [ -e /etc/mdadm.conf ] && getargbool 1 rd.md.conf -d -n rd_NO_MDADMCONF; then
|
||||
udevproperty rd_MDADMCONF=1
|
||||
rm -f $hookdir/pre-pivot/*mdraid-cleanup.sh
|
||||
rm -f -- $hookdir/pre-pivot/*mdraid-cleanup.sh
|
||||
fi
|
||||
|
||||
if ! getargbool 1 rd.md.conf -d -n rd_NO_MDADMCONF; then
|
||||
rm -f /etc/mdadm/mdadm.conf /etc/mdadm.conf
|
||||
rm -f -- /etc/mdadm/mdadm.conf /etc/mdadm.conf
|
||||
ln -s $(command -v mdraid-cleanup) $hookdir/pre-pivot/31-mdraid-cleanup.sh 2>/dev/null
|
||||
fi
|
||||
|
||||
|
@@ -7,6 +7,6 @@ if [ -e /etc/multipath.conf ]; then
|
||||
multipathd -B || multipathd
|
||||
need_shutdown
|
||||
else
|
||||
rm /etc/udev/rules.d/??-multipath.rules 2>/dev/null
|
||||
rm -- /etc/udev/rules.d/??-multipath.rules 2>/dev/null
|
||||
fi
|
||||
|
||||
|
@@ -21,6 +21,6 @@ echo options: $options
|
||||
mount.cifs //$server/$path $NEWROOT -o $options && { [ -e /dev/root ] || ln -s null /dev/root ; }
|
||||
|
||||
# inject new exit_if_exists
|
||||
echo 'settle_exit_if_exists="--exit-if-exists=/dev/root"; rm "$job"' > $hookdir/initqueue/cifs.sh
|
||||
echo 'settle_exit_if_exists="--exit-if-exists=/dev/root"; rm -f -- "$job"' > $hookdir/initqueue/cifs.sh
|
||||
# force udevsettle to break
|
||||
> $hookdir/initqueue/work
|
||||
|
@@ -4,7 +4,7 @@
|
||||
for dasd_arg in $(getargs rd.dasd= -d rd_DASD= DASD=); do
|
||||
(
|
||||
IFS=","
|
||||
set $dasd_arg
|
||||
set -- $dasd_arg
|
||||
echo "$@" | normalize_dasd_arg >> /etc/dasd.conf
|
||||
)
|
||||
done
|
||||
|
@@ -10,19 +10,21 @@ check() {
|
||||
# If hostonly was requested, fail the check if we are not actually
|
||||
# booting from root.
|
||||
|
||||
is_iscsi() (
|
||||
is_iscsi() {
|
||||
local _dev=$1
|
||||
|
||||
[[ -L /sys/dev/block/$_dev ]] || return
|
||||
cd "$(readlink -f /sys/dev/block/$_dev)"
|
||||
[[ -L "/sys/dev/block/$_dev" ]] || return
|
||||
cd "$(readlink -f "/sys/dev/block/$_dev")"
|
||||
until [[ -d sys || -d iscsi_session ]]; do
|
||||
cd ..
|
||||
done
|
||||
[[ -d iscsi_session ]]
|
||||
)
|
||||
}
|
||||
|
||||
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
||||
pushd . >/dev/null
|
||||
for_each_host_dev_and_slaves is_iscsi || return 1
|
||||
popd >/dev/null
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
@@ -21,7 +21,7 @@ mount_nfs $root $NEWROOT $netif && { [ -e /dev/root ] || ln -s null /dev/root ;
|
||||
[ -f $NEWROOT/etc/fstab ] && cat $NEWROOT/etc/fstab > /dev/null
|
||||
|
||||
# inject new exit_if_exists
|
||||
echo 'settle_exit_if_exists="--exit-if-exists=/dev/root"; rm "$job"' > $hookdir/initqueue/nfs.sh
|
||||
echo 'settle_exit_if_exists="--exit-if-exists=/dev/root"; rm -- "$job"' > $hookdir/initqueue/nfs.sh
|
||||
# force udevsettle to break
|
||||
> $hookdir/initqueue/work
|
||||
|
||||
|
@@ -2,6 +2,18 @@
|
||||
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
|
||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
|
||||
check() {
|
||||
# No point trying to support resume, if no swap partition exist
|
||||
[[ $hostonly ]] || [[ $mount_needs ]] && {
|
||||
for fs in "${host_fs_types[@]}"; do
|
||||
[[ $fs = swap ]] && return 0
|
||||
done
|
||||
return 255
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
install() {
|
||||
local _bin
|
||||
# Optional uswsusp support
|
||||
|
@@ -17,6 +17,8 @@ case "$resume" in
|
||||
resume="/dev/disk/by-uuid/${resume#UUID=}" ;;
|
||||
PARTUUID=*) \
|
||||
resume="/dev/disk/by-partuuid/${resume#PARTUUID=}" ;;
|
||||
PARTLABEL=*) \
|
||||
resume="/dev/disk/by-partlabel/${resume#PARTLABEL=}" ;;
|
||||
esac
|
||||
|
||||
if splash=$(getarg splash=); then
|
||||
@@ -55,10 +57,10 @@ if [ -n "$resume" ]; then
|
||||
${resume#/dev/};
|
||||
} >> /etc/udev/rules.d/99-resume.rules
|
||||
|
||||
printf '[ -e "%s" ] && { ln -s "%s" /dev/resume; rm "$job" "%s/initqueue/timeout/resume.sh"; }\n' \
|
||||
printf '[ -e "%s" ] && { ln -s "%s" /dev/resume; rm -f -- "$job" "%s/initqueue/timeout/resume.sh"; }\n' \
|
||||
"$resume" "$resume" "$hookdir" >> $hookdir/initqueue/settled/resume.sh
|
||||
|
||||
printf 'warn "Cancelling resume operation. Device not found."; cancel_wait_for_dev /dev/resume; rm "$job" "%s/initqueue/settled/resume.sh";' \
|
||||
printf 'warn "Cancelling resume operation. Device not found."; cancel_wait_for_dev /dev/resume; rm -f -- "$job" "%s/initqueue/settled/resume.sh";' \
|
||||
"$hookdir" >> $hookdir/initqueue/timeout/resume.sh
|
||||
|
||||
wait_for_dev "/dev/resume"
|
||||
|
@@ -31,6 +31,7 @@ depends() {
|
||||
|
||||
install() {
|
||||
dracut_install umount
|
||||
dracut_install tr
|
||||
if ! dracut_module_included "systemd"; then
|
||||
inst_hook cmdline 95 "$moddir/parse-block.sh"
|
||||
inst_hook pre-udev 30 "$moddir/block-genrules.sh"
|
||||
|
@@ -115,7 +115,6 @@ mount_root() {
|
||||
umount "$NEWROOT"
|
||||
fsck_single "${root#block:}" "$rootfs" "$rflags" "$fsckoptions"
|
||||
_ret=$?
|
||||
[ $_ret -ne 255 ] && echo $_ret >/run/initramfs/root-fsck
|
||||
ran_fsck=1
|
||||
fi
|
||||
|
||||
@@ -130,8 +129,8 @@ mount_root() {
|
||||
fi
|
||||
|
||||
if ! getargbool 0 rd.skipfsck; then
|
||||
[ -f "$NEWROOT"/forcefsck ] && rm -f "$NEWROOT"/forcefsck 2>/dev/null
|
||||
[ -f "$NEWROOT"/.autofsck ] && rm -f "$NEWROOT"/.autofsck 2>/dev/null
|
||||
[ -f "$NEWROOT"/forcefsck ] && rm -f -- "$NEWROOT"/forcefsck 2>/dev/null
|
||||
[ -f "$NEWROOT"/.autofsck ] && rm -f -- "$NEWROOT"/.autofsck 2>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
|
@@ -10,11 +10,19 @@ case "$root" in
|
||||
rootok=1 ;;
|
||||
block:UUID=*|UUID=*)
|
||||
root="${root#block:}"
|
||||
root="${root#UUID=}"
|
||||
root="$(echo $root | tr "[:upper:]" "[:lower:]")"
|
||||
root="block:/dev/disk/by-uuid/${root#UUID=}"
|
||||
rootok=1 ;;
|
||||
block:PARTUUID=*|PARTUUID=*)
|
||||
root="${root#block:}"
|
||||
root="block:/dev/disk/by-partuuid/${root#PARTUUID=}"
|
||||
root="${root#PARTUUID=}"
|
||||
root="$(echo $root | tr "[:upper:]" "[:lower:]")"
|
||||
root="block:/dev/disk/by-partuuid/${root}"
|
||||
rootok=1 ;;
|
||||
block:PARTLABEL=*|PARTLABEL=*)
|
||||
root="${root#block:}"
|
||||
root="block:/dev/disk/by-partlabel/${root#PARTLABEL=}"
|
||||
rootok=1 ;;
|
||||
/dev/*)
|
||||
root="block:${root}"
|
||||
|
@@ -10,7 +10,9 @@ install() {
|
||||
done
|
||||
|
||||
if [ -d ${_terminfodir} ]; then
|
||||
inst_dir "$_terminfodir"
|
||||
cp --reflink=auto --sparse=auto -prfL -t "${initdir}/${_terminfodir}" "$_terminfodir"/*
|
||||
for i in "l/linux" "v/vt100" "v/vt220"; do
|
||||
inst_dir "$_terminfodir/${i%/*}"
|
||||
cp --reflink=auto --sparse=auto -prfL -t "${initdir}/${_terminfodir}/${i%/*}" "$_terminfodir/$i"
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
@@ -31,11 +31,13 @@ install() {
|
||||
60-pcmcia.rules \
|
||||
50-udev.rules 95-late.rules \
|
||||
50-firmware.rules \
|
||||
80-net-name-slot.rules \
|
||||
75-net-description.rules 80-net-name-slot.rules \
|
||||
"$moddir/59-persistent-storage.rules" \
|
||||
"$moddir/61-persistent-storage.rules"
|
||||
|
||||
prepare_udev_rules 59-persistent-storage.rules 61-persistent-storage.rules
|
||||
# debian udev rules
|
||||
inst_rules 91-permissions.rules
|
||||
|
||||
{
|
||||
for i in cdrom tape dialout floppy; do
|
||||
|
@@ -66,8 +66,8 @@ mount_root() {
|
||||
info "Remounting ${root#virtfs:} with -o ${rflags}"
|
||||
mount -t ${rootfs} -o "$rflags" "${root#virtfs:}" "$NEWROOT" 2>&1 | vinfo
|
||||
|
||||
[ -f "$NEWROOT"/forcefsck ] && rm -f "$NEWROOT"/forcefsck 2>/dev/null
|
||||
[ -f "$NEWROOT"/.autofsck ] && rm -f "$NEWROOT"/.autofsck 2>/dev/null
|
||||
[ -f "$NEWROOT"/forcefsck ] && rm -f -- "$NEWROOT"/forcefsck 2>/dev/null
|
||||
[ -f "$NEWROOT"/.autofsck ] && rm -f -- "$NEWROOT"/.autofsck 2>/dev/null
|
||||
}
|
||||
|
||||
if [ -n "$root" -a -z "${root%%virtfs:*}" ]; then
|
||||
|
@@ -5,6 +5,6 @@
|
||||
SECURITYFSDIR="/sys/kernel/security"
|
||||
export SECURITYFSDIR
|
||||
|
||||
if ! findmnt "${SECURITYFSDIR}" >/dev/null 2>&1; then
|
||||
if ! findmnt --target "${SECURITYFSDIR}" >/dev/null 2>&1; then
|
||||
mount -t securityfs -o nosuid,noexec,nodev securityfs ${SECURITYFSDIR} >/dev/null 2>&1
|
||||
fi
|
||||
|
@@ -4,7 +4,7 @@
|
||||
if ! getargbool 1 biosdevname; then
|
||||
info "biosdevname=0: removing biosdevname network renaming"
|
||||
udevproperty UDEV_BIOSDEVNAME=
|
||||
rm -f /etc/udev/rules.d/71-biosdevname.rules
|
||||
rm -f -- /etc/udev/rules.d/71-biosdevname.rules
|
||||
else
|
||||
info "biosdevname=1: activating biosdevname network renaming"
|
||||
udevproperty UDEV_BIOSDEVNAME=1
|
||||
|
@@ -3,7 +3,7 @@
|
||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
|
||||
check() {
|
||||
[ "$1" = "-h" ] && {
|
||||
[[ $hostonly ]] && {
|
||||
[ -x "/bin/keyctl" ] || return 1
|
||||
}
|
||||
|
||||
|
@@ -48,6 +48,7 @@ rd_load_policy()
|
||||
[ -e "$NEWROOT"/.autorelabel ] && LANG=C /usr/sbin/setenforce 0
|
||||
mount --rbind /dev "$NEWROOT/dev"
|
||||
LANG=C chroot "$NEWROOT" /sbin/restorecon -R /dev
|
||||
umount -R "$NEWROOT/dev"
|
||||
return 0
|
||||
fi
|
||||
|
||||
|
@@ -12,7 +12,6 @@ Description=dracut cmdline hook
|
||||
Documentation=man:dracut-cmdline.service(8)
|
||||
DefaultDependencies=no
|
||||
Before=dracut-pre-udev.service
|
||||
Before=systemd-vconsole-setup.service
|
||||
After=systemd-journald.socket
|
||||
Wants=systemd-journald.socket
|
||||
ConditionPathExists=/etc/initrd-release
|
||||
|
@@ -57,6 +57,10 @@ case "$root" in
|
||||
root="${root#block:}"
|
||||
root="block:/dev/disk/by-partuuid/${root#PARTUUID=}"
|
||||
rootok=1 ;;
|
||||
block:PARTLABEL=*|PARTLABEL=*)
|
||||
root="${root#block:}"
|
||||
root="block:/dev/disk/by-partlabel/${root#PARTLABEL=}"
|
||||
rootok=1 ;;
|
||||
/dev/*)
|
||||
root="block:${root}"
|
||||
rootok=1 ;;
|
||||
|
@@ -21,7 +21,7 @@ Environment=DRACUT_SYSTEMD=1
|
||||
Environment=NEWROOT=/sysroot
|
||||
WorkingDirectory=/
|
||||
ExecStart=/bin/dracut-emergency
|
||||
ExecStopPost=-/bin/rm -f /.console_lock
|
||||
ExecStopPost=-/bin/rm -f -- /.console_lock
|
||||
Type=oneshot
|
||||
StandardInput=tty-force
|
||||
StandardOutput=inherit
|
||||
|
@@ -19,12 +19,12 @@ source_hook "$hook"
|
||||
|
||||
if getargbool 1 rd.shell -d -y rdshell || getarg rd.break -d rdbreak; then
|
||||
echo
|
||||
sosreport
|
||||
rdsosreport
|
||||
echo
|
||||
echo
|
||||
echo 'Entering emergency mode. Exit the shell to continue.'
|
||||
echo 'Type "journalctl" to view system logs.'
|
||||
echo 'You might want to save "/run/initramfs/sosreport.txt" to a USB stick or /boot'
|
||||
echo 'You might want to save "/run/initramfs/rdsosreport.txt" to a USB stick or /boot'
|
||||
echo 'after mounting them and attach it to a bug report.'
|
||||
echo
|
||||
echo
|
||||
@@ -36,6 +36,6 @@ else
|
||||
exit 1
|
||||
fi
|
||||
|
||||
/bin/rm -f /.console_lock
|
||||
/bin/rm -f -- /.console_lock
|
||||
|
||||
exit 0
|
||||
|
@@ -30,7 +30,7 @@ while :; do
|
||||
check_finished && break
|
||||
|
||||
if [ -f $hookdir/initqueue/work ]; then
|
||||
rm $hookdir/initqueue/work
|
||||
rm -f -- "$hookdir/initqueue/work"
|
||||
fi
|
||||
|
||||
for job in $hookdir/initqueue/*.sh; do
|
||||
|
@@ -26,7 +26,7 @@ while :; do
|
||||
usable_root "$NEWROOT" && break;
|
||||
warn "$NEWROOT has no proper rootfs layout, ignoring and removing offending mount hook"
|
||||
umount "$NEWROOT"
|
||||
rm -f "$f"
|
||||
rm -f -- "$f"
|
||||
fi
|
||||
done
|
||||
|
||||
|
@@ -23,6 +23,6 @@ source_hook cleanup
|
||||
getarg rd.break -d rdbreak && emergency_shell -n switch_root "Break before switch_root"
|
||||
|
||||
# remove helper symlink
|
||||
[ -h /dev/root ] && rm -f /dev/root
|
||||
[ -h /dev/root ] && rm -f -- /dev/root
|
||||
|
||||
exit 0
|
||||
|
@@ -12,7 +12,7 @@ Description=dracut pre-trigger hook
|
||||
Documentation=man:dracut-pre-trigger.service(8)
|
||||
DefaultDependencies=no
|
||||
Before=systemd-udev-trigger.service dracut-initqueue.service
|
||||
After=dracut-pre-udev.service systemd-udevd.service
|
||||
After=dracut-pre-udev.service systemd-udevd.service systemd-tmpfiles-setup-dev.service
|
||||
Wants=dracut-pre-udev.service systemd-udevd.service
|
||||
ConditionPathExists=/etc/initrd-release
|
||||
ConditionDirectoryNotEmpty=|/lib/dracut/hooks/pre-trigger
|
||||
|
@@ -8,7 +8,7 @@
|
||||
[Unit]
|
||||
Description=Restore /run/initramfs
|
||||
Documentation=man:dracut-shutdown.service(8)
|
||||
After=getty@tty1.service prefdm.service
|
||||
After=getty@tty1.service display-manager.service
|
||||
Before=systemd-reboot.service shutdown.target
|
||||
DefaultDependencies=no
|
||||
ConditionPathExists=/run/initramfs/.need_shutdown
|
||||
|
@@ -5,6 +5,8 @@
|
||||
check() {
|
||||
[[ $mount_needs ]] && return 1
|
||||
if [[ -x $systemdutildir/systemd ]]; then
|
||||
SYSTEMD_VERSION=$($systemdutildir/systemd --version | { read a b a; echo $b; })
|
||||
(( $SYSTEMD_VERSION >= 198 )) && return 0
|
||||
return 255
|
||||
fi
|
||||
|
||||
@@ -18,13 +20,7 @@ depends() {
|
||||
install() {
|
||||
local _mods
|
||||
|
||||
# SYSTEMD_VERSION=$($systemdutildir/systemd --version | { read a b a; echo $b; })
|
||||
# if (( $SYSTEMD_VERSION < 198 )); then
|
||||
# dfatal "systemd version $SYSTEMD_VERSION is too low. Need at least version 198."
|
||||
# exit 1
|
||||
# fi
|
||||
|
||||
if strstr "$prefix" "/run/"; then
|
||||
if [[ "$prefix" == /run/* ]]; then
|
||||
dfatal "systemd does not work with a prefix, which contains \"/run\"!!"
|
||||
exit 1
|
||||
fi
|
||||
@@ -39,6 +35,7 @@ install() {
|
||||
$systemdutildir/systemd-journald \
|
||||
$systemdutildir/systemd-sysctl \
|
||||
$systemdutildir/systemd-modules-load \
|
||||
$systemdutildir/systemd-vconsole-setup \
|
||||
$systemdutildir/system-generators/systemd-fstab-generator \
|
||||
$systemdsystemunitdir/cryptsetup.target \
|
||||
$systemdsystemunitdir/emergency.target \
|
||||
@@ -67,6 +64,9 @@ install() {
|
||||
$systemdsystemunitdir/swap.target \
|
||||
$systemdsystemunitdir/timers.target \
|
||||
$systemdsystemunitdir/paths.target \
|
||||
$systemdsystemunitdir/umount.target \
|
||||
$systemdsystemunitdir/kmod-static-nodes.service \
|
||||
$systemdsystemunitdir/systemd-tmpfiles-setup-dev.service \
|
||||
$systemdsystemunitdir/systemd-ask-password-console.path \
|
||||
$systemdsystemunitdir/systemd-udevd-control.socket \
|
||||
$systemdsystemunitdir/systemd-udevd-kernel.socket \
|
||||
@@ -86,6 +86,7 @@ install() {
|
||||
$systemdsystemunitdir/systemd-journald.service \
|
||||
$systemdsystemunitdir/systemd-vconsole-setup.service \
|
||||
$systemdsystemunitdir/systemd-random-seed-load.service \
|
||||
\
|
||||
$systemdsystemunitdir/sysinit.target.wants/systemd-modules-load.service \
|
||||
$systemdsystemunitdir/sysinit.target.wants/systemd-ask-password-console.path \
|
||||
$systemdsystemunitdir/sysinit.target.wants/systemd-journald.service \
|
||||
@@ -94,6 +95,8 @@ install() {
|
||||
$systemdsystemunitdir/sockets.target.wants/systemd-journald.socket \
|
||||
$systemdsystemunitdir/sysinit.target.wants/systemd-udevd.service \
|
||||
$systemdsystemunitdir/sysinit.target.wants/systemd-udev-trigger.service \
|
||||
$systemdsystemunitdir/sysinit.target.wants/kmod-static-nodes.service \
|
||||
$systemdsystemunitdir/sysinit.target.wants/systemd-tmpfiles-setup-dev.service \
|
||||
\
|
||||
$systemdsystemunitdir/ctrl-alt-del.target \
|
||||
$systemdsystemunitdir/syslog.socket \
|
||||
@@ -103,8 +106,10 @@ install() {
|
||||
$systemdsystemunitdir/initrd-udevadm-cleanup-db.service \
|
||||
$systemdsystemunitdir/initrd-parse-etc.service \
|
||||
\
|
||||
$systemdsystemunitdir/umount.target \
|
||||
journalctl systemctl echo swapoff systemd-cgls
|
||||
$systemdsystemunitdir/slices.target \
|
||||
$systemdsystemunitdir/system.slice \
|
||||
\
|
||||
journalctl systemctl echo swapoff systemd-cgls systemd-tmpfiles
|
||||
|
||||
dracut_install -o \
|
||||
/usr/lib/modules-load.d/*.conf \
|
||||
@@ -144,10 +149,10 @@ install() {
|
||||
|
||||
_mods=$(modules_load_get /etc/modules-load.d)
|
||||
[[ $_mods ]] && instmods $_mods
|
||||
else
|
||||
if ! [[ -e "$initdir/etc/machine-id" ]]; then
|
||||
> "$initdir/etc/machine-id"
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! [[ -e "$initdir/etc/machine-id" ]]; then
|
||||
> "$initdir/etc/machine-id"
|
||||
fi
|
||||
|
||||
# install adm user/group for journald
|
||||
|
@@ -18,7 +18,7 @@ Environment=NEWROOT=/sysroot
|
||||
WorkingDirectory=/
|
||||
ExecStartPre=-/bin/plymouth quit
|
||||
ExecStart=-/bin/sh -i -l
|
||||
ExecStopPost=-/bin/rm -f /.console_lock
|
||||
ExecStopPost=-/bin/rm -f -- /.console_lock
|
||||
ExecStopPost=-/usr/bin/systemctl --fail --no-block default
|
||||
Type=idle
|
||||
StandardInput=tty-force
|
||||
|
@@ -3,7 +3,10 @@
|
||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
|
||||
check() {
|
||||
local _init
|
||||
[[ $mount_needs ]] && return 1
|
||||
_init=$(readlink -f /sbin/init)
|
||||
[[ "$init" == "${init##/usr}" ]] && return 255
|
||||
return 0
|
||||
}
|
||||
|
||||
|
@@ -54,9 +54,9 @@ killall_proc_mountpoint() {
|
||||
case $_pid in
|
||||
*[!0-9]*) continue;;
|
||||
esac
|
||||
[ -e /proc/$_pid/exe ] || continue
|
||||
[ -e /proc/$_pid/root ] || continue
|
||||
strstr "$(ls -l /proc/$_pid /proc/$_pid/fd 2>/dev/null)" "$1" && kill -9 $_pid
|
||||
[ -e "/proc/$_pid/exe" ] || continue
|
||||
[ -e "/proc/$_pid/root" ] || continue
|
||||
strstr "$(ls -l -- '/proc/$_pid' '/proc/$_pid/fd' 2>/dev/null)" "$1" && kill -9 "$_pid"
|
||||
done
|
||||
}
|
||||
|
||||
@@ -77,8 +77,10 @@ _getcmdline() {
|
||||
CMDLINE_ETC_D="$CMDLINE_ETC_D $_line";
|
||||
done <"$_i";
|
||||
done
|
||||
read -r CMDLINE </proc/cmdline;
|
||||
CMDLINE="$CMDLINE_ETC_D $CMDLINE_ETC $CMDLINE"
|
||||
if [ -e /proc/cmdline ]; then
|
||||
read -r CMDLINE </proc/cmdline;
|
||||
CMDLINE="$CMDLINE_ETC_D $CMDLINE_ETC $CMDLINE"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -107,7 +109,7 @@ _dogetarg() {
|
||||
continue
|
||||
fi
|
||||
|
||||
_val=${_o#*=};
|
||||
_val="${_o#*=}"
|
||||
_doecho=1
|
||||
fi
|
||||
done
|
||||
@@ -145,7 +147,7 @@ getarg() {
|
||||
_deprecated=0
|
||||
shift 2;;
|
||||
*) if [ -z "$_newoption" ]; then
|
||||
_newoption=$1
|
||||
_newoption="$1"
|
||||
fi
|
||||
if _dogetarg $1; then
|
||||
if [ "$_deprecated" = "1" ]; then
|
||||
@@ -173,9 +175,9 @@ getargbool() {
|
||||
local _b
|
||||
unset _b
|
||||
local _default
|
||||
_default=$1; shift
|
||||
_default="$1"; shift
|
||||
_b=$(getarg "$@")
|
||||
[ $? -ne 0 -a -z "$_b" ] && _b=$_default
|
||||
[ $? -ne 0 -a -z "$_b" ] && _b="$_default"
|
||||
if [ -n "$_b" ]; then
|
||||
[ $_b = "0" ] && return 1
|
||||
[ $_b = "no" ] && return 1
|
||||
@@ -201,14 +203,14 @@ getargnum() {
|
||||
local _b
|
||||
unset _b
|
||||
local _default _min _max
|
||||
_default=$1; shift
|
||||
_min=$1; shift
|
||||
_max=$1; shift
|
||||
_default="$1"; shift
|
||||
_min="$1"; shift
|
||||
_max="$1"; shift
|
||||
_b=$(getarg "$1")
|
||||
[ $? -ne 0 -a -z "$_b" ] && _b=$_default
|
||||
if [ -n "$_b" ]; then
|
||||
isdigit "$_b" && _b=$(($_b)) && \
|
||||
[ $_b -ge $_min ] && [ $_b -le $_max ] && echo $_b && return
|
||||
[ $_b -ge $_min ] && [ $_b -le $_max ] && echo $_b && return
|
||||
fi
|
||||
echo $_default
|
||||
}
|
||||
@@ -219,7 +221,7 @@ _dogetargs() {
|
||||
unset _o
|
||||
unset _found
|
||||
_getcmdline
|
||||
_key=$1
|
||||
_key="$1"
|
||||
set --
|
||||
for _o in $CMDLINE; do
|
||||
if [ "$_o" = "$_key" ]; then
|
||||
@@ -364,7 +366,7 @@ source_hook() {
|
||||
|
||||
check_finished() {
|
||||
local f
|
||||
for f in $hookdir/initqueue/finished/*.sh; do
|
||||
for f in $hookdir/initqueue/finished/*.sh; do
|
||||
[ "$f" = "$hookdir/initqueue/finished/*.sh" ] && return 0
|
||||
{ [ -e "$f" ] && ( . "$f" ) ; } || return 1
|
||||
done
|
||||
@@ -387,7 +389,7 @@ die() {
|
||||
echo "warn dracut: FATAL: \"$*\"";
|
||||
echo "warn dracut: Refusing to continue";
|
||||
} >> $hookdir/emergency/01-die.sh
|
||||
[ -d /run/initramfs ] || mkdir -p /run/initramfs
|
||||
[ -d /run/initramfs ] || mkdir -p -- /run/initramfs
|
||||
> /run/initramfs/.die
|
||||
emergency_shell
|
||||
exit 1
|
||||
@@ -572,13 +574,16 @@ nfsroot_to_var() {
|
||||
# TOOD: symlinks
|
||||
udevmatch() {
|
||||
case "$1" in
|
||||
UUID=????????-????-????-????-????????????|LABEL=*)
|
||||
UUID=????????-????-????-????-????????????|LABEL=*|PARTLABEL=*|PARTUUID=????????-????-????-????-????????????)
|
||||
printf 'ENV{ID_FS_%s}=="%s"' "${1%%=*}" "${1#*=}"
|
||||
;;
|
||||
UUID=*)
|
||||
printf 'ENV{ID_FS_UUID}=="%s*"' "${1#*=}"
|
||||
;;
|
||||
/dev/?*) printf 'KERNEL=="%s"' "${1#/dev/}" ;;
|
||||
PARTUUID=*)
|
||||
printf 'ENV{ID_FS_PARTUUID}=="%s*"' "${1#*=}"
|
||||
;;
|
||||
/dev/?*) printf -- 'KERNEL=="%s"' "${1#/dev/}" ;;
|
||||
*) return 255 ;;
|
||||
esac
|
||||
}
|
||||
@@ -754,7 +759,7 @@ inst_hook() {
|
||||
|
||||
if [ -n "$onetime" ]; then
|
||||
{
|
||||
echo '[ -e "$_job" ] && rm "$_job"'
|
||||
echo '[ -e "$_job" ] && rm -f -- "$_job"'
|
||||
echo "$_exe $@"
|
||||
} > "/tmp/$$-${_job}.sh"
|
||||
else
|
||||
@@ -867,12 +872,12 @@ cancel_wait_for_dev()
|
||||
{
|
||||
local _name
|
||||
_name="$(str_replace "$1" '/' '\\x2f')"
|
||||
rm -f "$hookdir/initqueue/finished/devexists-${_name}.sh"
|
||||
rm -f "$hookdir/emergency/80-${_name}.sh"
|
||||
rm -f -- "$hookdir/initqueue/finished/devexists-${_name}.sh"
|
||||
rm -f -- "$hookdir/emergency/80-${_name}.sh"
|
||||
if [ -n "$DRACUT_SYSTEMD" ]; then
|
||||
_name=$(dev_unit_name "$1")
|
||||
rm -f ${PREFIX}/etc/systemd/system/initrd.target.requires/${_name}.device
|
||||
rm -f ${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf
|
||||
rm -f -- ${PREFIX}/etc/systemd/system/initrd.target.requires/${_name}.device
|
||||
rm -f -- ${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf
|
||||
/sbin/initqueue --onetime --unique --name daemon-reload systemctl daemon-reload
|
||||
fi
|
||||
}
|
||||
@@ -921,9 +926,34 @@ wait_for_loginit()
|
||||
fi
|
||||
|
||||
setdebug
|
||||
rm -f /run/initramfs/loginit.pipe /run/initramfs/loginit.pid
|
||||
rm -f -- /run/initramfs/loginit.pipe /run/initramfs/loginit.pid
|
||||
}
|
||||
|
||||
# pidof version for root
|
||||
if ! command -v pidof >/dev/null 2>/dev/null; then
|
||||
pidof() {
|
||||
local _cmd
|
||||
local _exe
|
||||
local _rl
|
||||
local i
|
||||
_cmd="$1"
|
||||
[ -z "$_cmd" ] && return 1
|
||||
_exe=$(type -P "$1")
|
||||
for i in /proc/*/exe; do
|
||||
[ -e "$i" ] || return 1
|
||||
if [ -n "$_exe" ]; then
|
||||
[ "$i" -ef "$_cmd" ] || continue
|
||||
else
|
||||
_rl=$(readlink -f "$i");
|
||||
[ "${_rl%/$_cmd}" != "$_rl" ] || continue
|
||||
fi
|
||||
i=${i%/exe}
|
||||
echo ${i##/proc/}
|
||||
done
|
||||
return 0
|
||||
}
|
||||
fi
|
||||
|
||||
_emergency_shell()
|
||||
{
|
||||
local _name="$1"
|
||||
@@ -931,13 +961,13 @@ _emergency_shell()
|
||||
> /.console_lock
|
||||
echo "PS1=\"$_name:\\\${PWD}# \"" >/etc/profile
|
||||
systemctl start dracut-emergency.service
|
||||
rm -f /etc/profile
|
||||
rm -f /.console_lock
|
||||
rm -f -- /etc/profile
|
||||
rm -f -- /.console_lock
|
||||
else
|
||||
debug_off
|
||||
echo
|
||||
/sbin/sosreport
|
||||
echo 'You might want to save "/run/initramfs/sosreport.txt" to a USB stick or /boot'
|
||||
/sbin/rdsosreport
|
||||
echo 'You might want to save "/run/initramfs/rdsosreport.txt" to a USB stick or /boot'
|
||||
echo 'after mounting them and attach it to a bug report.'
|
||||
if ! RD_DEBUG= getargbool 0 rd.debug -d -y rdinitdebug -d -y rdnetdebug; then
|
||||
echo
|
||||
|
@@ -37,13 +37,6 @@ fi
|
||||
RD_DEBUG=""
|
||||
. /lib/dracut-lib.sh
|
||||
|
||||
if [ -x $systemdutildir/systemd-timestamp ]; then
|
||||
RD_TIMESTAMP=$($systemdutildir/systemd-timestamp)
|
||||
else
|
||||
read RD_TIMESTAMP _tmp < /proc/uptime
|
||||
unset _tmp
|
||||
fi
|
||||
|
||||
setdebug
|
||||
|
||||
if ! ismounted /dev; then
|
||||
@@ -85,7 +78,21 @@ if ! ismounted /run; then
|
||||
mount -t tmpfs -o mode=0755,nosuid,nodev,strictatime tmpfs /newrun >/dev/null
|
||||
cp -a /run/* /newrun >/dev/null 2>&1
|
||||
mount --move /newrun /run
|
||||
rm -fr /newrun
|
||||
rm -fr -- /newrun
|
||||
fi
|
||||
|
||||
if command -v kmod >/dev/null 2>/dev/null; then
|
||||
kmod static-nodes --format=tmpfiles 2>/dev/null | \
|
||||
while read type file mode a a a majmin; do
|
||||
case $type in
|
||||
d)
|
||||
mkdir -m $mode -p $file
|
||||
;;
|
||||
c)
|
||||
mknod -m $mode $file $type ${majmin%:*} ${majmin#*:}
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
trap "action_on_fail Signal caught!" 0
|
||||
@@ -174,7 +181,7 @@ while :; do
|
||||
check_finished && break
|
||||
|
||||
if [ -f $hookdir/initqueue/work ]; then
|
||||
rm $hookdir/initqueue/work
|
||||
rm -f -- $hookdir/initqueue/work
|
||||
fi
|
||||
|
||||
for job in $hookdir/initqueue/*.sh; do
|
||||
@@ -237,7 +244,7 @@ while :; do
|
||||
usable_root "$NEWROOT" && break;
|
||||
warn "$NEWROOT has no proper rootfs layout, ignoring and removing offending mount hook"
|
||||
umount "$NEWROOT"
|
||||
rm -f "$f"
|
||||
rm -f -- "$f"
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -285,8 +292,8 @@ if [ $UDEVVERSION -lt 168 ]; then
|
||||
udevadm control --stop-exec-queue
|
||||
|
||||
HARD=""
|
||||
while pidof systemd-udevd >/dev/null 2>&1; do
|
||||
for pid in $(pidof systemd-udevd); do
|
||||
while pidof udevd >/dev/null 2>&1; do
|
||||
for pid in $(pidof udevd); do
|
||||
kill $HARD $pid >/dev/null 2>&1
|
||||
done
|
||||
HARD="-9"
|
||||
@@ -317,7 +324,7 @@ for i in $(export -p); do
|
||||
esac
|
||||
done
|
||||
. /tmp/export.orig 2>/dev/null || :
|
||||
rm -f /tmp/export.orig
|
||||
rm -f -- /tmp/export.orig
|
||||
|
||||
initargs=""
|
||||
read CLINE </proc/cmdline
|
||||
@@ -356,7 +363,7 @@ fi
|
||||
wait_for_loginit
|
||||
|
||||
# remove helper symlink
|
||||
[ -h /dev/root ] && rm -f /dev/root
|
||||
[ -h /dev/root ] && rm -f -- /dev/root
|
||||
|
||||
getarg rd.break -d rdbreak && emergency_shell -n switch_root "Break before switch_root"
|
||||
info "Switching root"
|
||||
|
@@ -46,7 +46,7 @@ shift
|
||||
[ -x "$exe" ] || exe=$(command -v $exe)
|
||||
|
||||
{
|
||||
[ -n "$onetime" ] && echo '[ -e "$job" ] && rm "$job"'
|
||||
[ -n "$onetime" ] && echo '[ -e "$job" ] && rm -f -- "$job"'
|
||||
[ -n "$env" ] && echo "$env"
|
||||
echo "$exe $@"
|
||||
} > "/tmp/$$-${job}.sh"
|
||||
|
@@ -14,7 +14,7 @@ exec 6>/run/initramfs/init.log
|
||||
|
||||
while read line; do
|
||||
if [ "$line" = "DRACUT_LOG_END" ]; then
|
||||
rm -f /run/initramfs/loginit.pipe
|
||||
rm -f -- /run/initramfs/loginit.pipe
|
||||
exit 0
|
||||
fi
|
||||
echo "<31>dracut: $line" >&5
|
||||
|
@@ -13,11 +13,12 @@ depends() {
|
||||
|
||||
install() {
|
||||
local _d
|
||||
dracut_install mount mknod mkdir pidof sleep chroot \
|
||||
|
||||
dracut_install mount mknod mkdir sleep chroot \
|
||||
sed ls flock cp mv dmesg rm ln rmmod mkfifo umount readlink setsid
|
||||
inst $(command -v modprobe) /sbin/modprobe
|
||||
|
||||
dracut_install -o findmnt less
|
||||
dracut_install -o findmnt less kmod
|
||||
|
||||
if [ ! -e "${initdir}/bin/sh" ]; then
|
||||
dracut_install bash
|
||||
@@ -43,7 +44,7 @@ install() {
|
||||
inst_script "$moddir/init.sh" "/init"
|
||||
inst_script "$moddir/initqueue.sh" "/sbin/initqueue"
|
||||
inst_script "$moddir/loginit.sh" "/sbin/loginit"
|
||||
inst_script "$moddir/sosreport.sh" "/sbin/sosreport"
|
||||
inst_script "$moddir/rdsosreport.sh" "/sbin/rdsosreport"
|
||||
|
||||
[ -e "${initdir}/lib" ] || mkdir -m 0755 -p ${initdir}/lib
|
||||
mkdir -m 0755 -p ${initdir}/lib/dracut
|
||||
@@ -60,7 +61,11 @@ install() {
|
||||
fi
|
||||
|
||||
mkdir -p "${initdir}/var"
|
||||
dracut_install -o $systemdutildir/systemd-timestamp
|
||||
|
||||
if ! dracut_module_included "systemd"; then
|
||||
dracut_install -o $systemdutildir/systemd-timestamp
|
||||
fi
|
||||
|
||||
if [[ $realinitpath ]]; then
|
||||
for i in $realinitpath; do
|
||||
echo "rd.distroinit=$i"
|
||||
@@ -99,21 +104,24 @@ install() {
|
||||
ln -sf initrd-release $initdir/etc/os-release
|
||||
|
||||
## save host_devs which we need bring up
|
||||
(
|
||||
if dracut_module_included "systemd"; then
|
||||
DRACUT_SYSTEMD=1
|
||||
fi
|
||||
PREFIX="$initdir"
|
||||
if [[ -f "$initdir/lib/dracut/need-initqueue" ]] || ! dracut_module_included "systemd"; then
|
||||
(
|
||||
if dracut_module_included "systemd"; then
|
||||
DRACUT_SYSTEMD=1
|
||||
fi
|
||||
PREFIX="$initdir"
|
||||
|
||||
. "$moddir/dracut-lib.sh"
|
||||
. "$moddir/dracut-lib.sh"
|
||||
|
||||
for _dev in ${host_devs[@]}; do
|
||||
_pdev=$(get_persistent_dev $_dev)
|
||||
for _dev in ${host_devs[@]}; do
|
||||
[[ "$_dev" == "$root_dev" ]] && continue
|
||||
_pdev=$(get_persistent_dev $_dev)
|
||||
|
||||
case "$_pdev" in
|
||||
/dev/?*) wait_for_dev $_pdev;;
|
||||
*) ;;
|
||||
esac
|
||||
done
|
||||
)
|
||||
case "$_pdev" in
|
||||
/dev/?*) wait_for_dev $_pdev;;
|
||||
*) ;;
|
||||
esac
|
||||
done
|
||||
)
|
||||
fi
|
||||
}
|
||||
|
@@ -1,10 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
echo 'Generating "/run/initramfs/sosreport.txt"'
|
||||
echo 'Generating "/run/initramfs/rdsosreport.txt"'
|
||||
|
||||
[ -d /run/initramfs ] || mkdir -p /run/initramfs
|
||||
|
||||
exec >/run/initramfs/sosreport.txt 2>&1
|
||||
exec >/run/initramfs/rdsosreport.txt 2>&1
|
||||
|
||||
set -x
|
||||
|
@@ -76,7 +76,7 @@ install() {
|
||||
_helpers="$fscks"
|
||||
fi
|
||||
|
||||
if strstr "$_helpers" e2fsck && [ -e /etc/e2fsck.conf ]; then
|
||||
if [[ "$_helpers" == *e2fsck* ]] && [ -e /etc/e2fsck.conf ]; then
|
||||
inst_simple /etc/e2fsck.conf
|
||||
fi
|
||||
|
||||
|
@@ -86,7 +86,7 @@ _check_shutdown() {
|
||||
[ -e "$__f" ] || continue
|
||||
( . "$__f" $1 )
|
||||
if [ $? -eq 0 ]; then
|
||||
rm -f $__f
|
||||
rm -f -- $__f
|
||||
__s=0
|
||||
fi
|
||||
done
|
||||
|
@@ -3,7 +3,7 @@
|
||||
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
|
||||
> "/etc/udev/rules.d/$x"
|
||||
done
|
||||
rm /etc/lvm/lvm.conf
|
||||
rm -f -- /etc/lvm/lvm.conf
|
||||
udevadm control --reload
|
||||
set -e
|
||||
# save a partition at the beginning for future flagging purposes
|
||||
|
@@ -20,7 +20,7 @@ test_run() {
|
||||
}
|
||||
|
||||
test_setup() {
|
||||
rm -f $TESTDIR/root.ext3
|
||||
rm -f -- $TESTDIR/root.ext3
|
||||
# Create the blank file to use as a root filesystem
|
||||
dd if=/dev/null of=$TESTDIR/root.ext3 bs=1M seek=80
|
||||
|
||||
@@ -66,7 +66,7 @@ test_setup() {
|
||||
-d "piix ide-gd_mod ata_piix ext3 sd_mod" \
|
||||
--nomdadmconf \
|
||||
-f $TESTDIR/initramfs.makeroot $KVERSION || return 1
|
||||
rm -rf $TESTDIR/overlay
|
||||
rm -rf -- $TESTDIR/overlay
|
||||
# Invoke KVM and/or QEMU to actually create the target filesystem.
|
||||
|
||||
$testdir/run-qemu \
|
||||
|
@@ -3,7 +3,7 @@
|
||||
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
|
||||
> "/etc/udev/rules.d/$x"
|
||||
done
|
||||
rm /etc/lvm/lvm.conf
|
||||
rm -f -- /etc/lvm/lvm.conf
|
||||
udevadm control --reload
|
||||
set -e
|
||||
# save a partition at the beginning for future flagging purposes
|
||||
|
@@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
TEST_DESCRIPTION="root filesystem on a ext3 filesystem"
|
||||
|
||||
KVERSION=${KVERSION-$(uname -r)}
|
||||
KVERSION="${KVERSION-$(uname -r)}"
|
||||
|
||||
# Uncomment this to debug failures
|
||||
#DEBUGFAIL="rd.shell"
|
||||
@@ -16,7 +16,7 @@ test_run() {
|
||||
}
|
||||
|
||||
test_setup() {
|
||||
rm -f $TESTDIR/root.ext3
|
||||
rm -f -- $TESTDIR/root.ext3
|
||||
# Create the blank file to use as a root filesystem
|
||||
dd if=/dev/null of=$TESTDIR/root.ext3 bs=1M seek=80
|
||||
|
||||
@@ -62,7 +62,7 @@ test_setup() {
|
||||
-d "piix ide-gd_mod ata_piix ext3 sd_mod" \
|
||||
--nomdadmconf \
|
||||
-f $TESTDIR/initramfs.makeroot $KVERSION || return 1
|
||||
rm -rf $TESTDIR/overlay
|
||||
rm -rf -- $TESTDIR/overlay
|
||||
# Invoke KVM and/or QEMU to actually create the target filesystem.
|
||||
|
||||
$testdir/run-qemu \
|
||||
|
@@ -3,7 +3,7 @@
|
||||
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
|
||||
> "/etc/udev/rules.d/$x"
|
||||
done
|
||||
rm /etc/lvm/lvm.conf
|
||||
rm -f -- /etc/lvm/lvm.conf
|
||||
udevadm control --reload
|
||||
set -e
|
||||
# save a partition at the beginning for future flagging purposes
|
||||
|
@@ -45,8 +45,8 @@ test_run() {
|
||||
}
|
||||
|
||||
test_setup() {
|
||||
rm -f $TESTDIR/root.btrfs
|
||||
rm -f $TESTDIR/usr.btrfs
|
||||
rm -f -- $TESTDIR/root.btrfs
|
||||
rm -f -- $TESTDIR/usr.btrfs
|
||||
# Create the blank file to use as a root filesystem
|
||||
dd if=/dev/null of=$TESTDIR/root.btrfs bs=1M seek=160
|
||||
dd if=/dev/null of=$TESTDIR/usr.btrfs bs=1M seek=160
|
||||
@@ -101,7 +101,7 @@ test_setup() {
|
||||
# echo $TESTDIR/overlay
|
||||
# echo $TESTDIR/initramfs.makeroot
|
||||
#exit 1
|
||||
rm -rf $TESTDIR/overlay
|
||||
rm -rf -- $TESTDIR/overlay
|
||||
|
||||
$testdir/run-qemu \
|
||||
-hda $TESTDIR/root.btrfs \
|
||||
@@ -126,7 +126,7 @@ test_setup() {
|
||||
-d "piix ide-gd_mod ata_piix btrfs sd_mod i6300esb ib700wdt" \
|
||||
-f $TESTDIR/initramfs.testing $KVERSION || return 1
|
||||
|
||||
rm -rf $TESTDIR/overlay
|
||||
rm -rf -- $TESTDIR/overlay
|
||||
|
||||
# -o "plymouth network md dmraid multipath fips caps crypt btrfs resume dmsquash-live dm"
|
||||
}
|
||||
|
@@ -3,7 +3,7 @@
|
||||
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
|
||||
> "/etc/udev/rules.d/$x"
|
||||
done
|
||||
rm /etc/lvm/lvm.conf
|
||||
rm -f -- /etc/lvm/lvm.conf
|
||||
udevadm control --reload
|
||||
set -e
|
||||
# save a partition at the beginning for future flagging purposes
|
||||
|
@@ -8,7 +8,7 @@ export KVERSION=${KVERSION-$(uname -r)}
|
||||
#DEBUGFAIL="rd.shell rd.break"
|
||||
#DEBUGFAIL="rd.shell"
|
||||
#DEBUGOUT="quiet systemd.log_level=debug systemd.log_target=console loglevel=77 rd.info rd.debug"
|
||||
DEBUGOUT="loglevel=0 systemd.log_level=debug"
|
||||
DEBUGOUT="loglevel=0 "
|
||||
client_run() {
|
||||
local test_name="$1"; shift
|
||||
local client_opts="$*"
|
||||
@@ -21,7 +21,7 @@ client_run() {
|
||||
-hdb $TESTDIR/usr.btrfs \
|
||||
-hdc $TESTDIR/result \
|
||||
-m 256M -smp 2 -nographic \
|
||||
-net none -kernel /boot/vmlinuz-$KVERSION \
|
||||
-net none \
|
||||
-append "root=LABEL=dracut $client_opts rd.retry=3 console=ttyS0,115200n81 selinux=0 $DEBUGOUT $DEBUGFAIL" \
|
||||
-initrd $TESTDIR/initramfs.testing
|
||||
|
||||
@@ -46,8 +46,8 @@ test_run() {
|
||||
}
|
||||
|
||||
test_setup() {
|
||||
rm -f $TESTDIR/root.btrfs
|
||||
rm -f $TESTDIR/usr.btrfs
|
||||
rm -f -- $TESTDIR/root.btrfs
|
||||
rm -f -- $TESTDIR/usr.btrfs
|
||||
# Create the blank file to use as a root filesystem
|
||||
dd if=/dev/null of=$TESTDIR/root.btrfs bs=1M seek=320
|
||||
dd if=/dev/null of=$TESTDIR/usr.btrfs bs=1M seek=320
|
||||
@@ -72,7 +72,7 @@ test_setup() {
|
||||
|
||||
dracut_install sh df free ls shutdown poweroff stty cat ps ln ip route \
|
||||
mount dmesg ifconfig dhclient mkdir cp ping dhclient \
|
||||
umount strace less setsid tree systemctl
|
||||
umount strace less setsid tree systemctl reset
|
||||
|
||||
for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
|
||||
[ -f ${_terminfodir}/l/linux ] && break
|
||||
@@ -87,12 +87,17 @@ test_setup() {
|
||||
inst /lib/systemd/systemd-remount-fs
|
||||
inst /lib/systemd/system/systemd-journal-flush.service
|
||||
inst /etc/sysconfig/init
|
||||
inst /lib/systemd/system/slices.target
|
||||
inst /lib/systemd/system/system.slice
|
||||
dracut_install -o /lib/systemd/system/dracut*
|
||||
|
||||
# make a journal directory
|
||||
mkdir -p $initdir/var/log/journal
|
||||
|
||||
# install some basic config files
|
||||
dracut_install -o \
|
||||
/etc/machine-id \
|
||||
/etc/adjtime \
|
||||
/etc/sysconfig/init \
|
||||
/etc/passwd \
|
||||
/etc/shadow \
|
||||
@@ -106,10 +111,6 @@ test_setup() {
|
||||
|
||||
# we want an empty environment
|
||||
> $initdir/etc/environment
|
||||
> $initdir/etc/machine-id
|
||||
|
||||
# set the hostname
|
||||
echo systemd-testsuite > $initdir/etc/hostname
|
||||
|
||||
# setup the testsuite target
|
||||
cat >$initdir/etc/systemd/system/testsuite.target <<EOF
|
||||
@@ -203,7 +204,7 @@ EOF
|
||||
cp -a /etc/ld.so.conf* $initdir/etc
|
||||
ldconfig -r "$initdir"
|
||||
ddebug "Strip binaeries"
|
||||
find "$initdir" -perm +111 -type f | xargs strip --strip-unneeded | ddebug
|
||||
find "$initdir" -perm +111 -type f | xargs -r strip --strip-unneeded | ddebug
|
||||
|
||||
# copy depmod files
|
||||
inst /lib/modules/$kernel/modules.order
|
||||
@@ -242,13 +243,12 @@ EOF
|
||||
# echo $TESTDIR/overlay
|
||||
# echo $TESTDIR/initramfs.makeroot
|
||||
#exit 1
|
||||
rm -rf $TESTDIR/overlay
|
||||
rm -rf -- $TESTDIR/overlay
|
||||
|
||||
$testdir/run-qemu \
|
||||
-hda $TESTDIR/root.btrfs \
|
||||
-hdb $TESTDIR/usr.btrfs \
|
||||
-m 256M -smp 2 -nographic -net none \
|
||||
-kernel "/boot/vmlinuz-$kernel" \
|
||||
-append "root=/dev/fakeroot rw rootfstype=btrfs quiet console=ttyS0,115200n81 selinux=0" \
|
||||
-initrd $TESTDIR/initramfs.makeroot || return 1
|
||||
grep -F -m 1 -q dracut-root-block-created $TESTDIR/root.btrfs || return 1
|
||||
@@ -263,11 +263,12 @@ EOF
|
||||
)
|
||||
sudo $basedir/dracut.sh -l -i $TESTDIR/overlay / \
|
||||
-a "debug systemd" \
|
||||
-I "/etc/machine-id /etc/hostname" \
|
||||
-o "dash network plymouth lvm mdraid resume crypt i18n caps dm terminfo usrmount" \
|
||||
-d "piix ide-gd_mod ata_piix btrfs sd_mod i6300esb ib700wdt" \
|
||||
-f $TESTDIR/initramfs.testing $KVERSION || return 1
|
||||
|
||||
rm -rf $TESTDIR/overlay
|
||||
rm -rf -- $TESTDIR/overlay
|
||||
|
||||
# -o "plymouth network md dmraid multipath fips caps crypt btrfs resume dmsquash-live dm"
|
||||
}
|
||||
|
@@ -3,14 +3,14 @@
|
||||
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
|
||||
> "/etc/udev/rules.d/$x"
|
||||
done
|
||||
rm /etc/lvm/lvm.conf
|
||||
rm -f -- /etc/lvm/lvm.conf
|
||||
udevadm control --reload
|
||||
# save a partition at the beginning for future flagging purposes
|
||||
sfdisk -C 1280 -H 2 -S 32 -L /dev/sda <<EOF
|
||||
,16
|
||||
,400
|
||||
,400
|
||||
,400
|
||||
sfdisk -C 2560 -H 2 -S 32 -L /dev/sda <<EOF
|
||||
,32
|
||||
,800
|
||||
,800
|
||||
,800
|
||||
EOF
|
||||
mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 /dev/sda2 /dev/sda3 /dev/sda4
|
||||
# wait for the array to finish initailizing, otherwise this sometimes fails
|
||||
|
@@ -1,6 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
[ -b /dev/mapper/$2 ] && exit 0
|
||||
[ -b "/dev/mapper/$2" ] && exit 0
|
||||
echo -n test >/keyfile
|
||||
/sbin/cryptsetup luksOpen $1 $2 </keyfile
|
||||
|
||||
/sbin/cryptsetup luksOpen "$1" "$2" </keyfile
|
||||
|
@@ -5,7 +5,7 @@ KVERSION=${KVERSION-$(uname -r)}
|
||||
|
||||
# Uncomment this to debug failures
|
||||
#DEBUGFAIL="rd.shell rd.udev.log-priority=debug loglevel=70 systemd.log_target=kmsg"
|
||||
#DEBUGFAIL="rd.debug rd.break=pre-mount rd.shell"
|
||||
#DEBUGFAIL="rd.break rd.shell"
|
||||
test_run() {
|
||||
DISKIMAGE=$TESTDIR/TEST-10-RAID-root.img
|
||||
$testdir/run-qemu \
|
||||
@@ -20,8 +20,8 @@ test_run() {
|
||||
test_setup() {
|
||||
DISKIMAGE=$TESTDIR/TEST-10-RAID-root.img
|
||||
# Create the blank file to use as a root filesystem
|
||||
rm -f $DISKIMAGE
|
||||
dd if=/dev/null of=$DISKIMAGE bs=1M seek=40
|
||||
rm -f -- $DISKIMAGE
|
||||
dd if=/dev/null of=$DISKIMAGE bs=1M seek=80
|
||||
|
||||
kernel=$KVERSION
|
||||
# Create what will eventually be our root filesystem onto an overlay
|
||||
@@ -64,7 +64,7 @@ test_setup() {
|
||||
-d "piix ide-gd_mod ata_piix ext2 sd_mod" \
|
||||
--nomdadmconf \
|
||||
-f $TESTDIR/initramfs.makeroot $KVERSION || return 1
|
||||
rm -rf $TESTDIR/overlay
|
||||
rm -rf -- $TESTDIR/overlay
|
||||
# Invoke KVM and/or QEMU to actually create the target filesystem.
|
||||
$testdir/run-qemu \
|
||||
-hda $DISKIMAGE \
|
||||
|
@@ -3,7 +3,7 @@
|
||||
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
|
||||
> "/etc/udev/rules.d/$x"
|
||||
done
|
||||
rm /etc/lvm/lvm.conf
|
||||
rm -f -- /etc/lvm/lvm.conf
|
||||
udevadm control --reload
|
||||
# save a partition at the beginning for future flagging purposes
|
||||
sfdisk -C 1280 -H 2 -S 32 -L /dev/sda <<EOF
|
||||
|
@@ -60,7 +60,7 @@ test_setup() {
|
||||
-m "dash lvm mdraid udev-rules base rootfs-block kernel-modules" \
|
||||
-d "piix ide-gd_mod ata_piix ext2 sd_mod" \
|
||||
-f $TESTDIR/initramfs.makeroot $KVERSION || return 1
|
||||
rm -rf $TESTDIR/overlay
|
||||
rm -rf -- $TESTDIR/overlay
|
||||
# Invoke KVM and/or QEMU to actually create the target filesystem.
|
||||
$testdir/run-qemu -hda $TESTDIR/root.ext2 -m 256M -smp 2 -nographic -net none \
|
||||
-kernel "/boot/vmlinuz-$kernel" \
|
||||
|
@@ -6,7 +6,7 @@ trap 'poweroff -f' EXIT
|
||||
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
|
||||
> "/etc/udev/rules.d/$x"
|
||||
done
|
||||
rm /etc/lvm/lvm.conf
|
||||
rm -f -- /etc/lvm/lvm.conf
|
||||
udevadm control --reload
|
||||
# save a partition at the beginning for future flagging purposes
|
||||
sfdisk -C 1280 -H 2 -S 32 -L /dev/sda <<EOF
|
||||
|
@@ -55,7 +55,7 @@ test_run() {
|
||||
|
||||
test_setup() {
|
||||
# Create the blank file to use as a root filesystem
|
||||
rm -f $TESTDIR/root.ext2
|
||||
rm -f -- $TESTDIR/root.ext2
|
||||
dd if=/dev/null of=$TESTDIR/root.ext2 bs=1M seek=40
|
||||
dd if=/dev/null of=$TESTDIR/disk1.img bs=1M seek=20
|
||||
dd if=/dev/null of=$TESTDIR/disk2.img bs=1M seek=20
|
||||
@@ -100,7 +100,7 @@ test_setup() {
|
||||
-m "dash crypt lvm mdraid udev-rules base rootfs-block kernel-modules" \
|
||||
-d "piix ide-gd_mod ata_piix ext2 sd_mod" \
|
||||
-f $TESTDIR/initramfs.makeroot $KVERSION || return 1
|
||||
rm -rf $TESTDIR/overlay
|
||||
rm -rf -- $TESTDIR/overlay
|
||||
# Invoke KVM and/or QEMU to actually create the target filesystem.
|
||||
$testdir/run-qemu \
|
||||
-hda $TESTDIR/root.ext2 \
|
||||
|
@@ -4,7 +4,7 @@ set -x
|
||||
for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
|
||||
> "/etc/udev/rules.d/$x"
|
||||
done
|
||||
rm /etc/lvm/lvm.conf
|
||||
rm -f -- /etc/lvm/lvm.conf
|
||||
udevadm control --reload
|
||||
# save a partition at the beginning for future flagging purposes
|
||||
sfdisk -C 2560 -H 2 -S 32 -L /dev/sda <<EOF
|
||||
|
@@ -55,7 +55,7 @@ test_run() {
|
||||
|
||||
test_setup() {
|
||||
# Create the blank file to use as a root filesystem
|
||||
rm -f $TESTDIR/root.ext2
|
||||
rm -f -- $TESTDIR/root.ext2
|
||||
dd if=/dev/null of=$TESTDIR/root.ext2 bs=1M seek=80
|
||||
|
||||
kernel=$KVERSION
|
||||
@@ -97,7 +97,7 @@ test_setup() {
|
||||
-m "dash crypt lvm mdraid udev-rules base rootfs-block kernel-modules" \
|
||||
-d "piix ide-gd_mod ata_piix ext2 sd_mod" \
|
||||
-f $TESTDIR/initramfs.makeroot $KVERSION || return 1
|
||||
rm -rf $TESTDIR/overlay
|
||||
rm -rf -- $TESTDIR/overlay
|
||||
# Invoke KVM and/or QEMU to actually create the target filesystem.
|
||||
$testdir/run-qemu -hda $TESTDIR/root.ext2 -m 256M -smp 2 -nographic -net none \
|
||||
-kernel "/boot/vmlinuz-$kernel" \
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user