Set Hostname
The hostname of a virtual machine can be changed on startup. The name of the virtual domain is passed in a smbios string and can be used to rename.
Requirements
This feature is available from release 0.3.4 and requires libvirt-4.6.
Packages
Ravada: 0.3.4
libvirt: 4.6
Distributions
This feature has been reported to work with these Linux distributions. Any other distribution with libvirt 4.6 or bigger will work too. Please report if you successfully tested it.
Supported distributions:
Ubuntu 18.10
Linux
The virtual machine name can be read with dmidecode
dmidecode | grep hostname | awk -F: '{ print $3}'
To set the hostname you must create a script that runs on startup, this one line should be enough for most cases:
hostname `dmidecode | grep hostname | awk -F: '{ print $3}'`
Some tools may read the hostname from the config file, set it like this:
dmidecode | grep hostname | awk -F: '{ print $3}' | sed -e 's/^ //' > /etc/hostname
systemd
If your system supports systemd this script will set the virtual machine name as the hostname on startup. Put the service file in /lib/systemd/system/sethostname.service:
[Install]
WantedBy=multi-user.target
[Unit]
Description=Set Hostname
After=systemd-hostnamed.target syslog.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/set_hostname.sh
This is the script that is launched by the service, it should be in /usr/local/bin/set_hostname.sh as specified in the previous file.
#!/bin/sh
date >> /var/log/set_hostname.log
hostname=`/usr/sbin/dmidecode | grep hostname | awk '{ print $4}'`
if [ ! -z "$hostname" ]; then
/bin/hostname $hostname
/bin/hostname > /etc/hostname
echo "Found hostname $hostname in dmidecode " >> /var/log/set_hostname.log
else
echo "Not found hostname in dmidecode " >> /var/log/set_hostname.log
/usr/sbin/dmidecode >> /var/log/set_hostname.log
fi
Type this so the script is executed on startup:
sudo chmod +x /usr/local/bin/set_hostname.sh
sudo systemctl enable sethostname
Reboot and check if the hostname is applied. You should find a log file at /var/log/set_hostname.log.
rc.local
If you Linux system supports rc.local just add this lines to it and the hostname will be updated on boot:
hostname `dmidecode | grep hostname | awk -F: '{ print $3}'`
hostname > /etc/hostname
Windows
SMBios information is available in Windows too. The data is stored in the registry and also can be shown with a tool called WMI.
Contributed information would be appreciated.