Compare commits

...

72 Commits
038 ... 040

Author SHA1 Message Date
Harald Hoyer
ab2f95e45e dracut: fixed module dependency handling
Fail for "--modules" and "--force-add" dracut modules, if they or their
dependencies cannot be included.
2014-10-24 13:19:58 +02:00
Harald Hoyer
eda73c0ad2 test: add "fs-lib" to dracut module list 2014-10-24 13:19:34 +02:00
Harald Hoyer
f44b084660 TEST-99-RPM: ignore more files 2014-10-24 13:18:35 +02:00
Harald Hoyer
cfd51d2be2 TEST-30-ISCSI: udev does not export path_id for iscsi
therefore root=iscsi.... does not work anymore :-/

disabled for now
2014-10-24 13:17:30 +02:00
Harald Hoyer
d829e7fce2 dmsquash-live: addresss the device via it's symlink
Otherwise multipath parts might be passed, before it's assembled.

https://bugzilla.redhat.com/show_bug.cgi?id=1152948
2014-10-24 11:16:26 +02:00
Harald Hoyer
246d285561 Makefile: removed dangling space 2014-10-24 09:37:19 +02:00
Harald Hoyer
192990ce85 NEWS: update 2014-10-24 09:37:03 +02:00
Vaughan Cao
7a3e1a0e4a Add hyperv-keyboard kernel module for Hyper-V Gen2 VM
The synthetic keyboard of a Gen2 Linux VM doesn't work before the
hyperv_keyboard module is loaded. Without it, we can't cancel the media check
phase if boot with rd.live.check option.
Gen1 Linux VM doesn't have the same issue because the host emulates the legacy
i8042 keyboard for Gen1 VM.

Signed-off-by: Vaughan Cao <vaughan.cao@oracle.com>
2014-10-24 09:10:14 +02:00
Harald Hoyer
3507635bc6 TODO: update 2014-10-24 09:00:56 +02:00
Harald Hoyer
b4692d07ee mdraid: also accept ID_FS_UUID for rd.md.uuid
As blkid also reports MD_UUID as ID_FS_UUID, although in slightly
different format, accept it also.
2014-10-23 14:37:02 +02:00
Harald Hoyer
05065741f0 network/net-lib.sh:is_persistent_ethernet_name() eth* is not
eth* is _not_ a persistent ethernet name... tsk, tsk, tsk
2014-10-23 14:34:33 +02:00
Will Woods
7e50abfdb8 do 'ip route replace default' instead of 'add'
When you define the gateway for an interface, dracut sets it up with:

  ip route add default via $gw dev $netif

If a default route is already set (e.g. if you have multiple NICs), this
will fail with the message "RTNETLINK answers: File exists".

So, if your first NIC isn't usable as a default route

Using "ip route replace default" instead allows ifup/dhclient-script to
correctly change the default route to the new interface.
2014-09-12 10:22:21 +02:00
Harald Hoyer
a49cac2e65 dracut-functions.sh: exit for missing --force-add or --add dracut modules
Better exit with fail early, so there is no surprise on reboot.
2014-09-12 10:19:28 +02:00
Harald Hoyer
5058ae2d29 qemu: install virtio_console kernel module
https://bugzilla.redhat.com/show_bug.cgi?id=1097999
2014-09-12 10:03:59 +02:00
Harald Hoyer
2f954621cc cms/cmssetup.sh: understand DASD="none"
Treat DASD="none" as unset.

https://bugzilla.redhat.com/show_bug.cgi?id=1096979
2014-09-12 09:59:03 +02:00
Harald Hoyer
d681635512 cms/cmssetup.sh: fixed indention 2014-09-12 09:58:14 +02:00
Harald Hoyer
80043e21c1 ifcfg/write-ifcfg.sh: bind bond and bridge interfaces to HW
either by s390 SUBCHANNELS or HWADDR, if the interface name is not
persistent.

Previously, this was bound unconditionally with HWADDR.
2014-09-12 09:49:58 +02:00
Harald Hoyer
37383f7123 add "--loginstall <DIR>" and loginstall="<DIR>" options
loginstall specifies a directory, in which dracut-install records all
files, which were installed from the host system to the initramfs.

Use case is e.g. to create a list of packages to watch for updates, to
maybe trigger a recreation of the initramfs.
2014-09-11 16:42:36 +02:00
Brian C. Lane
7e692cfd43 Support spaces in mount_nfs (#1109933)
nfs paths may contain spaces, make sure they are preserved when passed
to nfs_to_var and mount.

Related: rhbz#1109933
2014-09-10 11:07:44 +02:00
Harald Hoyer
e3250e2055 replaced ip=auto with ip=dhcp in the documentation
https://bugzilla.redhat.com/show_bug.cgi?id=1086931
2014-09-09 13:35:44 +02:00
Harald Hoyer
29763cb72d network/net-lib.sh: do not enforce iscsi target name policy
also untabified
2014-09-09 13:31:10 +02:00
Harald Hoyer
d4ce0e5e09 dracut.cmdline.7: add iso-scan/filename docs 2014-09-08 16:18:06 +02:00
Harald Hoyer
23ad117c49 kernel-modules: added hid-lcpower 2014-09-08 13:25:53 +02:00
Thomas Renninger
cea907f6bf dracut: Introduce --force-drivers parameter and force_drivers=+ config option
Which will not only add listed drivers, but also enforce that they are
tried to be loaded at early boot time.

This is needed if drivers which are not autoloaded (e.g. loop and a lot
others) shall get loaded via initramfs.
2014-09-08 12:37:52 +02:00
Harald Hoyer
5f2baf7dc6 dracut.sh: change the PATH we search for our binaries
/sbin /bin versions should be used over /usr/sbin and /usr/bin versions,
because non-usr is meant for early boot.

See also https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=755271
2014-09-05 16:42:59 +02:00
Harald Hoyer
8a203398ef ssh-client: handle /etc/ssh/ssh_config
- disable ProxyCommand
- install the GlobalKnownHostsFile

https://bugzilla.redhat.com/show_bug.cgi?id=1086778
2014-08-29 15:27:22 +02:00
Harald Hoyer
967cc19ab1 remove all vim and emacs code format comments 2014-08-29 13:38:47 +02:00
Harald Hoyer
6770af96d4 add kate and emacs per directory config files 2014-08-29 13:38:47 +02:00
Harald Hoyer
e7ba1392e1 install: add more error handling
also limit local variable scopes
and remove bogus checks to negativity of unsigned vars
2014-08-29 13:37:40 +02:00
Harald Hoyer
c23d6ce6ea skipcpio: limit the local var scope 2014-08-29 13:26:32 +02:00
Harald Hoyer
e81836f328 Makefile: add more warnings to CFLAGS 2014-08-29 13:25:54 +02:00
Harald Hoyer
4f03054e54 dracut-shutdown now executes the unpacking on ExecStop
To ensure that unpacking happens before any boot.automount is stopped,
let dracut-shutdown start as a sysinit.target service and unpack on
ExecStop.
2014-08-21 18:45:52 +02:00
Harald Hoyer
85752f0f5f dracut-lib.sh:dev_unit_name(): use systemd-escape, if available 2014-08-21 16:45:12 +02:00
Harald Hoyer
7c752ffaef dracut-lib.sh:cancel_wait_for_dev() fixed double escape 2014-08-21 16:38:35 +02:00
Harald Hoyer
e27ecc9ae8 dracut.sh: source dracut-version.sh earlier than dracut-functions.sh
Otherwise dracut-logger.sh outputs an empty version on journal testing.

Aug 20 10:15:49 lenovo dracut[11144]: dracut-
Aug 20 10:15:49 lenovo dracut[11148]: Executing: /sbin/dracut
2014-08-20 10:21:43 +02:00
Harald Hoyer
8e3f653749 Check kernel config for early microcode and ACPI override
Disable early microcode and ACPI override, if the kernel does not
support it.
2014-08-20 10:13:55 +02:00
Harald Hoyer
e84af01462 url-lib: check for ctorrent binary before adding the url handler 2014-08-15 17:35:11 +02:00
Antony Messerli
338bad6393 Adds bittorrent support for live images
This patch adds bittorrent support to 45url-lib for those that might want
to retrieve the same live image for multiple systems at once without
saturating the network.

This patch requires ctorrent to be installed into initramfs.

Torrent kernel command line format:
root=live:torrent://example.com/liveboot.img.torrent

Start a tracker:
bttrack --bind <tracker_ip> --port 6969 --dfile dstate --reannounce_interval 60

Create the torrent:
ctorrent -t live_image -u http://<tracker_ip>:6969/announce -s live_image.torrent

Seed the initial torrent:
ctorrent live_image.torrent

Boot the live image.
2014-08-15 17:29:33 +02:00
Major Hayden
504c0a8fec Adding support for read/write filesystem images
A user can provide a filesystem image (rootfs.img) inside a compressed
tarball and that filesystem image will be mounted read/write.  This provides
some benefits over a device mapper snapshot overlay, especially when the
live system becomes full.  The boot command line simple needs
"rd.writable.fsimg" added to utilize this feature.

Additional documentation for this option as well as other live boot
options is included.

Signed-off-by: Major Hayden <major@mhtx.net>
2014-08-15 16:05:19 +02:00
Harald Hoyer
bc140a0b29 50-dracut.install: install pregenerated initrd
If there is an already pregenerated initrd at the same location as the
kernel install that and do not generate a new one.
2014-08-15 14:58:34 +02:00
Harald Hoyer
ccb8ce0403 50-dracut.install: fixed /proc/cmdline reading
and beautified the code a bit
2014-08-15 14:58:02 +02:00
Harald Hoyer
95957248a1 51-dracut-rescue.install: fixed /proc/cmdline read 2014-08-15 14:56:59 +02:00
Harald Hoyer
99128f2b64 Makefile:rpm: wget the lgpl license for Source1 2014-08-15 14:03:39 +02:00
Harald Hoyer
80626ded3e Generate reproducible initramfs images
With the same source of files, it should be possible to generate the
same image file with every dracut run.

To accomplish this, we modify the timestamps of the files we generate at
runtime, call gzip with "-n" and cpio with "--reproducible".

The cpio --reproducible option is not yet upstream though, so if you
feel like it should be then please nag at the cpio mailing list.
http://lists.gnu.org/archive/html/bug-cpio/2014-08/msg00000.html
2014-08-15 13:52:02 +02:00
Harald Hoyer
9efb74a32d dracut-functions.sh:get_persistent_dev(): use printf, instead of echo 2014-08-15 12:36:04 +02:00
Nicolas Chauvet
49fe860b22 Introduce ARM specific modules needed by drm 2014-08-15 12:35:01 +02:00
Nicolas Chauvet
b96ea1e196 Categorize needed modules on ARM 2014-08-15 12:35:01 +02:00
Nicolas Chauvet
4a3f3ba68c Test soc path for modalias needed by drm
On ARM, both pci and soc path can be tested for drm.

With this patchset, that was missing in recent kernel,
the tegra_drm case is not needed anymore:
http://patchwork.ozlabs.org/patch/361765/
http://www.spinics.net/lists/linux-tegra/msg17948.html
2014-08-15 12:35:01 +02:00
WANG Chao
a628b7caf5 dracut-functions: get_persistent_dev() fall back to the original name
In case of raw disk/partition, ex. /dev/vda1, which doesn't contain any
filesystem on it. get_persistent_dev() would return empty. Now fix it to
return its original name, /dev/vda1 in above case. So that we don't have
to check its return string every time.

Signed-off-by: WANG Chao <chaowang@redhat.com>
2014-08-15 12:35:01 +02:00
Harald Hoyer
11b5db88c2 dracut.usage.asc: also add a link for RHEL-7 storage admin guide 2014-08-15 11:50:31 +02:00
Harald Hoyer
e02a29e7a2 dracut.usage.asc: extend parameters for shutdown debug procedure 2014-08-15 11:44:26 +02:00
Harald Hoyer
ae488efa5e i18n: check for $i18n_install_all == "yes" rather than being set
i18n_install_all="no" does not have the expected effect without this
patch
2014-08-14 12:56:53 +02:00
Alex Harpin
32125a976b bridging: update the ifcfg files generated for bridge slaves
Update the ifcfg files generated for bridge slaves so they reference
the bridge they are part of.  Related to early patch submitted as a
fix for Bug #1123552.

Bug #1123552 https://bugzilla.redhat.com/show_bug.cgi?id=1123552
2014-08-11 20:16:06 +02:00
Harald Hoyer
068531232b test: make testsuite work with the new systemd minimal root req
systemd needs more directories to switch root
2014-08-08 13:34:04 +02:00
Harald Hoyer
2db6d71118 fixed bridge setup
renamed "ethnames" in bridge.info to "bridgeslaves"

fixed ifcfg generation
2014-08-01 13:16:29 +02:00
Harald Hoyer
4e1f8d0c5f TEST-20-NFS: add more commands and fix client root dirs 2014-08-01 13:15:44 +02:00
Harald Hoyer
28d03673f9 TEST-20-NFS:client-init.sh: add shell on rd.shell 2014-08-01 13:15:05 +02:00
Harald Hoyer
ba7dab6dba NEWS: update 2014-07-29 11:04:09 +02:00
Harald Hoyer
caa72f8290 dracut.spec: fixed license file packaging 2014-07-24 14:47:14 +02:00
Harald Hoyer
eab9b75c8a dracut.sh: add DRACUT_PATH
DRACUT_PATH can now be used to specify the PATH used by dracut
to search for binaries instead of the default
/usr/sbin:/sbin:/usr/bin:/bin

This should be set in the distribution config file
/usr/lib/dracut/dracut.conf.d/01-dist.conf
2014-07-22 15:09:02 +02:00
Harald Hoyer
ece72160ce test/TEST-30-ISCSI: add rd.shell to client root 2014-07-22 14:22:21 +02:00
Harald Hoyer
54b68829b6 add "--install-optional" and install_optional_items 2014-07-22 14:09:06 +02:00
Harald Hoyer
7b46244bb9 network: add rd.route parameter 2014-07-22 11:52:52 +02:00
Harald Hoyer
ad8638e04e base/dracut-lib:pidof() turn off debugging 2014-07-22 11:51:40 +02:00
Peter Robinson
611c895772 ARM: update modules for ARM host only options 2014-07-22 09:03:33 +02:00
Harald Hoyer
4ef45f13f4 dracut-functions.sh: fix inst*() functions for "-H" handling
because some inst*() functions check the existance of the source files
and do not know about the "-H" option, some failed to install the
hostonly files.
2014-07-21 16:59:49 +02:00
Praveen_Paladugu@Dell.com
f4eb0d9804 Installing an OS with VLAN enabled to an ISCSI LUN (from ibft)
When installing OS to a VLAN enabled iscsi LUN (extracted from iBFT), "/tmp/net.{xyz}.has_ibft_config" is not being set properly.

Then anaconda installer requires 'BOOTPROTO="ibft"' populated in ifcfg of the vlan interface (ex: ibft0.20), for it to properly populate the kernel parameters post installation. The setting 'BOOTPROTO="ibft"' is populated by write-ifcfg.sh script only if the corresponding interface has a file /tmp/net.{xyz}.has_inft_config

To get around this issue, in ibft_to_cmdline() function in net-lib.sh file, I made the following changes to populate the has_ibft_config file for the vlan interface(ex: ibft0.20):
2014-07-17 16:36:39 +02:00
Harald Hoyer
5ea0be0a8c dracut-functions.sh: speed up ldconfig_paths() 2014-07-08 12:54:21 +02:00
Harald Hoyer
4adeefc4ab plymouth: also find the pkglibdir on debian 2014-07-08 11:50:51 +02:00
Harald Hoyer
6cd7001b35 dracut.sh: always copy prelink files in FIPS mode
regardless of the the prelink={yes|no} switch
2014-07-08 11:50:04 +02:00
Harald Hoyer
fecc1d69e5 lvm:module-setup.sh: check for existance of 69-dm-lvm-metad.rules
fixup for 12819a5799
2014-07-03 15:04:17 +02:00
Alexander Tsoy
8ca5e8c319 modsign: do not hardcode path to keyctl
https://bugs.gentoo.org/show_bug.cgi?id=506094
2014-07-03 09:22:48 +02:00
267 changed files with 1176 additions and 969 deletions

2
.dir-locals.el Normal file
View File

@@ -0,0 +1,2 @@
(setq sh-basic-offset: 4)
(setq indent-tabs-mode nil)

1
.kateconfig Normal file
View File

@@ -0,0 +1 @@
kate: space-indent on; tab-width 4; indent-width 4; replace-tabs on; eol unix;

9
.kateproject Normal file
View File

@@ -0,0 +1,9 @@
{
"name": "Kate"
, "files": [ { "git": 1 } ]
, "build": {
"directory": "build"
, "build": "make -j $(getconf _NPROCESSORS_ONLN) all"
, "clean": "make clean"
}
}

View File

@@ -1,32 +1,44 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
if [[ -f /etc/kernel/cmdline ]]; then
readarray -t BOOT_OPTIONS < /etc/kernel/cmdline
fi
if ! [[ "${BOOT_OPTIONS[@]}" ]]; then
readarray -t BOOT_OPTIONS < /proc/cmdline
fi
unset noimageifnotneeded
for ((i=0; i < "${#BOOT_OPTIONS[@]}"; i++)); do
if [[ ${BOOT_OPTIONS[$i]} == root\=PARTUUID\=* ]]; then
noimageifnotneeded="yes"
break
fi
done
COMMAND="$1"
KERNEL_VERSION="$2"
BOOT_DIR_ABS="$3"
KERNEL_IMAGE="$4"
ret=0
case "$1" in
case "$COMMAND" in
add)
dracut ${noimageifnotneeded:+--noimageifnotneeded} "$3"/initrd "$2"
INITRD_IMAGE_PREGENERATED=${KERNEL_IMAGE%/*}/initrd
if [[ -f ${INITRD_IMAGE_PREGENERATED} ]]; then
# we found an initrd at the same place as the kernel
# use this and don't generate a new one
cp "$INITRD_IMAGE_PREGENERATED" "$BOOT_DIR_ABS/initrd" \
&& chown root:root "$BOOT_DIR_ABS/initrd" \
&& chmod 0600 "$BOOT_DIR_ABS/initrd" \
&& exit 0
fi
if [[ -f /etc/kernel/cmdline ]]; then
readarray -t BOOT_OPTIONS < /etc/kernel/cmdline
fi
if ! [[ "${BOOT_OPTIONS[@]}" ]]; then
read -ar BOOT_OPTIONS < /proc/cmdline
fi
unset noimageifnotneeded
for ((i=0; i < "${#BOOT_OPTIONS[@]}"; i++)); do
if [[ ${BOOT_OPTIONS[$i]} == root\=PARTUUID\=* ]]; then
noimageifnotneeded="yes"
break
fi
done
dracut ${noimageifnotneeded:+--noimageifnotneeded} "$BOOT_DIR_ABS"/initrd "$KERNEL_VERSION"
ret=$?
;;
remove)
rm -f -- "$3"/initrd
rm -f -- "$BOOT_DIR_ABS"/initrd
ret=$?
;;
esac

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
export LANG=C

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
export LANG=C
@@ -45,7 +43,7 @@ if [[ -f /etc/kernel/cmdline ]]; then
readarray -t BOOT_OPTIONS < /etc/kernel/cmdline
fi
if ! [[ "${BOOT_OPTIONS[@]}" ]]; then
readarray -t BOOT_OPTIONS < /proc/cmdline
read -ar BOOT_OPTIONS < /proc/cmdline
fi
if ! [[ $BOOT_OPTIONS ]]; then
exit 1
@@ -75,7 +73,7 @@ case "$COMMAND" in
echo "Can't copy '$KERNEL_IMAGE to '$BOOT_DIR_ABS/linux'!" >&2
fi
dracut --no-hostonly -a "rescue" "$BOOT_DIR_ABS"/initrd "$2"
dracut --no-hostonly -a "rescue" "$BOOT_DIR_ABS"/initrd "$KERNEL_VERSION"
((ret+=$?))
{

View File

@@ -13,7 +13,7 @@ sysconfdir ?= ${prefix}/etc
bindir ?= ${prefix}/bin
mandir ?= ${prefix}/share/man
CFLAGS ?= -O2 -g -Wall
CFLAGS += -std=gnu99 -D_FILE_OFFSET_BITS=64
CFLAGS += -std=gnu99 -D_FILE_OFFSET_BITS=64 -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2
bashcompletiondir ?= ${datadir}/bash-completion/completions
man1pages = lsinitrd.1
@@ -125,9 +125,9 @@ endif
if [ -n "$(systemdsystemunitdir)" ]; then \
mkdir -p $(DESTDIR)$(systemdsystemunitdir); \
ln -srf $(DESTDIR)$(pkglibdir)/modules.d/98systemd/dracut-shutdown.service $(DESTDIR)$(systemdsystemunitdir)/dracut-shutdown.service; \
mkdir -p $(DESTDIR)$(systemdsystemunitdir)/shutdown.target.wants; \
mkdir -p $(DESTDIR)$(systemdsystemunitdir)/sysinit.target.wants; \
ln -s ../dracut-shutdown.service \
$(DESTDIR)$(systemdsystemunitdir)/shutdown.target.wants/dracut-shutdown.service; \
$(DESTDIR)$(systemdsystemunitdir)/sysinit.target.wants/dracut-shutdown.service; \
mkdir -p $(DESTDIR)$(systemdsystemunitdir)/initrd.target.wants; \
for i in \
dracut-cmdline.service \
@@ -188,7 +188,9 @@ rpm: dracut-$(VERSION).tar.xz syncheck
rpmbuild=$$(mktemp -d -t rpmbuild-dracut.XXXXXX); src=$$(pwd); \
cp dracut-$(VERSION).tar.xz "$$rpmbuild"; \
LC_MESSAGES=C $$src/git2spec.pl $(VERSION) "$$rpmbuild" < dracut.spec > $$rpmbuild/dracut.spec; \
(cd "$$rpmbuild"; rpmbuild --define "_topdir $$PWD" --define "_sourcedir $$PWD" \
(cd "$$rpmbuild"; \
wget https://www.gnu.org/licenses/lgpl-2.1.txt; \
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 )

26
NEWS
View File

@@ -1,3 +1,29 @@
dracut-039
==========
- DRACUT_PATH can now be used to specify the PATH used by dracut
to search for binaries instead of the default
/usr/sbin:/sbin:/usr/bin:/bin
This should be set in the distribution config file
/usr/lib/dracut/dracut.conf.d/01-dist.conf
- add "--loginstall <DIR>" and loginstall="<DIR>" options
to record all files, which are installed from the host fs
- "rd.writable.fsimg" - support for read/write filesystem images
- "rd.route" kernel command line parameter added
- "--install-optional" and install_optional_items added
- find plymouth pkglibdir on debian
- torrent support for live images
root=live:torrent://example.com/liveboot.img.torrent
and generally added as a download handler
- disable microcode, if the kernel does not support it
- speed up ldconfig_paths()
- more ARM modules
- fixed inst*() functions and "-H" handling
- fixed bridge setup
- added --force-drivers parameter and force_drivers=+ config option
to enforce driver loading at early boot time
- documented "iso-scan/filename" usage in grub
- various bugfixes
dracut-038
==========
- "rd.cmdline=ask" will ask the user on the console to enter additional

3
TODO
View File

@@ -47,3 +47,6 @@ Future Enhancement Requests
- run ssh server to enter crypto password or perform debugging (supported by debian)
- https://bugzilla.redhat.com/show_bug.cgi?id=524727 - dracut + encrypted root + networking
- lsinitrd --print-cmdline
- dracut --print-cmdline error if additional arguments
- library for cmdline

2
configure vendored
View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# We don't support srcdir != builddir
echo \#buildapi-variable-no-builddir >/dev/null

View File

@@ -1,7 +1,4 @@
#
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
#
# Copyright 2013 Red Hat, Inc. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
@@ -34,13 +31,16 @@ _dracut() {
--local --hostonly --no-hostonly --fstab --help --bzip2 --lzma
--xz --no-compress --gzip --list-modules --show-modules --keep
--printsize --regenerate-all --noimageifnotneeded --early-microcode
--no-early-microcode --print-cmdline --prelink --noprelink'
--no-early-microcode --print-cmdline --prelink --noprelink --reproducible
'
[ARG]='-a -m -o -d -I -k -c -L --kver --add --force-add --add-drivers
--omit-drivers --modules --omit --drivers --filesystems --install
--fwdir --libdirs --fscks --add-fstab --mount --device --nofscks
--kmoddir --conf --confdir --tmpdir --stdlog --compress --prefix
--kernel-cmdline --sshkey --persistent-policy'
--kernel-cmdline --sshkey --persistent-policy --install-optional
--loginstall
'
)
if __contains_word "$prev" ${OPTS[ARG]}; then
@@ -49,7 +49,7 @@ _dracut() {
comps=$(compgen -d -- "$cur")
compopt -o filenames
;;
-c|--conf|--sshkey|--add-fstab|--add-device|-I|--install)
-c|--conf|--sshkey|--add-fstab|--add-device|-I|--install|--install-optional)
comps=$(compgen -f -- "$cur")
compopt -o filenames
;;

View File

@@ -1,6 +1,4 @@
#!/bin/bash --norc
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
#
# Copyright 2009 Red Hat, Inc. All rights reserved.
#

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
#
# functions used by dracut and other tools.
#
@@ -109,12 +107,11 @@ ldconfig_paths()
local a i
declare -A a
for i in $(
ldconfig -pN 2>/dev/null | while read a b c d; do
[[ "$c" != "=>" ]] && continue
printf "%s\n" ${d%/*};
ldconfig -pN 2>/dev/null | grep -F '=>' | grep -E -v '/(lib|lib64|usr/lib|usr/lib64)/[^/]*$' | while read a b c d; do
d=${d%/*}
printf "%s\n" "$d";
done
); do
[[ "$i" = "/lib" || "$i" = "/usr/lib" || "$i" = "/lib64" || "$i" = "/usr/lib64" ]] && continue
a["$i"]=1;
done;
printf "%s\n" ${!a[@]}
@@ -389,6 +386,7 @@ get_persistent_dev() {
return
fi
done
printf -- "%s" "$1"
}
expand_persistent_dev() {
@@ -739,7 +737,6 @@ fs_get_option() {
done
}
if ! [[ $DRACUT_INSTALL ]]; then
DRACUT_INSTALL=$(find_binary dracut-install)
fi
@@ -761,33 +758,46 @@ inst_dir() {
}
inst() {
local _hostonly_install
if [[ "$1" == "-H" ]]; then
_hostonly_install="-H"
shift
fi
[[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
#dinfo "$DRACUT_INSTALL -l $@"
$DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@"
(($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@" || :
$DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} ${_hostonly_install:+-H} "$@"
(($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} ${_hostonly_install:+-H} "$@" || :
}
inst_simple() {
local _hostonly_install
if [[ "$1" == "-H" ]]; then
_hostonly_install="-H"
shift
fi
[[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
[[ -e $1 ]] || return 1 # no source
$DRACUT_INSTALL ${initdir:+-D "$initdir"} "$@"
(($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} "$@" || :
$DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${_hostonly_install:+-H} "$@"
(($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${_hostonly_install:+-H} "$@" || :
}
inst_symlink() {
local _hostonly_install
if [[ "$1" == "-H" ]]; then
_hostonly_install="-H"
shift
fi
[[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
[[ -L $1 ]] || return 1
$DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@"
(($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@" || :
$DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} ${_hostonly_install:+-H} "$@"
(($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} ${_hostonly_install:+-H} "$@" || :
}
inst_multiple() {
local ret
#dinfo "initdir=$initdir $DRACUT_INSTALL -l $@"
$DRACUT_INSTALL ${initdir:+-D "$initdir"} -a ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@"
ret=$?
(($ret != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} -a ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@" || :
return $ret
local _ret
$DRACUT_INSTALL ${initdir:+-D "$initdir"} -a ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@"
_ret=$?
(($_ret != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} -a ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} ${_hostonly_install:+-H} "$@" || :
return $_ret
}
dracut_install() {
@@ -795,20 +805,25 @@ dracut_install() {
}
inst_library() {
local _hostonly_install
if [[ "$1" == "-H" ]]; then
_hostonly_install="-H"
shift
fi
[[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
[[ -e $1 ]] || return 1 # no source
$DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@"
(($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@" || :
$DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} ${_hostonly_install:+-H} "$@"
(($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} ${_hostonly_install:+-H} "$@" || :
}
inst_binary() {
$DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@"
(($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@" || :
$DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@"
(($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@" || :
}
inst_script() {
$DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@"
(($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@" || :
$DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@"
(($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@" || :
}
mark_hostonly() {
@@ -1299,13 +1314,17 @@ check_mount() {
fi
fi
for _moddep in $(module_depends $_mod); do
# handle deps as if they were manually added
[[ " $add_dracutmodules " == *\ $_moddep\ * ]] || \
add_dracutmodules+=" $_moddep "
[[ " $force_add_dracutmodules " == *\ $_moddep\ * ]] || \
force_add_dracutmodules+=" $_moddep "
[[ " $dracutmodules " == *\ $_mod\ * ]] \
&& [[ " $dracutmodules " != *\ $_moddep\ * ]] \
&& dracutmodules+=" $_moddep "
[[ " $add_dracutmodules " == *\ $_mod\ * ]] \
&& [[ " $add_dracutmodules " != *\ $_moddep\ * ]] \
&& add_dracutmodules+=" $_moddep "
[[ " $force_add_dracutmodules " == *\ $_mod\ * ]] \
&& [[ " $force_add_dracutmodules " != *\ $_moddep\ * ]] \
&& force_add_dracutmodules+=" $_moddep "
# if a module we depend on fail, fail also
if ! check_module $_moddep; then
derror "dracut module '$_mod' depends on '$_moddep', which can't be installed"
@@ -1343,7 +1362,7 @@ check_module() {
fi
if [[ " $dracutmodules $add_dracutmodules $force_add_dracutmodules" == *\ $_mod\ * ]]; then
if [[ " $force_add_dracutmodules " == *\ $_mod\ * ]]; then
if [[ " $dracutmodules $force_add_dracutmodules " == *\ $_mod\ * ]]; then
module_check $_mod 1; ret=$?
else
module_check $_mod 0; ret=$?
@@ -1354,7 +1373,11 @@ check_module() {
# module not in our list
if [[ $dracutmodules = all ]]; then
# check, if we can and should install this module
module_check $_mod || return 1
module_check $_mod; ret=$?
if [[ $ret != 0 ]]; then
[[ $2 ]] && return 1
[[ $ret != 255 ]] && return 1
fi
else
# skip this module
return 1
@@ -1363,10 +1386,15 @@ check_module() {
for _moddep in $(module_depends $_mod); do
# handle deps as if they were manually added
[[ " $add_dracutmodules " == *\ $_moddep\ * ]] || \
add_dracutmodules+=" $_moddep "
[[ " $force_add_dracutmodules " == *\ $_moddep\ * ]] || \
force_add_dracutmodules+=" $_moddep "
[[ " $dracutmodules " == *\ $_mod\ * ]] \
&& [[ " $dracutmodules " != *\ $_moddep\ * ]] \
&& dracutmodules+=" $_moddep "
[[ " $add_dracutmodules " == *\ $_mod\ * ]] \
&& [[ " $add_dracutmodules " != *\ $_moddep\ * ]] \
&& add_dracutmodules+=" $_moddep "
[[ " $force_add_dracutmodules " == *\ $_mod\ * ]] \
&& [[ " $force_add_dracutmodules " != *\ $_moddep\ * ]] \
&& force_add_dracutmodules+=" $_moddep "
# if a module we depend on fail, fail also
if ! check_module $_moddep; then
derror "dracut module '$_mod' depends on '$_moddep', which can't be installed"
@@ -1398,11 +1426,19 @@ for_each_module_dir() {
# Report any missing dracut modules, the user has specified
_modcheck="$add_dracutmodules $force_add_dracutmodules"
[[ $dracutmodules != all ]] && _modcheck="$m $dracutmodules"
[[ $dracutmodules != all ]] && _modcheck="$_modcheck $dracutmodules"
for _mod in $_modcheck; do
[[ " $mods_to_load " == *\ $_mod\ * ]] && continue
[[ " $omit_dracutmodules " == *\ $_mod\ * ]] && continue
[[ " $force_add_dracutmodules " != *\ $_mod\ * ]] \
&& [[ " $dracutmodules " != *\ $_mod\ * ]] \
&& [[ " $omit_dracutmodules " == *\ $_mod\ * ]] \
&& continue
derror "dracut module '$_mod' cannot be found or installed."
[[ " $force_add_dracutmodules " == *\ $_mod\ * ]] && exit 1
[[ " $dracutmodules " == *\ $_mod\ * ]] && exit 1
[[ " $add_dracutmodules " == *\ $_mod\ * ]] && exit 1
done
}
@@ -1505,7 +1541,7 @@ dracut_kernel_post() {
(
if [[ $DRACUT_INSTALL ]] && [[ -z $_moddirname ]]; then
xargs -r $DRACUT_INSTALL ${initdir:+-D "$initdir"} -a < "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist.dep"
xargs -r $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} -a < "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist.dep"
else
while read _modpath; do
local _destpath=$_modpath
@@ -1524,7 +1560,7 @@ dracut_kernel_post() {
for _fwdir in $fw_dir; do
echo $_fwdir/$line;
done;
done | xargs -r $DRACUT_INSTALL ${initdir:+-D "$initdir"} -a -o
done | xargs -r $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} -a -o
else
for _fw in $(xargs -r modinfo -k $kernel -F firmware < "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist.dep"); do
for _fwdir in $fw_dir; do
@@ -1722,6 +1758,24 @@ instmods() {
_ret=$?
return $_ret
}
check_kernel_config()
{
local _config_opt="$1"
local _config_file
[[ -f /boot/config-$kernel ]] \
&& _config_file="/boot/config-$kernel"
[[ -f /lib/modules/$kernel/config ]] \
&& _config_file="/lib/modules/$kernel/config"
# no kernel config file, so return true
[[ $_config_file ]] || return 0
grep -q -F "${_config_opt}=" "$_config_file" && return 0
return 1
}
# get_cpu_vendor
# Only two values are returned: AMD or Intel
get_cpu_vendor ()

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
set -e

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 et filetype=sh
#
# logging faciality module for dracut both at build- and boot-time
#

View File

@@ -136,6 +136,19 @@ example:
----
===============================
**--force-drivers** _<list of kernel modules>_::
See add-drivers above. But in this case it is ensured that the drivers
are tried to be loaded early via modprobe.
+
[NOTE]
===============================
If [LIST] has multiple arguments, then you have to put these in quotes. For
example:
----
# dracut --force-drivers "kmodule1 kmodule2" ...
----
===============================
**--omit-drivers** _<list of kernel modules>_::
specify a space-separated list of kernel modules not to add to the
initramfs.
@@ -349,6 +362,9 @@ example:
----
===============================
**--install-optional** _<file list>_::
install the space separated list of files into the initramfs, if they exist.
**--gzip**::
Compress the generated initramfs using gzip. This will be done by default,
unless another compression option or --no-compress is passed. Equivalent to
@@ -409,6 +425,9 @@ will not be able to boot.
Do not compress the generated initramfs. This will override any other
compression options.
**--reproducible**::
Create reproducible images.
**--list-modules**::
List all available dracut modules.
@@ -443,6 +462,9 @@ will not be able to boot.
Regenerate all initramfs images at the default location with the kernel
versions found on the system. Additional parameters are passed through.
**--loginstall _<DIR>_::
Log all files installed from the host to _<DIR>_.
FILES
-----
_/var/log/dracut.log_::

View File

@@ -109,6 +109,23 @@ resume=UUID=3f5ad593-4546-4a94-a374-bcfb68aa11f7
the init system performs fsck before remount, you might want to use this
option to avoid duplication.
iso-scan/filename
~~~~~~~~~~~~~~~~~
Using iso-scan/filename with a Fedora/Red Hat/CentOS Live iso should just work
by copying the original kernel cmdline parameters.
[listing]
.Example
--
menuentry 'Live Fedora 20' --class fedora --class gnu-linux --class gnu --class os {
set isolabel=Fedora-Live-LXDE-x86_64-20-1
set isofile="/boot/iso/Fedora-Live-LXDE-x86_64-20-1.iso"
loopback loop $isofile
linux (loop)/isolinux/vmlinuz0 boot=isolinux iso-scan/filename=$isofile root=live:LABEL=$isolabel ro rd.live.image quiet rhgb
initrd (loop)/isolinux/initrd0.img
}
--
Misc
~~~~
@@ -493,6 +510,19 @@ WARNING: Do **not** use the default kernel naming scheme for the interface name,
as it can conflict with the kernel names. So, don't use "eth[0-9]+" for the
interface name. Better name it "bootnet" or "bluesocket".
**rd.route=**__<net>__/__<netmask>__:__<gateway>__[:__<interface>__]::
Add a static route with route options, which are separated by a colon.
IPv6 addresses have to be put in brackets.
+
[listing]
.Example
--
rd.route=192.168.200.0/24:192.168.100.222:ens10
rd.route=192.168.200.0/24:192.168.100.222
rd.route=192.168.200.0/24::ens10
rd.route=[2001:DB8:3::/8]:[2001:DB8:2::1]:ens10
--
**bootdev=**__<interface>__::
specify network interface to use routing and netroot information from.
Required if multiple ip= lines are used.
@@ -540,7 +570,7 @@ NFS
~~~
**root=**\[_<server-ip>_:]__<root-dir>__[:__<nfs-options>__]::
mount nfs share from <server-ip>:/<root-dir>, if no server-ip is given, use
dhcp next_server. if server-ip is an IPv6 address it has to be put in
dhcp next_server. If server-ip is an IPv6 address it has to be put in
brackets, e.g. [2001:DB8::1]. NFS options can be appended with the prefix
":" or "," and are seperated by ",".
@@ -720,10 +750,91 @@ rd.znet=qeth,0.0.0600,0.0.0601,0.0.0602,layer2=1,portname=foo
rd.znet=ctc,0.0.0600,0.0.0601,protocol=bar
--
Booting live images
~~~~~~~~~~~~~~~~~~~
Dracut offers multiple options for live booted images:
=====================
squashfs with read-only filesystem image::: The system will boot with a read
only filesystem from the squashfs and apply a writable device mapper snapshot
over the read only filesystem. Using this method ensures a relatively fast
boot and lower RAM usage. Users **must be careful** to avoid writing too many
blocks to the snapshot volume. Once the blocks of the snapshot are exhaused,
the live filesystem becomes unusable and requires a reboot.
+
The filesystem structure is expected to be:
+
[listing]
--
squashfs.img | Squashfs downloaded via network
!(mount)
/LiveOS
|- ext3fs.img | Filesystem image to mount read-only
!(mount)
/bin | Live filesystem
/boot |
/dev |
... |
--
+
Dracut uses this method of live booting by default. No additional command line
options are required other than **root=live:<URL>** to specify the location
of your squashed filesystem.
+
writable filesystem image::: The system will retrieve a compressed filesystem
image, connect it to a loopback device, and mount it as a writable volume. More
RAM is required during boot but the live filesystem is easier to manage if it
becomes full. Users can make a filesystem image of any size and that size will
be maintained when the system boots.
+
The filesystem structure is expected to be:
+
[listing]
--
rootfs.tgz | Compressed tarball containing fileystem image
!(unpack)
/rootfs.img | Filesystem image
!(mount)
/bin | Live filesystem
/boot |
/dev |
... |
--
+
To use this boot option, ensure that **rd.writable_fsimg=1** is in your kernel
command line and add the **root=live:<URL>** to specify the location
of your compressed filesystem image tarball.
=====================
**root=**live:__<url>__::
Boots a live image retrieved from __<url>__. Valid handlers: __http, https, ftp, torrent, tftp__.
+
[listing]
.Example
--
root=live:http://example.com/liveboot.img
root=live:ftp://ftp.example.com/liveboot.img
root=live:torrent://example.com/liveboot.img.torrent
--
**rd.live.debug=**1::
Enables debug output from the live boot process.
**rd.live.dir=**__<path>__::
Specifies the directory within the squashfs where the ext3fs.img or rootfs.img
can be found. By default, this is __LiveOS__.
**rd.writable.fsimg=**1::
Enables writable filesystem support. The system will boot with a fully
writable filesystem without snapshots __(see notes above about available live boot options)__.
You can use the **rootflags** option to set mount options for the live
filesystem as well __(see documentation about rootflags in the **Standard** section above)__.
Plymouth Boot Splash
~~~~~~~~~~~~~~~~~~~~
**plymouth.enable=0**::
disable the plymouth bootsplash completly.
disable the plymouth bootsplash completely.
**rd.plymouth=0**::
disable the plymouth bootsplash only for the initramfs.

View File

@@ -49,6 +49,10 @@ Configuration files must have the extension .conf; other extensions are ignored.
Specify a space-separated list of kernel modules to add to the initramfs.
The kernel modules have to be specified without the ".ko" suffix.
*force_drivers+=*" __<list of kernel modules>__ "::
See add_drivers above. But in this case it is ensured that the drivers
are tried to be loaded early via modprobe.
*omit_drivers+=*" __<kernel modules>__ "::
Specify a space-separated list of kernel modules not to add to the
initramfs. The kernel modules have to be specified without the ".ko" suffix.
@@ -66,6 +70,10 @@ Configuration files must have the extension .conf; other extensions are ignored.
*install_items+=*" __<file>__[ __<file>__ ...] "::
Specify additional files to include in the initramfs, separated by spaces.
*install_optional_items+=*" __<file>__[ __<file>__ ...] "::
Specify additional files to include in the initramfs, separated by spaces,
if they exist.
*do_strip=*"__{yes|no}__"::
Strip binaries in the initramfs (default=yes)
@@ -175,6 +183,12 @@ provide a valid _/etc/fstab_.
*i18n_install_all=*"__{yes|no}__"::
Install everything regardless of generic or hostonly mode.
*reproducible=*"__{yes|no}__"::
Create reproducible images.
*loginstall=*"__<DIR>__"::
Log all files installed from the host to _<DIR>_.
Files
-----
_/etc/dracut.conf_::

View File

@@ -6,7 +6,7 @@ i18n_default_font="latarcyrheb-sun16"
i18n_install_all="yes"
stdloglvl=3
sysloglvl=5
install_items+=" vi /etc/virc ps grep cat rm "
install_optional_items+=" vi /etc/virc ps grep cat rm "
prefix="/"
systemdutildir=/usr/lib/systemd
systemdsystemunitdir=/usr/lib/systemd/system

179
dracut.sh
View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
#
# Generator script for a dracut initramfs
# Tries to retain some degree of compatibility with the command line
@@ -81,6 +79,10 @@ Creates initial ramdisk images for preloading modules
exclusively include in the initramfs.
--add-drivers [LIST] Specify a space-separated list of kernel
modules to add to the initramfs.
--force-drivers [LIST] Specify a space-separated list of kernel
modules to add to the initramfs and make sure they
are tried to be loaded via modprobe same as passing
rd.driver.pre=DRIVER kernel parameter.
--omit-drivers [LIST] Specify a space-separated list of kernel
modules not to add to the initramfs.
--filesystems [LIST] Specify a space-separated list of kernel filesystem
@@ -158,6 +160,8 @@ Creates initial ramdisk images for preloading modules
in the final initramfs.
-I, --install [LIST] Install the space separated list of files into the
initramfs.
--install-optional [LIST] Install the space separated list of files into the
initramfs, if they exist.
--gzip Compress the generated initramfs using gzip.
This will be done by default, unless another
compression option or --no-compress is passed.
@@ -170,10 +174,10 @@ Creates initial ramdisk images for preloading modules
--xz Compress the generated initramfs using xz.
Make sure that your kernel has xz support compiled
in, otherwise you will not be able to boot.
--lzo Compress the generated initramfs using lzop.
--lzo Compress the generated initramfs using lzop.
Make sure that your kernel has lzo support compiled
in, otherwise you will not be able to boot.
--lz4 Compress the generated initramfs using lz4.
--lz4 Compress the generated initramfs using lz4.
Make sure that your kernel has lz4 support compiled
in, otherwise you will not be able to boot.
--compress [COMPRESSION] Compress the generated initramfs with the
@@ -189,6 +193,8 @@ Creates initial ramdisk images for preloading modules
--printsize Print out the module install size
--sshkey [SSHKEY] Add ssh key to initramfs (use with ssh-client module)
--logfile [FILE] Logfile to use (overrides configuration setting)
--reproducible Create reproducible images
--loginstall [DIR] Log all files installed from the host to [DIR]
If [LIST] has multiple arguments, then you have to put these in quotes.
@@ -299,12 +305,14 @@ rearrange_params()
--long add: \
--long force-add: \
--long add-drivers: \
--long force-drivers: \
--long omit-drivers: \
--long modules: \
--long omit: \
--long drivers: \
--long filesystems: \
--long install: \
--long install-optional: \
--long fwdir: \
--long libdirs: \
--long fscks: \
@@ -369,6 +377,8 @@ rearrange_params()
--long noimageifnotneeded \
--long early-microcode \
--long no-early-microcode \
--long reproducible \
--long loginstall: \
-- "$@")
if (( $? != 0 )); then
@@ -463,12 +473,16 @@ while :; do
-a|--add) push add_dracutmodules_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
--force-add) push force_add_dracutmodules_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
--add-drivers) push add_drivers_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
--force-drivers) push force_drivers_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
--omit-drivers) push omit_drivers_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
-m|--modules) push dracutmodules_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
-o|--omit) push omit_dracutmodules_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
-d|--drivers) push drivers_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
--filesystems) push filesystems_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
-I|--install) push install_items_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
--install-optional)
push install_optional_items_l \
"$2"; PARMS_TO_STORE+=" '$2'"; shift;;
--fwdir) push fw_dir_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
--libdirs) push libdirs_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
--fscks) push fscks_l "$2"; PARMS_TO_STORE+=" '$2'"; shift;;
@@ -486,6 +500,7 @@ while :; do
-L|--stdlog) stdloglvl_l="$2"; PARMS_TO_STORE+=" '$2'"; shift;;
--compress) compress_l="$2"; PARMS_TO_STORE+=" '$2'"; shift;;
--prefix) prefix_l="$2"; PARMS_TO_STORE+=" '$2'"; shift;;
--loginstall) loginstall_l="$2"; PARMS_TO_STORE+=" '$2'"; shift;;
--rebuild) if [ $rebuild_file == $outfile ]; then
force=yes
fi
@@ -551,7 +566,7 @@ while :; do
--printsize) printsize="yes";;
--regenerate-all) regenerate_all="yes";;
--noimageifnotneeded) noimageifnotneeded="yes";;
--reproducible) reproducible_l="yes";;
--) shift; break;;
*) # should not even reach this point
@@ -620,21 +635,10 @@ if ! [[ $outfile ]]; then
fi
fi
for i in /usr/sbin /sbin /usr/bin /bin; do
rl=$i
if [ -L "$i" ]; then
rl=$(readlink -f $i)
fi
if [[ "$NPATH" != *:$rl* ]] ; then
NPATH+=":$rl"
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 LD_PRELOAD
unset GREP_OPTIONS
@@ -679,6 +683,20 @@ for f in $(dropindirs_sort ".conf" "$confdir" "$dracutbasedir/dracut.conf.d"); d
[[ -e $f ]] && . "$f"
done
DRACUT_PATH=${DRACUT_PATH:-/sbin /bin /usr/sbin /usr/bin}
for i in $DRACUT_PATH; do
rl=$i
if [ -L "$i" ]; then
rl=$(readlink -f $i)
fi
if [[ "$NPATH" != *:$rl* ]] ; then
NPATH+=":$rl"
fi
done
export PATH="${NPATH#:}"
unset NPATH
# these optins add to the stuff in the config file
if (( ${#add_dracutmodules_l[@]} )); then
while pop add_dracutmodules_l val; do
@@ -716,6 +734,12 @@ if (( ${#install_items_l[@]} )); then
done
fi
if (( ${#install_optional_items_l[@]} )); then
while pop install_optional_items_l val; do
install_optional_items+=" $val "
done
fi
# these options override the stuff in the config file
if (( ${#dracutmodules_l[@]} )); then
dracutmodules=''
@@ -786,6 +810,9 @@ stdloglvl=$((stdloglvl + verbosity_mod_l))
[[ $early_microcode_l ]] && early_microcode=$early_microcode_l
[[ $early_microcode ]] || early_microcode=no
[[ $logfile_l ]] && logfile="$logfile_l"
[[ $reproducible_l ]] && reproducible="$reproducible_l"
[[ $loginstall_l ]] && loginstall="$loginstall_l"
# eliminate IFS hackery when messing with fw_dir
fw_dir=${fw_dir//:/ }
@@ -795,7 +822,7 @@ case $compress in
bzip2) compress="bzip2 -9";;
lzma) compress="lzma -9 -T0";;
xz) compress="xz --check=crc32 --lzma2=dict=1MiB -T0";;
gzip) compress="gzip -9"; command -v pigz > /dev/null 2>&1 && compress="pigz -9";;
gzip) compress="gzip -n -9 --rsyncable"; command -v pigz > /dev/null 2>&1 && compress="pigz -9 -n -T -R";;
lzo) compress="lzop -9";;
lz4) compress="lz4 -l -9";;
esac
@@ -806,6 +833,8 @@ fi
[[ $hostonly = yes ]] && hostonly="-h"
[[ $hostonly != "-h" ]] && unset hostonly
[[ $reproducible == yes ]] && DRACUT_REPRODUCIBLE=1
readonly TMPDIR="$tmpdir"
readonly initdir="$(mktemp --tmpdir="$TMPDIR/" -d -t initramfs.XXXXXX)"
[ -d "$initdir" ] || {
@@ -842,6 +871,10 @@ if [[ $print_cmdline ]]; then
kmsgloglvl=0
fi
if [[ -f $dracutbasedir/dracut-version.sh ]]; then
. $dracutbasedir/dracut-version.sh
fi
if [[ -f $dracutbasedir/dracut-functions.sh ]]; then
. $dracutbasedir/dracut-functions.sh
else
@@ -860,10 +893,6 @@ if ! [[ $print_cmdline ]]; then
rm -fr -- ${initdir}/*
fi
if [[ -f $dracutbasedir/dracut-version.sh ]]; then
. $dracutbasedir/dracut-version.sh
fi
# Verify bash version, current minimum is 3.1
if (( BASH_VERSINFO[0] < 4 )); then
dfatal 'You need at least Bash 4 to use dracut, sorry.'
@@ -888,6 +917,13 @@ if (( ${#add_drivers_l[@]} )); then
fi
add_drivers=${add_drivers/-/_}
if (( ${#force_drivers_l[@]} )); then
while pop force_drivers_l val; do
force_drivers+=" $val "
done
fi
force_drivers=${force_drivers/-/_}
if (( ${#omit_drivers_l[@]} )); then
while pop omit_drivers_l val; do
omit_drivers+=" $val "
@@ -904,6 +940,7 @@ fi
omit_drivers_corrected=""
for d in $omit_drivers; do
[[ " $drivers $add_drivers " == *\ $d\ * ]] && continue
[[ " $drivers $force_drivers " == *\ $d\ * ]] && continue
omit_drivers_corrected+="$d|"
done
omit_drivers="${omit_drivers_corrected%|}"
@@ -960,6 +997,36 @@ if [[ ! $print_cmdline ]]; then
dfatal "No permission to write $outfile."
exit 1
fi
if [[ $loginstall ]]; then
if ! mkdir -p "$loginstall"; then
dfatal "Could not create directory to log installed files to '$loginstall'."
exit 1
fi
loginstall=$(readlink -f "$loginstall")
fi
fi
if [[ $acpi_override = yes ]] && ! check_kernel_config CONFIG_ACPI_INITRD_TABLE_OVERRIDE; then
dwarn "Disabling ACPI override, because kernel does not support it. CONFIG_ACPI_INITRD_TABLE_OVERRIDE!=y"
unset acpi_override
fi
if [[ $early_microcode = yes ]]; then
if [[ $hostonly ]]; then
[[ $(get_cpu_vendor) == "AMD" ]] \
&& ! check_kernel_config CONFIG_MICROCODE_AMD_EARLY \
&& unset early_microcode
[[ $(get_cpu_vendor) == "Intel" ]] \
&& ! check_kernel_config CONFIG_MICROCODE_INTEL_EARLY \
&& unset early_microcode
else
! check_kernel_config CONFIG_MICROCODE_AMD_EARLY \
&& ! check_kernel_config CONFIG_MICROCODE_INTEL_EARLY \
&& unset early_microcode
fi
[[ $early_microcode != yes ]] \
&& dwarn "Disabling early microcode, because kernel does not support it. CONFIG_MICROCODE_[AMD|INTEL]_EARLY!=y"
fi
# Need to be able to have non-root users read stuff (rpcbind etc)
@@ -1153,7 +1220,9 @@ fi
[[ -d "$systemdsystemconfdir" ]] || systemdsystemconfdir=/etc/systemd/system
export initdir dracutbasedir dracutmodules \
export initdir dracutbasedir \
dracutmodules force_add_dracutmodules add_dracutmodules omit_dracutmodules \
mods_to_load \
fw_dir drivers_dir debug no_kernel kernel_only \
omit_drivers mdadmconf lvmconf root_dev \
use_fstab fstab_lines libdirs fscks nofscks ro_mnt \
@@ -1161,7 +1230,7 @@ export initdir dracutbasedir dracutmodules \
debug host_fs_types host_devs sshkey add_fstab \
DRACUT_VERSION udevdir prefix filesystems drivers \
systemdutildir systemdsystemunitdir systemdsystemconfdir \
host_modalias host_modules hostonly_cmdline
host_modalias host_modules hostonly_cmdline loginstall
mods_to_load=""
# check all our modules to see if they should be sourced.
@@ -1296,6 +1365,13 @@ if [[ $no_kernel != yes ]]; then
if [[ $add_drivers ]]; then
hostonly='' instmods -c $add_drivers
fi
if [[ $force_drivers ]]; then
hostonly='' instmods -c $force_drivers
rm -f $initdir/etc/cmdline.d/20-force_driver.conf
for mod in $force_drivers; do
echo "rd.driver.pre=$mod" >>$initdir/etc/cmdline.d/20-force_drivers.conf
done
fi
if [[ $filesystems ]]; then
hostonly='' instmods -c $filesystems
fi
@@ -1317,6 +1393,7 @@ fi
if [[ $kernel_only != yes ]]; then
(( ${#install_items[@]} > 0 )) && inst_multiple ${install_items[@]}
(( ${#install_optional_items[@]} > 0 )) && inst_multiple -o ${install_optional_items[@]}
[[ $kernel_cmdline ]] && printf "%s\n" "$kernel_cmdline" >> "${initdir}/etc/cmdline.d/01-default.conf"
@@ -1400,20 +1477,18 @@ if [[ $kernel_only != yes ]]; then
fi
fi
if [[ $do_prelink == yes ]]; then
PRELINK_BIN="$(command -v prelink)"
if [[ $UID = 0 ]] && [[ $PRELINK_BIN ]]; then
if [[ $DRACUT_FIPS_MODE ]]; then
dinfo "*** Installing prelink files ***"
inst_multiple -o prelink /etc/prelink.conf /etc/prelink.conf.d/*.conf /etc/prelink.cache
else
dinfo "*** Pre-linking files ***"
inst_multiple -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.*
dinfo "*** Pre-linking files done ***"
fi
PRELINK_BIN="$(command -v prelink)"
if [[ $UID = 0 ]] && [[ $PRELINK_BIN ]]; then
if [[ $DRACUT_FIPS_MODE ]]; then
dinfo "*** Installing prelink files ***"
inst_multiple -o prelink /etc/prelink.conf /etc/prelink.conf.d/*.conf /etc/prelink.cache
elif [[ $do_prelink == yes ]]; then
dinfo "*** Pre-linking files ***"
inst_multiple -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.*
dinfo "*** Pre-linking files done ***"
fi
fi
@@ -1484,7 +1559,7 @@ if [[ $acpi_override = yes ]] && [[ -d $acpi_table_dir ]]; then
mkdir -p $_dest_dir
for table in $acpi_table_dir/*.aml; do
dinfo " Adding ACPI table: $table"
cp $table $_dest_dir
cp -a $table $_dest_dir
create_early_cpio="yes"
done
fi
@@ -1498,15 +1573,37 @@ fi
rm -f -- "$outfile"
dinfo "*** Creating image file ***"
if [[ $DRACUT_REPRODUCIBLE ]]; then
find "$initdir" -newer "$dracutbasedir/dracut-functions.sh" -print0 \
| xargs -r -0 touch -h -m -c -r "$dracutbasedir/dracut-functions.sh"
[[ "$(cpio --help)" == *--reproducible* ]] && CPIO_REPRODUCIBLE=1
fi
[[ "$UID" != 0 ]] && cpio_owner_root="-R 0:0"
if [[ $create_early_cpio = yes ]]; then
echo 1 > "$early_cpio_dir/d/early_cpio"
if [[ $DRACUT_REPRODUCIBLE ]]; then
find "$early_cpio_dir/d" -newer "$dracutbasedir/dracut-functions.sh" -print0 \
| xargs -r -0 touch -h -m -c -r "$dracutbasedir/dracut-functions.sh"
fi
# The microcode blob is _before_ the initramfs blob, not after
(cd "$early_cpio_dir/d"; find . -print0 | cpio --null $cpio_owner_root -H newc -o --quiet > $outfile)
(
cd "$early_cpio_dir/d"
find . -print0 | sort -z \
| cpio ${CPIO_REPRODUCIBLE:+--reproducible} --null $cpio_owner_root -H newc -o --quiet > $outfile
)
fi
if ! ( umask 077; cd "$initdir"; find . -print0 | cpio --null $cpio_owner_root -H newc -o --quiet | \
$compress >> "$outfile"; ); then
if ! (
umask 077; cd "$initdir"
find . -print0 | sort -z \
| cpio ${CPIO_REPRODUCIBLE:+--reproducible} --null $cpio_owner_root -H newc -o --quiet \
| $compress >> "$outfile"
); then
dfatal "dracut: creation of $outfile failed"
exit 1
fi

View File

@@ -30,6 +30,8 @@ URL: https://dracut.wiki.kernel.org/
# Source can be generated by
# http://git.kernel.org/?p=boot/dracut/dracut.git;a=snapshot;h=%{version};sf=tgz
Source0: http://www.kernel.org/pub/linux/utils/boot/dracut/dracut-%{version}.tar.xz
Source1: https://www.gnu.org/licenses/lgpl-2.1.txt
BuildRequires: bash git
@@ -194,6 +196,7 @@ This package contains tools to assemble the local initrd and host configuration.
%prep
%setup -q -n %{name}-%{version}
cp %{SOURCE1} .
%if %{defined PATCH1}
git init
@@ -293,8 +296,10 @@ rm -rf -- $RPM_BUILD_ROOT
%files
%defattr(-,root,root,0755)
%if %{with doc}
%doc README HACKING TODO COPYING AUTHORS NEWS dracut.html dracut.png dracut.svg
%doc README HACKING TODO AUTHORS NEWS dracut.html dracut.png dracut.svg
%endif
%{!?_licensedir:%global license %%doc}
%license COPYING lgpl-2.1.txt
%{_bindir}/dracut
# compat symlink
%{_sbindir}/dracut
@@ -394,7 +399,7 @@ rm -rf -- $RPM_BUILD_ROOT
%dir %{_sharedstatedir}/initramfs
%if %{defined _unitdir}
%{_unitdir}/dracut-shutdown.service
%{_unitdir}/shutdown.target.wants/dracut-shutdown.service
%{_unitdir}/sysinit.target.wants/dracut-shutdown.service
%{_unitdir}/dracut-cmdline.service
%{_unitdir}/dracut-initqueue.service
%{_unitdir}/dracut-mount.service
@@ -441,11 +446,6 @@ rm -rf -- $RPM_BUILD_ROOT
%files fips-aesni
%defattr(-,root,root,0755)
%if %{with doc}
%doc COPYING
%endif
%{dracutlibdir}/modules.d/02fips-aesni
%files caps

View File

@@ -209,7 +209,7 @@ be specified once.
----
# mkdir -p rd.live.overlay/etc/cmdline.d
# mkdir -p rd.live.overlay/etc/conf.d
# echo "ip=auto" >> rd.live.overlay/etc/cmdline.d/mycmdline.conf
# echo "ip=dhcp" >> rd.live.overlay/etc/cmdline.d/mycmdline.conf
# echo export FOO=testtest >> rd.live.overlay/etc/conf.d/testvar.conf
# echo export BAR=testtest >> rd.live.overlay/etc/conf.d/testvar.conf
# tree rd.live.overlay/
@@ -259,9 +259,11 @@ local hard drive or it can be served by a PXE/TFTP server.
How to setup your PXE/TFTP server can be found in the
http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/[Red
Hat Enterprise Linux Storage Administration Guide].
Hat Enterprise Linux 6 Storage Administration Guide]
or http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/[Red
Hat Enterprise Linux 7 Storage Administration Guide].
If you specify ip=auto on the kernel command line, then dracut asks a dhcp
If you specify ip=dhcp on the kernel command line, then dracut asks a dhcp
server about the ip adress for the machine. The dhcp server can also serve an
additional root-path, which will set the root device for dracut. With this
mechanism, you have static configuration on your client machine and a
@@ -528,7 +530,7 @@ on _pre-shutdown_ or _shutdown_.
To do this from an already booted system:
----
# mkdir -p /run/initramfs/etc/cmdline.d
# echo "rd.break=pre-shutdown" > /run/initramfs/etc/cmdline.d/debug.conf
# echo "rd.debug rd.break=pre-shutdown rd.break=shutdown" > /run/initramfs/etc/cmdline.d/debug.conf
# touch /run/initramfs/.need_shutdown
----

1
install/.kateconfig Normal file
View File

@@ -0,0 +1 @@
kate: space-indent on; tab-width 8; indent-width 8; replace-tabs on; eol unix;

View File

@@ -1,5 +1,3 @@
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
/* dracut-install.c -- install files and executables
Copyright (C) 2012 Harald Hoyer
@@ -55,7 +53,9 @@ static bool arg_resolvelazy = false;
static bool arg_resolvedeps = false;
static bool arg_hostonly = false;
static char *destrootdir = NULL;
static char *logdir = NULL;
static char *logfile = NULL;
FILE *logfile_f = NULL;
static Hashmap *items = NULL;
static Hashmap *items_failed = NULL;
@@ -222,7 +222,8 @@ static int cp(const char *src, const char *dst)
if (ret == 0) {
struct timeval tv[2];
if (fchown(dest_desc, sb.st_uid, sb.st_gid) != 0)
fchown(dest_desc, (__uid_t) - 1, sb.st_gid);
if(fchown(dest_desc, (__uid_t) - 1, sb.st_gid) != 0)
log_error("Failed to chown %s: %m", dst);
tv[0].tv_sec = sb.st_atime;
tv[0].tv_usec = 0;
tv[1].tv_sec = sb.st_mtime;
@@ -328,18 +329,25 @@ static int resolve_deps(const char *src)
{
int ret = 0;
_cleanup_free_ char *buf = malloc(LINE_MAX);
_cleanup_free_ char *buf = NULL;
size_t linesize = LINE_MAX;
_cleanup_pclose_ FILE *fptr = NULL;
_cleanup_free_ char *cmd = NULL;
buf = malloc(LINE_MAX);
if (buf == NULL)
return -errno;
if (strstr(src, ".so") == 0) {
_cleanup_close_ int fd = -1;
fd = open(src, O_RDONLY | O_CLOEXEC);
if (fd < 0)
return -errno;
read(fd, buf, LINE_MAX);
ret = read(fd, buf, LINE_MAX);
if (ret == -1)
return -errno;
buf[LINE_MAX - 1] = '\0';
if (buf[0] == '#' && buf[1] == '!') {
/* we have a shebang */
@@ -367,7 +375,7 @@ static int resolve_deps(const char *src)
fptr = popen(cmd, "r");
while (!feof(fptr)) {
char *p, *q;
char *p;
if (getline(&buf, &linesize, fptr) <= 0)
continue;
@@ -401,6 +409,8 @@ static int resolve_deps(const char *src)
p = strchr(p, '/');
if (p) {
char *q;
for (q = p; *q && *q != ' ' && *q != '\n'; q++) ;
*q = '\0';
@@ -488,7 +498,14 @@ void mark_hostonly(const char *path)
}
fprintf(f, "%s\n", path);
}
void dracut_log_cp(const char *path)
{
int ret;
ret = fprintf(logfile_f, "%s\n", path);
if (ret < 0)
log_error("Could not append '%s' to logfile '%s': %m", path, logfile);
}
static int dracut_install(const char *src, const char *dst, bool isdir, bool resolvedeps, bool hashdst)
@@ -657,6 +674,8 @@ static int dracut_install(const char *src, const char *dst, bool isdir, bool res
mark_hostonly(dst);
ret += cp(src, fulldstpath);
if (ret == 0 && logfile_f)
dracut_log_cp(src);
log_debug("dracut_install ret = %d", ret);
@@ -682,6 +701,7 @@ static void usage(int status)
" -o --optional If SOURCE does not exist, do not fail\n"
" -d --dir SOURCE is a directory\n"
" -l --ldd Also install shebang executables and libraries\n"
" -L --logdir <DIR> Log files, which were installed from the host to <DIR>\n"
" -R --resolvelazy Only install shebang executables and libraries\n"
" for all SOURCE files\n"
" -H --fips Also install all '.SOURCE.hmac' files\n"
@@ -738,10 +758,11 @@ static int parse_argv(int argc, char *argv[])
{"all", no_argument, NULL, 'a'},
{"fips", no_argument, NULL, 'f'},
{"destrootdir", required_argument, NULL, 'D'},
{"logdir", required_argument, NULL, 'L'},
{NULL, 0, NULL, 0}
};
while ((c = getopt_long(argc, argv, "adfhloD:HR", options, NULL)) != -1) {
while ((c = getopt_long(argc, argv, "adfhlL:oD:HR", options, NULL)) != -1) {
switch (c) {
case ARG_VERSION:
puts(PROGRAM_VERSION_STRING);
@@ -770,6 +791,9 @@ static int parse_argv(int argc, char *argv[])
case 'D':
destrootdir = strdup(optarg);
break;
case 'L':
logdir = strdup(optarg);
break;
case 'f':
arg_hmac = true;
break;
@@ -878,9 +902,9 @@ static int install_one(const char *src, const char *dst)
int ret = 0;
if (strchr(src, '/') == NULL) {
char **q = NULL;
char **p = find_binary(src);
if (p) {
char **q = NULL;
STRV_FOREACH(q, p) {
char *newsrc = *q;
log_debug("dracut_install '%s' '%s'", newsrc, dst);
@@ -914,9 +938,9 @@ static int install_all(int argc, char **argv)
log_debug("Handle '%s'", argv[i]);
if (strchr(argv[i], '/') == NULL) {
char **q = NULL;
char **p = find_binary(argv[i]);
if (p) {
char **q = NULL;
STRV_FOREACH(q, p) {
char *newsrc = *q;
log_debug("dracut_install '%s'", newsrc);
@@ -994,6 +1018,23 @@ int main(int argc, char **argv)
goto finish;
}
if (logdir) {
int ret;
ret = asprintf(&logfile, "%s/%d.log", logdir, getpid());
if (ret < 0) {
log_error("Out of memory!");
exit(EXIT_FAILURE);
}
logfile_f = fopen(logfile, "a");
if (logfile_f == NULL) {
log_error("Could not open %s for logging: %m", logfile);
r = EXIT_FAILURE;
goto finish;
}
}
r = EXIT_SUCCESS;
if (((optind + 1) < argc) && (strcmp(argv[optind + 1], destrootdir) == 0)) {
@@ -1022,6 +1063,8 @@ int main(int argc, char **argv)
r = EXIT_SUCCESS;
finish:
if (logfile_f)
fclose(logfile_f);
while ((i = hashmap_steal_first(items)))
item_free(i);

View File

@@ -1,5 +1,3 @@
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
/***
This file is part of systemd.

View File

@@ -1,5 +1,3 @@
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
#ifndef foohashmaphfoo
#define foohashmaphfoo

View File

@@ -1,5 +1,3 @@
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
/***
This file is part of systemd.
@@ -103,11 +101,10 @@ void log_set_facility(int facility) {
static int write_to_console(
int level,
const char*file,
int line,
unsigned int line,
const char *func,
const char *buffer) {
char location[64];
struct iovec iovec[5];
unsigned n = 0;
@@ -119,7 +116,9 @@ static int write_to_console(
IOVEC_SET_STRING(iovec[n++], "dracut-install: ");
if (show_location) {
snprintf(location, sizeof(location), "(%s:%u) ", file, line);
char location[64];
if (snprintf(location, sizeof(location), "(%s:%u) ", file, line) <= 0)
return -errno;
IOVEC_SET_STRING(iovec[n++], location);
}

View File

@@ -1,5 +1,3 @@
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
#ifndef foologhfoo
#define foologhfoo

View File

@@ -1,5 +1,3 @@
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
#pragma once
/***
@@ -207,7 +205,7 @@ static inline size_t IOVEC_INCREMENT(struct iovec *i, unsigned n, size_t k) {
for (j = 0; j < n; j++) {
size_t sub;
if (_unlikely_(k <= 0))
if (_unlikely_(k == 0))
break;
sub = MIN(i[j].iov_len, k);

View File

@@ -1,5 +1,3 @@
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
/***
This file is part of systemd.
@@ -84,7 +82,7 @@ char **strv_copy(char * const *l) {
return r;
}
unsigned strv_length(char * const *l) {
unsigned int strv_length(char * const *l) {
unsigned n = 0;
if (!l)
@@ -299,7 +297,7 @@ char **strv_split_quoted(const char *s) {
char **strv_split_newlines(const char *s) {
char **l;
unsigned n;
unsigned int n;
assert(s);
@@ -311,7 +309,7 @@ char **strv_split_newlines(const char *s) {
return NULL;
n = strv_length(l);
if (n <= 0)
if (n == 0)
return l;
if (isempty(l[n-1])) {
@@ -491,9 +489,9 @@ char **strv_parse_nulstr(const char *s, size_t l) {
unsigned c = 0, i = 0;
char **v;
assert(s || l <= 0);
assert(s || l == 0);
if (l <= 0)
if (l == 0)
return new0(char*, 1);
for (p = s; p < s + l; p++)

View File

@@ -1,5 +1,3 @@
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
#pragma once
/***
@@ -34,7 +32,7 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(char**, strv_free);
#define _cleanup_strv_free_ _cleanup_(strv_freep)
char **strv_copy(char * const *l);
unsigned strv_length(char * const *l) _pure_;
unsigned int strv_length(char * const *l) _pure_;
char **strv_merge(char **a, char **b);
char **strv_merge_concat(char **a, char **b, const char *suffix);

View File

@@ -1,5 +1,3 @@
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
/***
This file is part of systemd.
@@ -224,7 +222,7 @@ char *strappend(const char *s, const char *suffix) {
char *strjoin(const char *x, ...) {
va_list ap;
size_t l;
char *r, *p;
char *r;
va_start(ap, x);
@@ -257,6 +255,8 @@ char *strjoin(const char *x, ...) {
return NULL;
if (x) {
char *p;
p = stpcpy(r, x);
va_start(ap, x);

View File

@@ -1,5 +1,3 @@
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
#ifndef fooutilhfoo
#define fooutilhfoo

View File

@@ -1,7 +1,4 @@
#
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
#
# Copyright 2013 Red Hat, Inc. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
#
# Copyright 2005-2010 Harald Hoyer <harald@redhat.com>
# Copyright 2005-2010 Red Hat, Inc. All rights reserved.

View File

@@ -1,6 +1,4 @@
#!/bin/bash --norc
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
#
# mkinitrd compability wrapper for SUSE.
#

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# 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

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# 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

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
mount_boot()
{

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
capsmode=$(getarg rd.caps)

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {

View File

@@ -1,6 +1,4 @@
#!/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
#

View File

@@ -1,6 +1,4 @@
#!/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
#
@@ -29,7 +27,7 @@ depends() {
# called by dracut
install() {
inst_dir /lib/modules/keys
inst_binary /usr/bin/keyctl
inst_binary keyctl
inst_hook pre-trigger 01 "$moddir/load-modsign-keys.sh"

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
[ -n "$DRACUT_SYSTEMD" ] && exit 0

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {
@@ -247,7 +245,7 @@ install() {
if checks; then
install_base
if [[ ${hostonly} ]] && ! [[ ${i18n_install_all} ]]; then
if [[ ${hostonly} ]] && ! [[ ${i18n_install_all} == "yes" ]]; then
install_local_i18n || install_all_kbd
else
install_all_kbd

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
inst_key_val() {
local _value

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
ROOT="$1"

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
if getargbool 0 rd.convertfs; then
if getargbool 0 rd.debug; then

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
PATH=/usr/sbin:/usr/bin:/sbin:/bin
@@ -45,7 +43,7 @@ setup_interface() {
valid_lft ${lease_time} preferred_lft ${lease_time} \
dev $netif
[ -n "$gw" ] && echo ip route add default via $gw dev $netif > /tmp/net.$netif.gw
[ -n "$gw" ] && echo ip route replace default via $gw dev $netif > /tmp/net.$netif.gw
[ -n "${search}${domain}" ] && echo "search $search $domain" > /tmp/net.$netif.resolv.conf
if [ -n "$namesrv" ] ; then

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# This script is sourced, so root should be set. But let's be paranoid
[ -z "$root" ] && root=$(getarg root=)

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# if there are no ifname parameters, just use NAME=KERNEL
if ! getarg ifname= >/dev/null ; then

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
#
# We don't need to check for ip= errors here, that is handled by the
# cmdline parser script
@@ -60,7 +58,7 @@ fi
# bridge this interface?
if [ -e /tmp/bridge.info ]; then
. /tmp/bridge.info
for ethname in $ethnames ; do
for ethname in $bridgeslaves ; do
if [ "$netif" = "$ethname" ]; then
if [ "$netif" = "$bondname" ] && [ -n "$DO_BOND_SETUP" ] ; then
: # We need to really setup bond (recursive call)
@@ -145,7 +143,7 @@ do_static() {
ip addr add $ip/$mask ${srv:+peer $srv} brd + dev $netif
fi
[ -n "$gw" ] && echo ip route add default via $gw dev $netif > /tmp/net.$netif.gw
[ -n "$gw" ] && echo ip route replace default via $gw dev $netif > /tmp/net.$netif.gw
[ -n "$hostname" ] && echo "echo $hostname > /proc/sys/kernel/hostname" > /tmp/net.$netif.hostname
return 0
@@ -236,7 +234,7 @@ if [ -e /tmp/bridge.info ]; then
if [ "$netif" = "$bridgename" ] && [ ! -e /tmp/net.$bridgename.up ]; then
brctl addbr $bridgename
brctl setfd $bridgename 0
for ethname in $ethnames ; do
for ethname in $bridgeslaves ; do
if [ "$ethname" = "$bondname" ] ; then
DO_BOND_SETUP=yes ifup $bondname -m
elif [ "$ethname" = "$teammaster" ] ; then

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
for f in /tmp/dhclient.*.pid; do
[ -e $f ] || continue

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
getargbool 0 rd.neednet && NEEDNET=1
@@ -16,7 +14,7 @@ command -v fix_bootif >/dev/null || . /lib/net-lib.sh
# bridge: attempt only the defined interface
if [ -e /tmp/bridge.info ]; then
. /tmp/bridge.info
IFACES="$IFACES ${ethnames%% *}"
IFACES="$IFACES ${bridgeslaves%% *}"
MASTER_IFACES="$MASTER_IFACES $bridgename"
fi

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
get_ip() {
local iface="$1" ip=""
@@ -89,6 +87,7 @@ ifdown() {
setup_net() {
local netif="$1" f="" gw_ip="" netroot_ip="" iface="" IFACES=""
local _p
[ -e /tmp/net.$netif.did-setup ] && return
[ -e /sys/class/net/$netif/address ] && \
[ -e /tmp/net.$(cat /sys/class/net/$netif/address).did-setup ] && return
@@ -103,6 +102,20 @@ setup_net() {
[ -e /tmp/net.$netif.resolv.conf ] && \
cp -f /tmp/net.$netif.resolv.conf /etc/resolv.conf
# add static route
for _p in $(getargs rd.route); do
route_to_var "$_p" || continue
[ -n "$route_dev" ] && [ "$route_dev" != "$netif"] && continue
ip route add "$route_mask" ${route_gw:+via "$route_gw"} ${route_dev:+dev "$route_dev"}
if strstr ":" "$route_mask"; then
printf -- "%s\n" "$route_mask ${route_gw:+via $route_gw} ${route_dev:+dev $route_dev}" \
> /tmp/net.route6."$netif"
else
printf -- "%s\n" "$route_mask ${route_gw:+via $route_gw} ${route_dev:+dev $route_dev}" \
> /tmp/net.route."$netif"
fi
done
# Handle STP Timeout: arping the default gateway.
# (or the root server, if a) it's local or b) there's no gateway.)
# Note: This assumes that if no router is present the
@@ -228,20 +241,25 @@ ibft_to_cmdline() {
fi
if [ -e ${iface}/vlan ]; then
vlan=$(read a < ${iface}/vlan; echo $a)
if [ "$vlan" -ne "0" ]; then
case "$vlan" in
[0-9]*)
echo "vlan=$dev.$vlan:$dev"
;;
*)
echo "vlan=$vlan:$dev"
;;
esac
fi
vlan=$(read a < ${iface}/vlan; echo $a)
if [ "$vlan" -ne "0" ]; then
case "$vlan" in
[0-9]*)
echo "vlan=$dev.$vlan:$dev"
echo $mac > /tmp/net.${dev}.${vlan}.has_ibft_config
;;
*)
echo "vlan=$vlan:$dev"
echo $mac > /tmp/net.${vlan}.has_ibft_config
;;
esac
else
echo $mac > /tmp/net.${dev}.has_ibft_config
fi
else
echo $mac > /tmp/net.${dev}.has_ibft_config
fi
echo $mac > /tmp/net.${dev}.has_ibft_config
done
) >> /etc/cmdline.d/40-ibft.conf
}
@@ -251,66 +269,46 @@ parse_iscsi_root()
local v
v=${1#iscsi:}
# extract authentication info
# extract authentication info
case "$v" in
*@*:*:*:*:*)
authinfo=${v%%@*}
v=${v#*@}
# allow empty authinfo to allow having an @ in iscsi_target_name like this:
# netroot=iscsi:@192.168.1.100::3260::iqn.2009-01.com.example:testdi@sk
if [ -n "$authinfo" ]; then
OLDIFS="$IFS"
IFS=:
set $authinfo
IFS="$OLDIFS"
if [ $# -gt 4 ]; then
warn "Wrong authentication info in iscsi: parameter!"
return 1
fi
iscsi_username=$1
iscsi_password=$2
if [ $# -gt 2 ]; then
iscsi_in_username=$3
iscsi_in_password=$4
fi
fi
;;
*@*:*:*:*:*)
authinfo=${v%%@*}
v=${v#*@}
# allow empty authinfo to allow having an @ in iscsi_target_name like this:
# netroot=iscsi:@192.168.1.100::3260::iqn.2009-01.com.example:testdi@sk
if [ -n "$authinfo" ]; then
OLDIFS="$IFS"
IFS=:
set $authinfo
IFS="$OLDIFS"
if [ $# -gt 4 ]; then
warn "Wrong authentication info in iscsi: parameter!"
return 1
fi
iscsi_username=$1
iscsi_password=$2
if [ $# -gt 2 ]; then
iscsi_in_username=$3
iscsi_in_password=$4
fi
fi
;;
esac
# extract target ip
# extract target ip
case "$v" in
[[]*[]]:*)
iscsi_target_ip=${v#[[]}
iscsi_target_ip=${iscsi_target_ip%%[]]*}
v=${v#[[]$iscsi_target_ip[]]:}
;;
*)
iscsi_target_ip=${v%%[:]*}
v=${v#$iscsi_target_ip:}
;;
[[]*[]]:*)
iscsi_target_ip=${v#[[]}
iscsi_target_ip=${iscsi_target_ip%%[]]*}
v=${v#[[]$iscsi_target_ip[]]:}
;;
*)
iscsi_target_ip=${v%%[:]*}
v=${v#$iscsi_target_ip:}
;;
esac
# extract target name
case "$v" in
*:iqn.*)
iscsi_target_name=iqn.${v##*:iqn.}
v=${v%:iqn.*}:
;;
*:eui.*)
iscsi_target_name=iqn.${v##*:eui.}
v=${v%:iqn.*}:
;;
*:naa.*)
iscsi_target_name=iqn.${v##*:naa.}
v=${v%:iqn.*}:
;;
*)
warn "Invalid iscii target name, should begin with 'iqn.' or 'eui.' or 'naa.'"
return 1
;;
esac
# parse the rest
# parse the rest
OLDIFS="$IFS"
IFS=:
set $v
@@ -318,17 +316,25 @@ parse_iscsi_root()
iscsi_protocol=$1; shift # ignored
iscsi_target_port=$1; shift
if [ $# -eq 3 ]; then
iscsi_iface_name=$1; shift
fi
if [ $# -eq 2 ]; then
iscsi_netdev_name=$1; shift
if [ $# -gt 3 ] && [ -n "$1$2" ]; then
iscsi_iface_name=$1; shift
iscsi_netdev_name=$1; shift
fi
iscsi_lun=$1; shift
if [ $# -ne 0 ]; then
warn "Invalid parameter in iscsi: parameter!"
return 1
if [ $# -gt 2 ]; then
warn "Invalid parameter in iscsi: parameter!"
return 1
fi
if [ $# -eq 2 ]; then
iscsi_target_name="$1:$2"
else
iscsi_target_name="$1"
fi
}
ip_to_var() {
@@ -369,7 +375,7 @@ ip_to_var() {
if [ -n "${9}" -a -n "${10}" -a -n "${11}" -a -n "${12}" -a -n "${13}" -a -n "${14}" ]; then
macaddr="${9}:${10}:${11}:${12}:${13}:${14}"
fi
;;
;;
esac
;;
esac
@@ -395,6 +401,33 @@ ip_to_var() {
fi
}
route_to_var() {
local v=${1}:
local i
set --
while [ -n "$v" ]; do
if [ "${v#\[*:*:*\]:}" != "$v" ]; then
# handle IPv6 address
i="${v%%\]:*}"
i="${i##\[}"
set -- "$@" "$i"
v=${v#\[$i\]:}
else
set -- "$@" "${v%%:*}"
v=${v#*:}
fi
done
unset route_mask route_gw route_dev
case $# in
2) [ -n "$1" ] && route_mask="$1"; [ -n "$2" ] && route_gw="$2"
return 0;;
3) [ -n "$1" ] && route_mask="$1"; [ -n "$2" ] && route_gw="$2"; [ -n "$3" ] && route_dev="$3"
return 0;;
*) return 1;;
esac
}
parse_ifname_opts() {
local IFS=:
set $1
@@ -490,8 +523,8 @@ linkup() {
}
type hostname >/dev/null 2>&1 || \
hostname() {
cat /proc/sys/kernel/hostname
hostname() {
cat /proc/sys/kernel/hostname
}
iface_has_link() {
@@ -520,8 +553,6 @@ find_iface_with_link() {
is_persistent_ethernet_name() {
case "$1" in
# udev persistent interface names
eth[0-9]|eth[0-9][0-9]|eth[0-9][0-9][0-9]*)
;;
eno[0-9]|eno[0-9][0-9]|eno[0-9][0-9][0-9]*)
;;
ens[0-9]|ens[0-9][0-9]|ens[0-9][0-9][0-9]*)

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
PATH=/usr/sbin:/usr/bin:/sbin:/bin
command -v getarg >/dev/null || . /lib/dracut-lib.sh

View File

@@ -1,11 +1,9 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
#
# Format:
# bridge=<bridgename>:<ethnames>
# bridge=<bridgename>:<bridgeslaves>
#
# <ethnames> is a comma-separated list of physical (ethernet) interfaces
# <bridgeslaves> is a comma-separated list of physical (ethernet) interfaces
# bridge without parameters assumes bridge=br0:eth0
#
@@ -25,20 +23,20 @@ parsebridge() {
v=${v#*:}
done
unset bridgename ethnames
unset bridgename bridgeslaves
case $# in
0) bridgename=br0; ethnames=$iface ;;
0) bridgename=br0; bridgeslaves=$iface ;;
1) die "bridge= requires two parameters" ;;
2) bridgename=$1; ethnames=$(str_replace "$2" "," " ") ;;
2) bridgename=$1; bridgeslaves=$(str_replace "$2" "," " ") ;;
*) die "bridge= requires two parameters" ;;
esac
}
unset bridgename ethnames
unset bridgename bridgeslaves
iface=eth0
# Parse bridge for bridgename and ethnames
# Parse bridge for bridgename and bridgeslaves
if bridge="$(getarg bridge)"; then
# Read bridge= parameters if they exist
if [ -n "$bridge" ]; then
@@ -47,9 +45,9 @@ if bridge="$(getarg bridge)"; then
# Simple default bridge
if [ -z "$bridgename" ]; then
bridgename=br0
ethnames=$iface
bridgeslaves=$iface
fi
echo "bridgename=$bridgename" > /tmp/bridge.info
echo "ethnames=\"$ethnames\"" >> /tmp/bridge.info
echo "bridgeslaves=\"$bridgeslaves\"" >> /tmp/bridge.info
return
fi

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
command -v getarg >/dev/null || . /lib/dracut-lib.sh
command -v ibft_to_cmdline >/dev/null || . /lib/net-lib.sh

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
#
# Format:
# ifname=<interface>:<mac>

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
#
# Format:
# ip=[dhcp|on|any]

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# NFS root might have reached here before /tmp/net.ifaces was written
type is_persistent_ethernet_name >/dev/null 2>&1 || . /lib/net-lib.sh
@@ -82,6 +80,20 @@ print_s390() {
return 0
}
interface_bind() {
local netif="$1"
local macaddr="$2"
if ! print_s390 $netif; then
if [ -z "$macaddr" ] && \
! is_persistent_ethernet_name "$netif" && \
[ -f /sys/class/net/$netif/addr_assign_type ] && \
[ "$(cat /sys/class/net/$netif/addr_assign_type)" = "0" ] && \
[ -f /sys/class/net/$netif/address ]; then
echo "HWADDR=\"$(cat /sys/class/net/$netif/address)\""
fi
fi
}
for netup in /tmp/net.*.did-setup ; do
[ -f $netup ] || continue
@@ -114,8 +126,7 @@ for netup in /tmp/net.*.did-setup ; do
if [ "$netif" = "$vlanname" ]; then
vlan=yes
fi
[ -e /sys/class/net/$netif/address ] && \
cat /sys/class/net/$netif/address > /tmp/net.$netif.hwaddr
{
echo "# Generated by dracut initrd"
echo "DEVICE=\"$netif\""
@@ -165,15 +176,7 @@ for netup in /tmp/net.*.did-setup ; do
# standard interface
{
[ -n "$macaddr" ] && echo "MACADDR=\"$macaddr\""
if ! print_s390 $netif; then
if [ -z "$macaddr" ] && \
! is_persistent_ethernet_name "$netif" && \
[ -f /sys/class/net/$netif/addr_assign_type ] && \
[ "$(cat /sys/class/net/$netif/addr_assign_type)" = "0" ] && \
[ -f /sys/class/net/$netif/address ]; then
echo "HWADDR=\"$(cat /sys/class/net/$netif/address)\""
fi
fi
interface_bind "$netif" "$macaddr"
echo "TYPE=Ethernet"
echo "NAME=\"$netif\""
[ -n "$mtu" ] && echo "MTU=\"$mtu\""
@@ -200,21 +203,20 @@ for netup in /tmp/net.*.did-setup ; do
for slave in $bondslaves ; do
# write separate ifcfg file for the raw eth interface
{
(
echo "# Generated by dracut initrd"
echo "DEVICE=\"$slave\""
echo "TYPE=Ethernet"
echo "ONBOOT=yes"
echo "NETBOOT=yes"
if [ -e /tmp/net.${netif}.${slave}.hwaddr ]; then
echo "HWADDR=\"$(cat /tmp/net.${netif}.${slave}.hwaddr)\""
else
echo "HWADDR=\"$(cat /sys/class/net/$slave/address)\""
fi
echo "SLAVE=yes"
echo "MASTER=\"$netif\""
echo "NAME=\"$slave\""
} >> /tmp/ifcfg/ifcfg-$slave
echo "UUID=\"$(cat /proc/sys/kernel/random/uuid)\""
[ -e /tmp/net.$slave.override ] && . /tmp/net.$slave.override
[ -n "$macaddr" ] && echo "MACADDR=\"$macaddr\""
interface_bind "$slave" "$macaddr"
) >> /tmp/ifcfg/ifcfg-$slave
done
fi
@@ -224,50 +226,31 @@ for netup in /tmp/net.*.did-setup ; do
echo "TYPE=Bridge"
echo "NAME=\"$netif\""
} >> /tmp/ifcfg/ifcfg-$netif
if [ "$ethname" = "$bondname" ] ; then
{
echo "# Generated by dracut initrd"
echo "DEVICE=\"$bondname\""
echo "ONBOOT=yes"
echo "NETBOOT=yes"
# This variable is an indicator of a bond interface for initscripts
echo "BONDING_OPTS=\"$bondoptions\""
echo "BRIDGE=\"$netif\""
echo "NAME=\"$bondname\""
} >> /tmp/ifcfg/ifcfg-$bondname
for slave in $bondslaves ; do
# write separate ifcfg file for the raw eth interface
{
echo "# Generated by dracut initrd"
echo "DEVICE=\"$slave\""
echo "TYPE=Ethernet"
echo "ONBOOT=yes"
echo "NETBOOT=yes"
echo "HWADDR=\"$(cat /sys/class/net/$slave/address)\""
echo "SLAVE=yes"
echo "MASTER=\"$bondname\""
echo "NAME=\"$slave\""
} >> /tmp/ifcfg/ifcfg-$slave
done
else
for slave in $bridgeslaves ; do
# write separate ifcfg file for the raw eth interface
{
(
echo "# Generated by dracut initrd"
echo "DEVICE=\"$ethname\""
echo "DEVICE=\"$slave\""
echo "TYPE=Ethernet"
echo "ONBOOT=yes"
echo "NETBOOT=yes"
echo "HWADDR=\"$(cat /sys/class/net/$ethname/address)\""
echo "BRIDGE=\"$netif\""
echo "NAME=\"$ethname\""
} >> /tmp/ifcfg/ifcfg-$ethname
fi
echo "BRIDGE=\"$bridgename\""
echo "NAME=\"$slave\""
echo "UUID=\"$(cat /proc/sys/kernel/random/uuid)\""
[ -e /tmp/net.$slave.override ] && . /tmp/net.$slave.override
[ -n "$macaddr" ] && echo "MACADDR=\"$macaddr\""
interface_bind "$slave" "$macaddr"
) >> /tmp/ifcfg/ifcfg-$slave
done
fi
i=1
for ns in $(getargs nameserver); do
echo "DNS${i}=\"${ns}\"" >> /tmp/ifcfg/ifcfg-$netif
i=$((i+1))
done
[ -f /tmp/net.route6."$netif" ] && cp /tmp/net.route6."$netif" /tmp/ifcfg/route6-"$netif"
[ -f /tmp/net.route."$netif" ] && cp /tmp/net.route."$netif" /tmp/ifcfg/route-"$netif"
done
# Pass network opts

View File

@@ -17,6 +17,7 @@ depends() {
install() {
local _dir _crt _found _lib
inst_simple "$moddir/url-lib.sh" "/lib/url-lib.sh"
inst_multiple -o ctorrent
inst_multiple curl
# also install libs for curl https
inst_libdir_file "libnsspem.so*"

View File

@@ -82,6 +82,38 @@ set_http_header() {
echo "header = \"$1: $2\"" >> $CURL_HOME/.curlrc
}
### TORRENT ##########################################################
ctorrent_args="-E 0 -e 0"
ctorrent_fetch_url() {
local url="$1" outloc="$2"
url=${url#*//}
torrent_outloc="$outloc.torrent"
echo "$url" > /proc/self/fd/0
if [ -n "$outloc" ]; then
curl $curl_args --output - -- "$url" > "$torrent_outloc" || return $?
else
local outdir="$(mkuniqdir /tmp torrent_fetch_url)"
( cd "$outdir"; curl $curl_args --remote-name "$url" || return $? )
torrent_outloc="$outdir/$(ls -A $outdir)"
outloc=${torrent_outloc%.*}
fi
if ! [ -f "$torrent_outloc" ]; then
warn "Downloading '$url' failed!"
return 253
fi
ctorrent $ctorrent_args -s $outloc $torrent_outloc >&2
if ! [ -f "$outloc" ]; then
warn "Torrent download of '$url' failed!"
return 253
fi
if [ -z "$2" ]; then echo "$outloc" ; fi
}
command -v ctorrent >/dev/null \
&& add_url_handler ctorrent_fetch_url torrent
### NFS ##############################################################
[ -e /lib/nfs-lib.sh ] && . /lib/nfs-lib.sh

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {
@@ -51,13 +49,24 @@ installkernel() {
return 0
}
if [[ "$(uname -p)" == arm* ]]; then
# arm specific modules needed by drm
instmods \
"=drivers/gpu/drm/i2c" \
"=drivers/gpu/drm/panel" \
"=drivers/pwm" \
"=drivers/video/backlight" \
"=drivers/video/fbdev/omap2/displays-new" \
${NULL}
fi
for _modname in $(find_kernel_modules_by_path drivers/gpu/drm \
| drm_module_filter) ; do
# if the hardware is present, include module even if it is not currently loaded,
# as we could e.g. be in the installer; nokmsboot boot parameter will disable
# loading of the driver if needed
if [[ $hostonly ]] && modinfo -F alias $_modname | sed -e 's,\?,\.,g' -e 's,\*,\.\*,g' \
| grep -qxf - /sys/bus/pci/devices/*/modalias 2>/dev/null; then
| grep -qxf - /sys/bus/{pci/devices,soc/devices/soc?}/*/modalias 2>/dev/null; then
hostonly='' instmods $_modname
continue
fi

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
CDROOT=0
. /lib/gensplash-lib.sh

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
CDROOT=0
. /lib/gensplash-lib.sh

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
if getargbool 1 rd.splash -d -n rd_NO_SPLASH; then
info "Starting Gentoo Splash"

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {
@@ -15,12 +13,18 @@ depends() {
# called by dracut
install() {
if grep -q nash /usr/libexec/plymouth/plymouth-populate-initrd \
|| [ ! -x /usr/libexec/plymouth/plymouth-populate-initrd ]; then
PKGLIBDIR="/usr/lib/plymouth"
if type -P dpkg-architecture &>/dev/null; then
PKGLIBDIR="/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/plymouth"
fi
[ -x /usr/libexec/plymouth/plymouth-populate-initrd ] && PKGLIBDIR="/usr/libexec/plymouth"
if grep -q nash ${PKGLIBDIR}/plymouth-populate-initrd \
|| [ ! -x ${PKGLIBDIR}/plymouth-populate-initrd ]; then
. "$moddir"/plymouth-populate-initrd.sh
else
PLYMOUTH_POPULATE_SOURCE_FUNCTIONS="$dracutfunctions" \
/usr/libexec/plymouth/plymouth-populate-initrd -t "$initdir"
${PKGLIBDIR}/plymouth-populate-initrd -t "$initdir"
fi
inst_hook emergency 50 "$moddir"/plymouth-emergency.sh

View File

@@ -1,4 +1,3 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
plymouth --hide-splash 2>/dev/null || :

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
if type plymouth >/dev/null 2>&1 && [ -z "$DRACUT_SYSTEMD" ]; then
plymouth --newroot=$NEWROOT

View File

@@ -1,6 +1,5 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
PLYMOUTH_LOGO_FILE="/usr/share/pixmaps/system-logo-white.png"
PLYMOUTH_THEME=$(plymouth-set-default-theme)

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
if type plymouthd >/dev/null 2>&1 && [ -z "$DRACUT_SYSTEMD" ]; then
if getargbool 1 plymouth.enable && getargbool 1 rd.plymouth -d -n rd_NO_PLYMOUTH; then

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
@@ -44,147 +42,147 @@ function dasd_settle() {
}
function dasd_settle_all() {
for dasdccw in $(while read line; do echo ${line%%(*}; done < /proc/dasd/devices) ; do
for dasdccw in $(while read line; do echo "${line%%(*}"; done < /proc/dasd/devices) ; do
if ! dasd_settle $dasdccw ; then
echo $"Could not access DASD $dasdccw in time"
return 1
fi
done
return 0
}
}
# prints a canonocalized device bus ID for a given devno of any format
function canonicalize_devno()
{
case ${#1} in
3) echo "0.0.0${1}" ;;
4) echo "0.0.${1}" ;;
*) echo "${1}" ;;
esac
return 0
}
function canonicalize_devno()
{
case ${#1} in
3) echo "0.0.0${1}" ;;
4) echo "0.0.${1}" ;;
*) echo "${1}" ;;
esac
return 0
}
# read file from CMS and write it to /tmp
function readcmsfile() # $1=dasdport $2=filename
{
local dev
local numcpus
local devname
local ret=0
if [ $# -ne 2 ]; then return; fi
function readcmsfile() # $1=dasdport $2=filename
{
local dev
local numcpus
local devname
local ret=0
if [ $# -ne 2 ]; then return; fi
# precondition: udevd created dasda block device node
if ! dasd_cio_free -d $1 ; then
echo $"DASD $1 could not be cleared from device blacklist"
return 1
fi
if ! dasd_cio_free -d $1 ; then
echo $"DASD $1 could not be cleared from device blacklist"
return 1
fi
modprobe dasd_mod dasd=$CMSDASD
modprobe dasd_eckd_mod
udevadm settle
modprobe dasd_mod dasd=$CMSDASD
modprobe dasd_eckd_mod
udevadm settle
# precondition: dasd_eckd_mod driver incl. dependencies loaded,
# dasd_mod must be loaded without setting any DASD online
dev=$(canonicalize_devno $1)
numcpus=$(
while read line; do
if strstr "$line" "# processors"; then
echo ${line##*:};
break;
fi;
done < /proc/cpuinfo
)
dev=$(canonicalize_devno $1)
numcpus=$(
while read line; do
if strstr "$line" "# processors"; then
echo ${line##*:};
break;
fi;
done < /proc/cpuinfo
)
if [ ${numcpus} -eq 1 ]; then
echo 1 > /sys/bus/ccw/devices/$dev/online
else
if ! sysecho /sys/bus/ccw/devices/$dev/online 1; then
echo $"DASD $dev could not be set online"
return 1
fi
udevadm settle
if ! dasd_settle $dev ; then
echo $"Could not access DASD $dev in time"
return 1
fi
if [ ${numcpus} -eq 1 ]; then
echo 1 > /sys/bus/ccw/devices/$dev/online
else
if ! sysecho /sys/bus/ccw/devices/$dev/online 1; then
echo $"DASD $dev could not be set online"
return 1
fi
udevadm settle
devname=$(cd /sys/bus/ccw/devices/$dev/block; set -- *; [ -b /dev/$1 ] && echo $1)
devname=${devname:-dasda}
[[ -d /mnt ]] || mkdir /mnt
if cmsfs-fuse --to=UTF-8 -a /dev/$devname /mnt; then
cat /mnt/$2 > /run/initramfs/$2
umount /mnt || umount -l /mnt
udevadm settle
else
echo $"Could not read conf file $2 on CMS DASD $1."
ret=1
if ! dasd_settle $dev ; then
echo $"Could not access DASD $dev in time"
return 1
fi
fi
if ! sysecho /sys/bus/ccw/devices/$dev/online 0; then
echo $"DASD $dev could not be set offline again"
udevadm settle
devname=$(cd /sys/bus/ccw/devices/$dev/block; set -- *; [ -b /dev/$1 ] && echo $1)
devname=${devname:-dasda}
[[ -d /mnt ]] || mkdir /mnt
if cmsfs-fuse --to=UTF-8 -a /dev/$devname /mnt; then
cat /mnt/$2 > /run/initramfs/$2
umount /mnt || umount -l /mnt
udevadm settle
else
echo $"Could not read conf file $2 on CMS DASD $1."
ret=1
fi
if ! sysecho /sys/bus/ccw/devices/$dev/online 0; then
echo $"DASD $dev could not be set offline again"
#return 1
fi
udevadm settle
fi
udevadm settle
# unbind all dasds to unload the dasd modules for a clean start
( cd /sys/bus/ccw/drivers/dasd-eckd; for i in *.*; do echo $i > unbind;done)
udevadm settle
modprobe -r dasd_eckd_mod
udevadm settle
modprobe -r dasd_diag_mod
udevadm settle
modprobe -r dasd_mod
udevadm settle
return $ret
}
( cd /sys/bus/ccw/drivers/dasd-eckd; for i in *.*; do echo $i > unbind;done)
udevadm settle
modprobe -r dasd_eckd_mod
udevadm settle
modprobe -r dasd_diag_mod
udevadm settle
modprobe -r dasd_mod
udevadm settle
return $ret
}
processcmsfile()
{
source /tmp/cms.conf
SUBCHANNELS="$(echo $SUBCHANNELS | sed 'y/ABCDEF/abcdef/')"
processcmsfile()
{
source /tmp/cms.conf
SUBCHANNELS="$(echo $SUBCHANNELS | sed 'y/ABCDEF/abcdef/')"
if [[ $NETTYPE ]]; then
(
echo -n $NETTYPE,$SUBCHANNELS
[[ $PORTNAME ]] && echo -n ",portname=$PORTNAME"
[[ $LAYER2 ]] && echo -n ",layer2=$LAYER2"
[[ "$NETTYPE" = "ctc" ]] && [[ $CTCPROT ]] && echo -n ",protocol=$CTCPROT"
echo
) >> /etc/ccw.conf
if [[ $NETTYPE ]]; then
(
echo -n $NETTYPE,$SUBCHANNELS
[[ $PORTNAME ]] && echo -n ",portname=$PORTNAME"
[[ $LAYER2 ]] && echo -n ",layer2=$LAYER2"
[[ "$NETTYPE" = "ctc" ]] && [[ $CTCPROT ]] && echo -n ",protocol=$CTCPROT"
echo
) >> /etc/ccw.conf
OLDIFS=$IFS
IFS=,
read -a subch_array <<< "indexzero,$SUBCHANNELS"
IFS=$OLDIFS
devbusid=${subch_array[1]}
if [ "$NETTYPE" = "ctc" ]; then
driver="ctcm"
else
driver=$NETTYPE
fi
OLDIFS=$IFS
IFS=,
read -a subch_array <<< "indexzero,$SUBCHANNELS"
IFS=$OLDIFS
devbusid=${subch_array[1]}
if [ "$NETTYPE" = "ctc" ]; then
driver="ctcm"
else
driver=$NETTYPE
fi
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
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
[[ -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
znet_cio_free
fi
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
znet_cio_free
fi
if [[ $DASD ]]; then
echo $DASD | normalize_dasd_arg > /etc/dasd.conf
echo "options dasd_mod dasd=$DASD" > /etc/modprobe.d/dasd_mod.conf
dasd_cio_free
fi
if [[ $DASD ]] && [[ $DASD != "none" ]]; then
echo $DASD | normalize_dasd_arg > /etc/dasd.conf
echo "options dasd_mod dasd=$DASD" > /etc/modprobe.d/dasd_mod.conf
dasd_cio_free
fi
unset _do_zfcp
for i in ${!FCP_*}; do
echo "${!i}" | while read port rest; do
case $port in
unset _do_zfcp
for i in ${!FCP_*}; do
echo "${!i}" | while read port rest; do
case $port in
*.*.*)
;;
*.*)
@@ -193,23 +191,23 @@ function dasd_settle_all() {
*)
port="0.0.$port"
;;
esac
echo $port $rest >> /etc/zfcp.conf
done
_do_zfcp=1
esac
echo $port $rest >> /etc/zfcp.conf
done
[[ $_do_zfcp ]] && zfcp_cio_free
unset _do_zfcp
}
_do_zfcp=1
done
[[ $_do_zfcp ]] && zfcp_cio_free
unset _do_zfcp
}
[[ $CMSDASD ]] || CMSDASD=$(getarg "CMSDASD=")
[[ $CMSCONFFILE ]] || CMSCONFFILE=$(getarg "CMSCONFFILE=")
[[ $CMSDASD ]] || CMSDASD=$(getarg "CMSDASD=")
[[ $CMSCONFFILE ]] || CMSCONFFILE=$(getarg "CMSCONFFILE=")
# Parse configuration
if [ -n "$CMSDASD" -a -n "$CMSCONFFILE" ]; then
if readcmsfile $CMSDASD $CMSCONFFILE; then
ln -s /run/initramfs/$CMSCONFFILE /tmp/$CMSCONFFILE
ln -s /run/initramfs/$CMSCONFFILE /tmp/cms.conf
processcmsfile
fi
if [ -n "$CMSDASD" -a -n "$CMSCONFFILE" ]; then
if readcmsfile $CMSDASD $CMSCONFFILE; then
ln -s /run/initramfs/$CMSCONFFILE /tmp/$CMSCONFFILE
ln -s /run/initramfs/$CMSCONFFILE /tmp/cms.conf
processcmsfile
fi
fi

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {

View File

@@ -1,6 +1,5 @@
#!/bin/sh
# -*- 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

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
command -v getarg >/dev/null || . /lib/dracut-lib.sh

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
. /lib/dracut-lib.sh
type crypttab_contains >/dev/null 2>&1 || . /lib/dracut-crypt-lib.sh

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
PATH=/usr/sbin:/usr/bin:/sbin:/bin
NEWROOT=${NEWROOT:-"/sysroot"}

View File

@@ -1,6 +1,4 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# called by dracut
check() {

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
type crypttab_contains >/dev/null 2>&1 || . /lib/dracut-crypt-lib.sh

View File

@@ -1,6 +1,4 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
if getargbool 1 rd.luks -n rd_NO_LUKS && \
[ -n "$(getarg rd.luks.key)" ]; then

Some files were not shown because too many files have changed in this diff Show More