Вопрос или проблема
Недавно мне нужно было быстро настроить новую виртуальную машину с Ubuntu 18.04 TLS под Hyper-V (это не мой обычный инструмент, но на этот раз я не могу использовать ничего, кроме Hyper-V).
Хорошо, я сделал установку (я выбрал установку ‘hwe’ во время начального меню установки), и пока пытался найти способ использовать интеграцию Hyper-V, я обнаружил, что мне нужно выполнить следующие действия:
echo 'hv_vmbus' >> /etc/initramfs-tools/modules
echo 'hv_storvsc' >> /etc/initramfs-tools/modules
echo 'hv_blkvsc' >> /etc/initramfs-tools/modules
echo 'hv_netvsc' >> /etc/initramfs-tools/modules
apt -y install linux-virtual linux-cloud-tools-virtual linux-tools-virtual
update-initramfs -u
Хорошо, я это сделал, и всё в порядке, но как узнать, какие ядра и пакеты мне следует оставить, а какие можно удалить? Вы видите, теперь у меня много пакетов ядра, и я понимаю, что большинство из них мне не нужны:
# dpkg -l | grep linux
ii console-setup-linux 1.178ubuntu2.9 all Linux specific part of console-setup
ii libselinux1:amd64 2.7-2build2 amd64 SELinux runtime shared libraries
ii linux-base 4.5ubuntu1 all Linux image base package
ii linux-cloud-tools-4.15.0-91 4.15.0-91.92 amd64 Linux kernel version specific cloud tools for version 4.15.0-91
ii linux-cloud-tools-4.15.0-91-generic 4.15.0-91.92 amd64 Linux kernel version specific cloud tools for version 4.15.0-91
ii linux-cloud-tools-common 4.15.0-91.92 all Linux kernel version specific cloud tools for version 4.15.0
ii linux-cloud-tools-virtual 4.15.0.91.83 amd64 Virtual Linux kernel cloud tools
ii linux-firmware 1.173.16 all Firmware for Linux kernel drivers
ii linux-generic-hwe-18.04 5.3.0.42.99 amd64 Complete Generic Linux kernel and headers
ii linux-headers-4.15.0-91 4.15.0-91.92 all Header files related to Linux kernel version 4.15.0
ii linux-headers-4.15.0-91-generic 4.15.0-91.92 amd64 Linux kernel headers for version 4.15.0 on 64 bit x86 SMP
ii linux-headers-5.3.0-42 5.3.0-42.34~18.04.1 all Header files related to Linux kernel version 5.3.0
ii linux-headers-5.3.0-42-generic 5.3.0-42.34~18.04.1 amd64 Linux kernel headers for version 5.3.0 on 64 bit x86 SMP
ii linux-headers-generic 4.15.0.91.83 amd64 Generic Linux kernel headers
ii linux-headers-generic-hwe-18.04 5.3.0.42.99 amd64 Generic Linux kernel headers
ii linux-headers-virtual 4.15.0.91.83 amd64 Virtual Linux kernel headers
ii linux-image-4.15.0-91-generic 4.15.0-91.92 amd64 Signed kernel image generic
ii linux-image-5.3.0-42-generic 5.3.0-42.34~18.04.1 amd64 Signed kernel image generic
ii linux-image-generic-hwe-18.04 5.3.0.42.99 amd64 Generic Linux kernel image
ii linux-image-virtual 4.15.0.91.83 amd64 Virtual Linux kernel image
ii linux-modules-4.15.0-91-generic 4.15.0-91.92 amd64 Linux kernel extra modules for version 4.15.0 on 64 bit x86 SMP
ii linux-modules-5.3.0-42-generic 5.3.0-42.34~18.04.1 amd64 Linux kernel extra modules for version 5.3.0 on 64 bit x86 SMP
ii linux-modules-extra-5.3.0-42-generic 5.3.0-42.34~18.04.1 amd64 Linux kernel extra modules for version 5.3.0 on 64 bit x86 SMP
ii linux-tools-4.15.0-91 4.15.0-91.92 amd64 Linux kernel version specific tools for version 4.15.0-91
ii linux-tools-4.15.0-91-generic 4.15.0-91.92 amd64 Linux kernel version specific tools for version 4.15.0-91
ii linux-tools-common 4.15.0-91.92 all Linux kernel version specific tools for version 4.15.0
ii linux-tools-virtual 4.15.0.91.83 amd64 Virtual Linux kernel tools
ii linux-virtual 4.15.0.91.83 amd64 Minimal Generic Linux kernel and headers
ii util-linux 2.31.1-0.4ubuntu3.5 amd64 miscellaneous system utilities
Пожалуйста, дайте совет, так как это было для меня немного неясно на протяжении многих лет.
Microsoft имеет что сказать по этому поводу:
Для версий с долгосрочной поддержкой (LTS) используйте последнее ядро виртуального оборудования (HWE) для получения актуальных служб интеграции Linux.
Чтобы установить ядро, оптимизированное для Azure, на 16.04, 18.04, 20.04 и 22.04, выполните следующие команды от имени пользователя root (или sudo):
Bashapt-get update apt-get install linux-azure
Хотя не совсем ясно, предназначен ли пакет linux-azure
конкретно для Hyper-V или нет.
Существует также аналогичный вопрос на AskUbuntu…
Я уже долгое время ищу способ загрузить демоны Hyper-V на сервер Ubuntu 22.04, так как, похоже, моя установка не имеет их.
Единственный существующий ответ на данный момент, похоже, подтверждает, что вам действительно нужно установить linux-azure
метапакет (url focal, но вы можете выбрать другие дистрибутивы по мере необходимости). Если вы убедитесь, что метапакет и все его зависимости установлены, то вы сможете удалить другие пакеты linux-
cloud, generic, headers, modules и tools, если на них не зависят другие пакеты.
Ответ или решение
Чтобы очистить систему Ubuntu 18.04 под Hyper-V от лишних ядер и пакетов, вам нужно выбрать основное ядро, которое вы собираетесь использовать, и удалить остальные. Вот подробная пошаговая инструкция:
Шаг 1: Определите текущее ядро
Сначала вам нужно узнать, какое ядро в данный момент используется. Выполните команду:
uname -r
Это покажет версию используемого ядра (например, 5.3.0-42-generic
).
Шаг 2: Установка выбранного ядра
Если вы уже установили linux-generic-hwe-18.04
, вам не нужно ничего делать, так как вы уже находитесь на самом последнем аппаратном обеспечении, которое поддерживается для вашей версии Ubuntu. Однако, если у вас нет нужного ядра, выполните следующую команду:
sudo apt-get install linux-generic-hwe-18.04
Шаг 3: Удалите старые и ненужные ядра
Теперь вам нужно удалить старые ядра. Для этого выполните следующие команды:
- Сначала посмотрите, какие ядра у вас установлены:
dpkg -l | grep linux-image
-
Выберите все ядра, которые не являются текущим или последним установленным ядром (из шага 2). Запомните их версии (например,
4.15.0-91-generic
). -
Удалите ненужные ядра с помощью команды
apt-get purge
. Например:
sudo apt-get purge linux-image-4.15.0-91-generic
Повторите эту команду для каждого старого ядра, которое вы хотите удалить.
Шаг 4: Очистка оставшихся пакетов
Поскольку удаление старых ядер может оставить зависимые пакеты, рекомендуется удалить их с помощью команды:
sudo apt-get autoremove
Это удалит пакеты, которые больше не нужны и не имеют зависимостей.
Шаг 5: Удаление остальных файлов
Если вы уверены, что больше не нуждаетесь в различных инструментах и заголовках для старых версий, вы можете удалить их аналогичным образом. Например:
sudo apt-get purge linux-headers-4.15.0-91-generic
Используйте dpkg -l | grep linux-headers
для поиска заголовков, которые вы можете удалить.
Шаг 6: Обновление начального образа
Не забудьте обновить initramfs после удаления старых ядер, чтобы изменения вступили в силу:
sudo update-initramfs -u
Шаг 7: Перезагрузка системы
После выполнения всех вышеуказанных действий рекомендуется перезагрузить систему:
sudo reboot
Заключение
Теперь ваша система Ubuntu под Hyper-V должна быть освобождена от лишних пакетов ядра и готова к работе с выбранным ядром. Следите за обновлениями и периодически проверяйте установленные ядра, чтобы избежать накопления старых версий в будущем.