GRUB: boot specific kernel on debian / ubuntu / rhel / centos / oracle linux

Debian-based distributions:
1. List installed kernels in grub:

root@deb8-template:~# awk '/menuentry/ && /class/ {count++; print count-1"****"$0 }' /boot/grub/grub.cfg
0****menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-75b66937-9cfb-4606-9e0b-b27aa66e7286' {
1****	menuentry 'Debian GNU/Linux, with Linux 4.15.0-1007-aws' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-1007-aws-advanced-75b66937-9cfb-4606-9e0b-b27aa66e7286' {
2****	menuentry 'Debian GNU/Linux, with Linux 4.15.0-1007-aws (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-1007-aws-recovery-75b66937-9cfb-4606-9e0b-b27aa66e7286' {
3****	menuentry 'Debian GNU/Linux, with Linux 3.16.0-4-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-4-amd64-advanced-75b66937-9cfb-4606-9e0b-b27aa66e7286' {
4****	menuentry 'Debian GNU/Linux, with Linux 3.16.0-4-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-4-amd64-recovery-75b66937-9cfb-4606-9e0b-b27aa66e7286' {

…and make grub boot kernel by number, in this example kernel ‘Debian GNU/Linux, with Linux 4.15.0-1007-aws’:

root@deb8-template:~# grub-set-default 1

RHEL-based distributions:

1. List kernels:

root@ol7-template.test:~# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg 
0 : Oracle Linux Server (4.14.35-1844.5.3.el7uek.x86_64 with Unbreakable Enterprise Kernel) 7.6
1 : Oracle Linux Server (3.10.0-957.el7.x86_64 with Linux) 7.6
2 : Oracle Linux Server (0-rescue-b1a45709c59a44dda124eb5162f11bbc with Linux) 7.6
root@ol7-template.test:~# 

2. Set default kernel in GRUB:
Lets boot kernel ‘4.14.35-1844.5.3.el7uek.x86_64’, it has number 0:

root@ol7-template.test:~# grub2-set-default 0

… and then reboot.

virsh: ресайз диска онлайн

Информация взята с unixarena.com.

При ресайзе img образа диска появилась такая ошибка:

[root@kvmhost img]# qemu-img resize -f raw somevm-home.img 400G
qemu-img: Could not open ‘somevm-home.img’: Failed to get «write» lock
Is another process using the image [somevm-home.img]?

В этом случае нужно сделать «красивый» ресайз диска. Для этого:

1. Получить информацию по дискам для конкретной вм — somevm:

[root@kvmhost img]# virsh qemu-monitor-command somevm —hmp «info block»
drive-virtio-disk0 (#block147): /data/img/somevm-root.img (raw)
Attached to: /machine/peripheral/virtio-disk0/virtio-backend
Cache mode: writeback

drive-virtio-disk1 (#block384): /data/img/somevm-home.img (raw)
Attached to: /machine/peripheral/virtio-disk1/virtio-backend
Cache mode: writeback

drive-virtio-disk2 (#block597): /data/img/somevm-pgdata.img (raw)
Attached to: /machine/peripheral/virtio-disk2/virtio-backend
Cache mode: writeback

drive-sata0-0-0: [not inserted]
Attached to: sata0-0-0
Removable device: not locked, tray closed

2. Определить какой диск ресайзить. В данном случае мне нужно заресайзить somevm-home.img, а это значит виртуальный диск drive-virtio-disk1.

3. Ресайз виртуального диска в онлайне:

[root@kvmhost img]# virsh qemu-monitor-command somevm —hmp «block_resize drive-virtio-disk1 400G»

[root@kvmhost img]# ls -lha somevm-home.img
-rw-r—r— 1 qemu qemu 400G Nov 8 21:59 somevm-home.img

Обратите особое внимание что 400G здесь указывается абсолютный размер виртуального диска.

4. Внутри ВМ — ресайз файловой системы (если фс лежит поверх блочного устройства в обход таблицы разделов):

root@shared:~# fdisk -l /dev/vdb
Диск /dev/vdb: 400 GiB, 429496729600 байтов, 838860800 секторов
Единицы измерения: секторов из 1 * 512 = 512 байтов
Размер сектора (логический/физический): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
root@shared:~# resize2fs /dev/vdb
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/vdb is mounted on /home; on-line resizing required
old_desc_blocks = 19, new_desc_blocks = 25
The filesystem on /dev/vdb is now 104857600 (4k) blocks long.
root@shared:~# df -h
Файл.система Размер Использовано Дост Использовано% Cмонтировано в
/dev/vdb 375G 241G 118G 68% /home

Если есть таблица разделов, то необходимо отредактировать разделы (при помощи fdisk к примеру), и после этого расширить фс на ней.

Linux: примонтировать img образ диска

1. Посмотреть разделы в img-образе:

# fdisk -l /path/to/image.img
Disk Stick.img: 3984 MB, 3984588800 bytes
249 heads, 6 sectors/track, 5209 cylinders, total 7782400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004bfaa

    Device Boot      Start         End      Blocks   Id  System
Stick.img1   *         128     8015999     4007936    b  W95 FAT32

2. Расчитать начальный байт ФС, в данном примере размер блока 512 байт и позиция 128.
512 байт * 128 = 65536

3. Примонтировать образ:

# mount -o loop,offset=65536 Stick.img /mnt/tmp