mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 03:09:34 +03:00
Stabilize the hostid for RPM installations.
ZFS requires a stable hostid to recognize foreign pool imports, but the hostid of a Linux system can change if the /etc/hostid file is missing, particularly during DHCP lease updates. Ensure that the system hostid is stable by creating the /etc/hostid file from the output of the /usr/bin/hostid utility. The /sbin/genhostid utility that is provided by the initscripts package is not used because it creates a random hostid, which breaks upgrades on systems that already have the SPL module installed. The external `printf` is used because the dash builtin lacks the byte format. Conveniences like a ${HOSTID:$ii:2} substring range or a `sed` one-liner are similarly avoided.
This commit is contained in:
parent
0d54dcb566
commit
79593b0dec
@ -233,6 +233,17 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{_prefix}/src/*
|
%{_prefix}/src/*
|
||||||
|
|
||||||
%post
|
%post
|
||||||
|
# The /sbin/genhostid utility writes a random value to the /etc/hostid
|
||||||
|
# file, which means that using it here will break upgrades on systems
|
||||||
|
# that already have spl installed.
|
||||||
|
if [ ! -f /etc/hostid ]; then
|
||||||
|
HOSTID=$(hostid)
|
||||||
|
AA=$(echo $HOSTID | cut -b 1,2)
|
||||||
|
BB=$(echo $HOSTID | cut -b 3,4)
|
||||||
|
CC=$(echo $HOSTID | cut -b 5,6)
|
||||||
|
DD=$(echo $HOSTID | cut -b 7,8)
|
||||||
|
"$(which printf)" "\x$DD\x$CC\x$BB\x$AA" >"/etc/hostid"
|
||||||
|
fi
|
||||||
if [ -f /boot/System.map-%{kver} ]; then
|
if [ -f /boot/System.map-%{kver} ]; then
|
||||||
depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0
|
depmod -ae -F /boot/System.map-%{kver} %{kver} || exit 0
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user