Browse Source

Add "rd.cmdline=ask" kernel command line parameter

prompts the user for additional kernel command line parameters
master
Harald Hoyer 11 years ago
parent
commit
f232f6623d
  1. 3
      dracut.cmdline.7.asc
  2. 33
      modules.d/98systemd/dracut-cmdline-ask.service
  3. 20
      modules.d/98systemd/dracut-cmdline-ask.sh
  4. 2
      modules.d/98systemd/dracut-cmdline.sh
  5. 2
      modules.d/98systemd/module-setup.sh
  6. 8
      modules.d/99base/init.sh

3
dracut.cmdline.7.asc

@ -86,6 +86,9 @@ rootfstype=ext3 @@ -86,6 +86,9 @@ rootfstype=ext3
was built on. This helps booting, if any disk layout changed, especially in
combination with rd.auto or other parameters specifying the layout.

**rd.cmdline=ask**::
prompts the user for additional kernel command line parameters

**rd.fstab=0**::
do not honor special mount options for the root filesystem found in
_/etc/fstab_ of the real root.

33
modules.d/98systemd/dracut-cmdline-ask.service

@ -0,0 +1,33 @@ @@ -0,0 +1,33 @@
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.

# See systemd.special(7) for details

[Unit]
Description=dracut ask for additional cmdline parameters
DefaultDependencies=no
Before=dracut-cmdline.service
After=systemd-journald.socket
Wants=systemd-journald.socket
ConditionPathExists=/etc/initrd-release
ConditionKernelCommandLine=rd.cmdline=ask

[Service]
Environment=DRACUT_SYSTEMD=1
Environment=NEWROOT=/sysroot
Type=oneshot
ExecStart=-/bin/dracut-cmdline-ask
StandardInput=tty
StandardOutput=inherit
StandardError=inherit
RemainAfterExit=yes
KillMode=process
IgnoreSIGPIPE=no

# Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
# terminates cleanly.
KillSignal=SIGHUP

20
modules.d/98systemd/dracut-cmdline-ask.sh

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

sleep 0.5
echo
sleep 0.5
echo
sleep 0.5
echo
echo
echo
echo
echo "Enter additional kernel command line parameter (end with ctrl-d or .)"
while read -e -p "> " line; do
[[ "$line" == "." ]] && break
[[ "$line" ]] && printf -- "%s\n" "$line" >> /etc/cmdline.d/99-cmdline-ask.conf
done

exit 0

2
modules.d/98systemd/dracut-cmdline.sh

@ -11,7 +11,9 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh @@ -11,7 +11,9 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
[ -n "$VERSION" ] && info "dracut-$VERSION"

if ! getargbool 1 'rd.hostonly'; then
[ -f /etc/cmdline.d/99-cmdline-ask.conf ] && mv /etc/cmdline.d/99-cmdline-ask.conf /tmp/99-cmdline-ask.conf
remove_hostonly_files
[ -f /tmp/99-cmdline-ask.conf ] && mv /tmp/99-cmdline-ask.conf /etc/cmdline.d/99-cmdline-ask.conf
fi

info "Using kernel command line parameters:"

2
modules.d/98systemd/module-setup.sh

@ -187,6 +187,7 @@ install() { @@ -187,6 +187,7 @@ install() {
ln_r "${systemdsystemunitdir}/initrd.target" "${systemdsystemunitdir}/default.target"

inst_script "$moddir/dracut-cmdline.sh" /bin/dracut-cmdline
inst_script "$moddir/dracut-cmdline-ask.sh" /bin/dracut-cmdline-ask
inst_script "$moddir/dracut-pre-udev.sh" /bin/dracut-pre-udev
inst_script "$moddir/dracut-pre-trigger.sh" /bin/dracut-pre-trigger
inst_script "$moddir/dracut-initqueue.sh" /bin/dracut-initqueue
@ -216,6 +217,7 @@ install() { @@ -216,6 +217,7 @@ install() {
mkdir -p "${initdir}/$systemdsystemunitdir/initrd.target.wants"
for i in \
dracut-cmdline.service \
dracut-cmdline-ask.service \
dracut-initqueue.service \
dracut-mount.service \
dracut-pre-mount.service \

8
modules.d/99base/init.sh

@ -112,6 +112,14 @@ fi @@ -112,6 +112,14 @@ fi

source_conf /etc/conf.d

if getarg "rd.cmdline=ask"; then
echo "Enter additional kernel command line parameter (end with ctrl-d or .)"
while read -p "> " line; do
[ "$line" = "." ] && break
echo "$line" >> /etc/cmdline.d/99-cmdline-ask.conf
done
fi

if ! getargbool 1 'rd.hostonly'; then
remove_hostonly_files
fi

Loading…
Cancel
Save