суббота, 22 марта 2025 г.

[soft.tools] В склерозник: изменение размера диска в .vhd образе в VirtualBox

Зафиксирую в склерозник простое решение проблемы, которая меня донимала в последнее время.

Суть в том, что компьютера от Apple с macOS у меня нет, но выяснилось, что если что-то не компилируется clang-ом на macOS, то с большой вероятностью оно не скомпилируется и clang-ом на FreeBSD. Поэтому на Windows-ноутбуке держу VirtualBox, в котором поднимаю свежий образ FreeBSD. Эти самые свежие образы беру прямо на официальном сайте FreeBSD (например, здесь они лежат для 14.2).

Но эти штатные образы FreeBSD очень маленькие -- размер диска в .vhd образе что-то в районе 4Gb, из которых свободных всего пара сотен мегабайт. Поэтому даже поставить через pkg тот же git не всегда получается: делаешь pkg install git и свободное пространство уходит в ноль.

Однако, внезапно (с) выяснилось, что это дело легко починить. Что в VirtualBox по Ctrl+D вызывается окно управления дисковыми образами, в котором можно увеличить размер диска до нужных размеров.

Ларчик, оказывается, просто открывался.

Правда, в моем случае оказалось, что размер диска в .vhd нужно изменять до первого запуска виртуалки с FreeBSD. Тогда новый размер FreeBSD подхватывает. Но если запустить FreeBSD первый раз на оригинальном .vhd-образе, а затем уже изменить размер диска, то при следующем запуске FreeBSD новый размер не увидит и продолжит думать, что в распоряжении есть все те же 4Gb. Ну или это мои кривые руки в очередной раз сделали что-то не так.


Вот что я пока так и не смог сделать, так это заставить FreeBSD использовать терминал отличный от 80x25. Если кто-то знает, то подскажите в комментариях, плз. В выхлопе dmesg несколько строк, которые относятся к видео:

При попытке изменить шрифт в консоли через vidfont выдается ошибка:

vidcontrol: PIO_VFONT: Operation not supported

Upd. Вот что мне немного помогло:

  • в настройках виртуальной машины в разделе System включена галочку для "Enable EFI (special OSes only)". После этого внутри FreeBSD заработал vidfont;
  • в /etc/rc.conf добавлена строка allscreens_flags="-f vgarom-8x16";
  • вот эта ссылка с полезной информацией и примерами: How to change vt console font size?

Правда, после включения галочки "Enable EFI" запущенная FreeBSD перестала нормально завершаться после выдачи ей через меню VirtualBox-а команды "Send the shutdown signal"... :(

4 комментария:

Pavel комментирует...

Я когда-то делал обратную операцию - уменьшение размера виртуального диска, который разросся автоматически. И потом в виртуальной системе (то был какой-то Linux) размер диска стал актуальным только после запуска fsck. Может быть в FreeBSD тоже что-то подобное поможет?

Про настройки терминала тоже немного релевантный опыт - я запускаю sshd (в FreeBSD это буквально одна строка sshd_enable="YES" в /etc/rc.conf), и потом виртуальную машину запускаю в headless режиме, чтобы подключаться к ней только по ssh. Сейчас ssh-клиенты умеют управлять терминалом при изменении размеров окна, По крайней мере, мне для vim этого вполне хватало :)

eao197 комментирует...

@Pavel
Спасибо за информацию. Провел сейчас эксперимент, сперва запустил FreeBSD, затем изменил в VirtualBox размер диска в .vhd, еще раз запустил FreeBSD и попробовал использовать fsck. Эта fsck написала, что какие-то ошибки пофиксила, но df все равно не видит нового размера диска.

NN​ комментирует...

Спасибо за наводку. Тут коллеге нужно было собрать в маке, скажу чтобы проверял на FreeBSD.
Это же тогда можно и дёшево билды настроить без маков.

ChatGPT не помог ? Предлагает следующее.

In FreeBSD running on VirtualBox, the default console size is 80x25, but you can increase it by changing the VGA mode or using a framebuffer. Here’s how you can do it:

Method 1: Use vidcontrol (Temporary)

If you want to change the console resolution only for the current session, use:

vidcontrol -g 100x37 VGA_800x600

This sets a 100x37 grid with an 800x600 resolution.
To see available modes, run:

vidcontrol -i mode





Method 2: Change /etc/rc.conf (Persistent)

To make the resolution change permanent:
1. Edit /etc/rc.conf:

ee /etc/rc.conf


2. Add the following line:

allscreens_flags="VGA_800x600"


3. Save and exit, then reboot:

reboot





Method 3: Use a Framebuffer (High Res)

If you need even higher resolution, use VESA mode:
1. Load the VESA driver:

kldload vesa


2. Use a higher resolution:

vidcontrol -g 120x40 VESA_1024x768


3. To load VESA automatically at boot, add this to /boot/loader.conf:

vesa_load="YES"





Method 4: Resize VirtualBox Window

If you’re using UEFI boot, you can resize the VirtualBox window and restart the VM. FreeBSD should adjust automatically.

Would you like help with enabling UEFI or fine-tuning the font size?

eao197 комментирует...

Я ChatGPT (или какими-то другими ИИ) не пользуюсь.
vidcontrol на изменения параметров видео-режимов выдает ошибку :(
Обновил пост добавив туда информацию о том, как в моем случае получилось изменить дефолтный шрифт.