QEMU гость ОС Ubuntu RTC время (-rtc base=2023-0401)

Вопрос или проблема

Я создал виртуальную машину с помощью следующей команды:

qemu-img create -f raw myVirtualDisk.raw 20G

qemu-system-x86_64 -enable-kvm  -m 8G  -smp 8  -boot d -cdrom /home/danny/2T/tmp/iso-image/ubuntu-24.04.1-live-server-amd64.iso -drive file=/home/danny/myVirtualDisk.raw,format=raw -netdev user,id=net0,net=192.168.0.0/24,dhcpstart=192.168.0.9  -device virtio-net-pci,netdev=net0 -vga qxl -device AC97 -rtc base=2023-04-01 

После успешной установки ОС я запускаю виртуальную машину с помощью команды:

qemu-system-x86_64 -enable-kvm  -m 8G  -smp 8   -drive file=/home/danny/myVirtualDisk.raw,format=raw -netdev user,id=net0,net=192.168.0.0/24,dhcpstart=192.168.0.9  -device virtio-net-pci,netdev=net0 -vga qxl -device AC97 -rtc base=2023-04-01  

Но когда виртуальная машина запущена и я вошел в систему, при вводе команды date результат по-прежнему сегодняшний, -rtc base=2023-04-01 не кажется, что работает.

Ответ или решение

Проблема, с которой вы столкнулись, связана с тем, что параметр -rtc base=2023-04-01 в QEMU определяет только начальную дату и время для эмулятора оборудования RTC (Real-Time Clock), но не влияет на системное время внутри операционной системы. После установки Ubuntu система использует свою собственную инициализацию времени, которая может игнорировать значение, установленное в KVM/QEMU.

Вот пошаговая инструкция по исправлению данной проблемы и настройке виртуальной машины для использования заданной даты.

Шаг 1: Настройка времени в QEMU

При запуске виртуальной машины вы используете уже правильный параметр:

-rtc base=2023-04-01

Убедитесь, что вы также добавили параметр -rtc driftfix=slew, чтобы уменьшить разницу во времени между хостом и гостевой ОС. Полная команда для запуска QEMU может выглядеть так:

qemu-system-x86_64 -enable-kvm -m 8G -smp 8 -drive file=/home/danny/myVirtualDisk.raw,format=raw -netdev user,id=net0,net=192.168.0.0/24,dhcpstart=192.168.0.9 -device virtio-net-pci,netdev=net0 -vga qxl -device AC97 -rtc base=2023-04-01,driftfix=slew

Шаг 2: Настройка времени в гостевой системе Ubuntu

После установки ОС и запуска виртуальной машины выполните следующие действия для корректировки времени:

  1. Убедитесь, что пакет ntp не установлен. Если он установлен, он может перезаписывать время после загрузки. Проверка:

    dpkg -l | grep ntp
  2. Если ntp установлен, удалите его:

    sudo apt remove ntp
  3. Подождите несколько секунд после запуска для корректной инициализации времени RTC.

  4. Синхронизация времени. После того, как вы убедились, что ntp не синхронизирует время, выполните следующую команду, чтобы установить время в системе на нужную вам дату и время:

    sudo date -s "2023-04-01 12:00:00"

    (где 12:00:00 — это желаемое время).

  5. Проверьте текущее системное время:

    date
  6. Настройка системы на использование RTC при старте. Вы можете настроить систему для сохранения времени в RTC при остановке, чтобы при следующем запуске время автоматически синхронизировалось с установленным значением в RTC. Для этого добавьте или измените следующую строку в /etc/rc.local перед exit 0:

    hwclock --systohc

Заключение

С помощью этих шагов вы сможете правильно настроить системное время в вашей гостевой машинеUbuntu. Параметр -rtc base=2023-04-01 будет работать корректно только после настройки системного времени, и в дальнейшем вы сможете видеть заданную дату в командном выводе date.

Оцените материал
Добавить комментарий

Капча загружается...