Hyper-V 2016: Ubuntu 18.04 LTS

Чистая Ubuntu 18.04 LTS на Hyper-V – убираем предупреждения из лога после нулевой установки (аналогично 16.04 LTS)

Integration services

В 18.04 LTS установлены вроде как уже по умолчанию:

> dmesg | grep hv
[ 2.878510] hv_vmbus: Vmbus version:4.0
[ 2.991384] hv_vmbus: registering driver hv_storvsc
[ 2.992451] hv_vmbus: registering driver hyperv_keyboard
[ 2.992481] hv_utils: Registering HyperV Utility Driver
[ 2.992482] hv_vmbus: registering driver hv_util
[ 2.996588] hv_vmbus: registering driver hid_hyperv
[ 3.000415] hv_utils: FCopy IC version 1.1
[ 3.002182] hv_utils: Heartbeat IC version 3.0
[ 3.005732] hv_vmbus: registering driver hv_netvsc
[ 3.030390] hv_utils: Shutdown IC version 3.0
[ 3.032859] hv_utils: TimeSync IC version 4.0
[ 3.055681] hv_utils: VSS IC version 5.0
[ 46.622618] hv_vmbus: registering driver hv_balloon
[ 46.623273] hv_balloon: Using Dynamic Memory protocol version 2.0
[ 46.631151] hv_vmbus: registering driver hyperv_fb
[ 94.720977] hv_balloon: Max. dynamic memory size: 4096 MB

Но есть подвох – при попытке бэкапа тем же VeeamZip получаем ошибку

6/5/2018 11:08:18 PM :: Failed to create VM recovery checkpoint (mode: Hyper-V child partition snapshot) Details: Job failed (‘Checkpoint operation for ‘zt-svn2 (documentation)’ failed. (Virtual machine ID AF478D45-C608-41F4-8963-F0992EDF0B67)

Production checkpoints cannot be created for ‘zt-svn2 (documentation)’. (Virtual machine ID AF478D45-C608-41F4-8963-F0992EDF0B67)’). Error code: ‘32770’.
Failed to create VM recovery snapshot, VM ID ‘af478d45-c608-41f4-8963-f0992edf0b67’.

При этом VeeamZip прекрасно бэкапит остальные виртуалки (Ubuntu 16.04 LTS) на этом же Hyper-V сервере (с установленными, естественно, пакетами. На момент написания этой статьи 18.04 там не значится).

Решение для 18.04 подсмотрел в скрипте от Микрософт ( linux-vm-tools ),  оно оказалось аналогичным для 17.04 / 16.10, см. Notes 6:

sudo apt update && sudo apt upgrade -y
sudo apt install -y linux-tools-virtual
sudo apt install -y linux-cloud-tools-virtual

Перезагрузка и вуаля – бэкапы создаются.

 

Warnings in dmesg

print_req_error: I/O error, dev fd0, sector 0

echo "blacklist floppy" | sudo tee /etc/modprobe.d/blacklist-floppy.conf
sudo rmmod floppy

piix4_smbus 0000:00:07.3: SMBus base address uninitialized – upgrade BIOS or use force_addr=0xaddr

echo "blacklist i2c_piix4" | sudo tee /etc/modprobe.d/blacklist-i2c_piix4.conf

intel_rapl: no valid rapl domains

echo "blacklist intel_rapl" | sudo tee /etc/modprobe.d/blacklist-intel_rapl.conf

После чего выполняем:

sudo update-initramfs -u
sudo reboot

и в логе dmesg всё должно быть зелено…

Time zones

Установщик Ubuntu 18.04 лаконичен и про time zones даже не интересуется.

Исправляем ситуацию.

Просмотр текущего времени и временной зоны:

timedatectl

просмотр всех доступных временных зон

timedatectl list-timezones

Так как зон много – отфильтруем, например, Европу:

timedatectl list-timezones | grep -i europe

Находим среди них свою, например Europe/Kiev.

Переключаем:

sudo timedatectl set-timezone Europe/Kiev

Всё.

Hostname

Желательно при установке Ubuntu 18.04 сразу задать правильное имя хоста. Иначе потом при попытке изменить его вы столкнетесь с эффектом возврата начального имени хоста после ребута. Связано это с тем, что имя “прошито” сразу в образ. Возможные решения:

А) убрать cloud-пакеты из системы:

apt remove cloud-init cloud-initramfs-copymods cloud-initramfs-dyn-netconf

Не очень хорошее решение.

Б) заставить систему брать имя хоста с файла /etc/hostname . Для этого в файле /etc/cloud/cloud.cfg поменять значение preserve_hostname со значения false на true :

sudo sed -i '/preserve_hostname: false/c\preserve_hostname: true' /etc/cloud/cloud.cfg
sudo reboot

All-in-one script

Для ленивых (то есть меня):

cd ~
wget https://gitlab.com/coders-in-ua/ubuntu/raw/master/ubuntu-init.sh
chmod a+x ubuntu-init.sh
./ubuntu-init.sh
sudo reboot