[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#867677: initramfs-tools: [patch] feature request: provide hook to set host name in InitRAMFS config dynamically



Package: initramfs-tools
Version: 0.130
Severity: wishlist
Tags: patch

Dear Maintainer,

when connecting to the InitRAMFS via network (e.g. encrypted root fs), then it is
helpful if the machine can be registered by its name in the DNS, making it possible
to connect to it via its DNS name. Otherwise you have to look up the assigned ip in
the DHCP server log.
Therefore please provide a config and hook that dynamically sets the host name
on InitRAMFS creation.

My current workaround consists of a simple config file and a simple hook script:
/etc/initramfs-tools/conf.d/network
/etc/initramfs-tools/hooks/set_hostname_in_network_config.sh

This workaround is easy to use on any machine without manually editing the host name
on installation or whenever it changes. Also avoiding typos of the host name.
Additionally it gives an explicit point where to define your network configuration
for InitRAMFS-only (not as a kernel command line).

Would be great if you could consider adding this to the package.

Kind regards
Maddes

-- Package-specific info:
-- initramfs sizes
-rw------- 1 root root 18M Jul  8 13:51 /boot/initrd.img-4.9.0-3-amd64
-- /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-4.9.0-3-amd64 root=/dev/sda1 ro quiet

-- resume
RESUME=UUID=6c849bd6-03b5-4464-9ffe-6a8601f3f23e
-- /proc/filesystems
	ext3
	ext2
	ext4

-- lsmod
Module                  Size  Used by
crct10dif_pclmul       16384  0
crc32_pclmul           16384  0
ghash_clmulni_intel    16384  0
ppdev                  20480  0
pcspkr                 16384  0
vmw_balloon            20480  0
intel_rapl_perf        16384  0
joydev                 20480  0
evdev                  24576  1
serio_raw              16384  0
sg                     32768  0
parport_pc             28672  0
vmwgfx                237568  1
battery                20480  0
shpchp                 36864  0
parport                49152  2 parport_pc,ppdev
acpi_cpufreq           20480  0
ttm                    98304  1 vmwgfx
drm_kms_helper        155648  1 vmwgfx
vmw_vmci               69632  1 vmw_balloon
drm                   360448  4 vmwgfx,ttm,drm_kms_helper
ac                     16384  0
button                 16384  0
ip_tables              24576  0
x_tables               36864  1 ip_tables
autofs4                40960  2
ext4                  585728  1
crc16                  16384  1 ext4
jbd2                  106496  1 ext4
crc32c_generic         16384  0
fscrypto               28672  1 ext4
ecb                    16384  0
mbcache                16384  2 ext4
hid_generic            16384  0
usbhid                 53248  0
hid                   122880  2 hid_generic,usbhid
sr_mod                 24576  0
cdrom                  61440  1 sr_mod
sd_mod                 45056  3
ata_generic            16384  0
crc32c_intel           24576  2
aesni_intel           167936  1
aes_x86_64             20480  1 aesni_intel
glue_helper            16384  1 aesni_intel
lrw                    16384  1 aesni_intel
gf128mul               16384  1 lrw
ablk_helper            16384  1 aesni_intel
cryptd                 24576  3 ablk_helper,ghash_clmulni_intel,aesni_intel
psmouse               135168  0
xhci_pci               16384  0
xhci_hcd              188416  1 xhci_pci
usbcore               249856  3 usbhid,xhci_pci,xhci_hcd
usb_common             16384  1 usbcore
vmxnet3                57344  0
vmw_pvscsi             24576  2
ahci                   36864  0
libahci                32768  1 ahci
i2c_piix4              24576  0
ata_piix               36864  0
libata                249856  4 ahci,ata_piix,libahci,ata_generic
scsi_mod              225280  5 sd_mod,libata,sr_mod,sg,vmw_pvscsi

-- /etc/initramfs-tools/modules

-- /etc/kernel-img.conf
# Kernel image management overrides
# See kernel-img.conf(5) for details
do_symlinks = yes
do_bootloader = no
do_initrd = yes
link_in_boot = no

-- /etc/initramfs-tools/initramfs.conf
MODULES=most
BUSYBOX=auto
KEYMAP=n
COMPRESS=gzip
DEVICE=
NFSROOT=auto

-- /etc/initramfs-tools/update-initramfs.conf
update_initramfs=yes
backup_initramfs=no

-- /etc/crypttab
# <target name>	<source device>		<key file>	<options>

-- mkinitramfs hooks
/etc/initramfs-tools/hooks/:
set_hostname_in_network_config.sh

/usr/share/initramfs-tools/hooks:
cryptgnupg
cryptkeyctl
cryptopenct
cryptopensc
cryptpassdev
cryptroot
cryptroot-unlock
dmsetup
dropbear
fsck
keymap
klibc-utils
kmod
resume
thermal
udev
zz-busybox


-- System Information:
Debian Release: 9.0
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.9.0-3-amd64 (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US:en (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages initramfs-tools depends on:
ii  initramfs-tools-core  0.130
ii  linux-base            4.5

initramfs-tools recommends no packages.

Versions of packages initramfs-tools suggests:
ii  bash-completion  1:2.1-4.3

-- no debconf information
# Define your network setup for the InitRAMFS via IP variable
#
# Still a kernel ip parameter will override any initramfs-tools config
# setting (see script /usr/share/initramfs-tools/init).
#
# Additional information:
# * https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt
#   In Debian as kernel command via /etc/default/grub
# * The "variable" ${hostname} (case-sensitive) will be replaced on InitRAMFS creation
#   with the current host name through the hook `set_hostname_in_network_config.sh`
#   This allows the machine to be registered with its name in DNS.

IP=::::${hostname}
#!/bin/sh

#
# This InitRAMFS hook provides:
# Simple script to set IP parameter in InitRAMFS with current hostname,
# instead of manually maintaining /etc/initramfs-tools/initramfs.conf or
# a file in /etc/initramfs-tools/conf.d.
# Intended for static DHCP via host name.
#
# This will override any IP setting of /etc/initramfs-tools/initramfs.conf
# or a file in /etc/initramfs-tools/conf.d that comes before the generated
# config file.
# 
# Still a kernel ip parameter will override any initramfs-tools config
# setting (see script /usr/share/initramfs-tools/init).
#
# Copyright: Matthias Bücher, see http://www.maddes.net/
# License: GNU GPL v2 or later, see http://www.gnu.org/licenses/gpl.html
#
# Additional information:
# * https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt
#   In Debian as kernel command via /etc/default/grub
#
# Tested:
# * Debian 4.x
# * Debian 8.x
# * Debian 9.x
#
# History:
# v1.0 - 2017-07-01
#  initial release
#

PREREQ=""

prereqs()
{
	echo "${PREREQ}"
}

case "${1}" in
 prereqs)
	prereqs
	exit 0
	;;
esac

. /usr/share/initramfs-tools/hook-functions

#
# Begin real processing
#
sed -i -e "s#\${hostname}#$(hostname)#" "${DESTDIR}/conf/conf.d/network"

Reply to: