среда, 17 июля 2024 г.

VirtualBox 6.1.50 + Ubuntu 22.04LTS заглючил

Сегодня при попытке запуска виртуальной машины стало выпадать окно Guru Meditation, и, соответственно, ничего не запускается. При просмотре логов обнаружилось загадочное:

00:00:00.845699 Changing the VM state from 'RUNNING' to 'GURU_MEDITATION'
00:00:00.845708 Console: Machine state changed to 'GuruMeditation'
00:00:00.847333 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
00:00:00.847334 !!
00:00:00.847334 !!         VCPU0: Guru Meditation -2708 (VERR_VMM_SET_JMP_ABORTED_RESUME)
00:00:00.847344 !!
00:00:00.847351 !! ACTIVE TRAP=0e ERRCD=10 CR2=00000000000fe05b PC=000000000000e05b Type=0 cbInstr=ff fIcebp=false (Guest!)
00:00:00.847355 !!
00:00:00.847356 !! CallRing3JmpBuf:
00:00:00.847356 !!
00:00:00.847356 SavedEsp=ffffb411040935a0 SavedEbp=ffffb411040935a8 SpResume=ffffb41104093578 SpCheck=ffffb41104093968
00:00:00.847359 pvSavedStack=ffffb41104825000 cbSavedStack=0x3f0  fInRing3Call=true 
00:00:00.847360 cbUsedMax=0x0 cbUsedAvg=0x0 cbUsedTotal=0x0 cUsedTotal=0x0
00:00:00.847361 pfn=ffffb411040f1a50 pvUser1=ffffb411045f4000 pvUser2=ffffb41104605000
00:00:00.847363 rax=volatile         rbx=ffffb41104605000 rcx=volatile         rdx=volatile
00:00:00.847363 rsi=volatile         rdi=volatile          r8=volatile          r9=volatile        
00:00:00.847363 r10=volatile         r11=volatile         r12=0000000000000000 r13=ffffb41104633c60
00:00:00.847364 r14=0000000000000000 r15=0000000000141000
00:00:00.847364 rip=ffffb411041198d1 rsp=ffffb41104093598 rbp=ffffb411040935c8 rflags=00000246
00:00:00.849350 ERROR [COM]: aRC=NS_ERROR_INVALID_ARG (0x80070057) aIID={4680b2de-8690-11e9-b83d-5719e53cf1de} aComponent={DisplayWrap} aText={Argument aWidth is invalid (must be aWidth != 0 && aWidth <= 32767)}, preserve=false aResultDetail=0

Оказалось, не я один такой "счастливчик":
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2073267
Говорят, надо загрузиться на старом ядре:

After trying to go back to previous kernel version 5.15.0-113, all my VM worked again. So, it seems the last kernel version for 5.15 causes that.
Но как это сделать?

Помогло следующее: в начале загрузки нажать Esc, тогда высветится меню загрузчика Grub, там надо выбрать Advanced options for Ubuntu, найти ядро 5.15.0-113 и загрузиться с ним.

Правда, после этого, VirtualBox будет предлагать выполнить команду sudo modprobe vboxdrv, которая у меня выдала ошибку modprobe: FATAL: Module vboxdrv not found in directory /lib/modules/5.15.0-113-generic, но это решается переустановкой одного пакета:

sudo apt install --reinstall virtualbox-dkms

После этого виртуалка у меня, наконец, запустилась.

среда, 27 декабря 2023 г.

Ноутбук ASUS Vivobook 17X M3704YA - установка Windows 11.

Вводная такая: есть ноутбук, который продаётся без предустановленной ОС, требуется эту самую ОС на него установить.

Первая возникающая проблема непосредственно к ноутбуку отношения не имеет. Она такова: получить инсталляционную USB-флэшку с Windows 11. Можно воспользоваться MediaCreationTool.exe с официального сайта Microsoft (пункт "Создание установочного носителя Windows 11"), но запустить эту утилиту, когда вокруг линуксы - отдельный квест. Поэтому мне показалось проще взять установочный iso-образ и на его основе создать нужную флэшку.

Есть некоторое количество утилит, которое помогает в этом вопросе: Rufus (тоже виндовская, так что не подходит), UNetbootin, YUMI Multiboot USB Creator, но я самонадеянно решил, что мне хватит и обычной dd. Однако, результат выполнения команды:

dd if=Windows11.iso of=/dev/sda bs=10M status=progress oflag=sync
не порадовал: ноутбук с флэшки загрузился, но windows с неё устанавливаться отказалась с ошибкой: "Не найден необходимый драйвер носителя. Это может быть драйвер DVD-дисковода, USB-накопителя или жесткого диска. Если у вас есть компакт-диск, DVD-диск или USB-устройство флэш-памяти с этим драйвером, вставьте его". В интернете проблему предлагают решить, взяв другую флэшку, но дело оказалось не в этом.

Выяснилось, что установочную флэшку нужно создавать немного более хитрым способом:

1) Создаём на флэшке таблицу разделов MBR.

2) Создаём раздел размером 1Гб, форматируем его в FAT32, присваиваем метку BOOT

3) Создаём раздел размером не менее 7Гб, форматируем его в NTFS, присваиваем метку INSTALL

Я воспользовался для этих двух пунктов утилитой GParted, а потом через fdisk изменил тип первого раздела на uefi.

4) Примонтируем куда-нибудь iso-образ Windows 11, чтобы получить доступ к его содержимому:

mount Windows11.iso ~/my_iso_mountpoint
Примонтируем куда-нибудь два созданных на флэшке раздела, чтобы получить возможность на них записать нужные файлы:
mount /dev/sda1 ~/my_1_mountpoint
mount /dev/sda2 ~/my_2_mountpoint

5) Перекидываем на первый раздел флэшки всё из образа, за исключением содержимого каталога sources. В sources флэшки потребуется положить единственный файл: boot.wim.

6) Перекидываем на второй раздел флэшки всё из образа. Туда же прямо в корень кидаем папку со скачанными с сайта ASUS и распакованными драйверами на чипсет AMD.

7) Отмонтируем всё:

umount ~/my_1_mountpoint
umount ~/my_2_mountpoint
umount ~/my_iso_mountpoint
При этом приходится ждать довольно приличное время - видимо, линукс кэширует запись на флэшку, и нужно дождаться, пока он завершит операции записи.

8) Отключаем флэшку:

udisksctl power-off -b /dev/sda

В результате получается корректная установочная флэшка.

Дальше всё просто. В комментариях к этому ролику советуют в настройках ноутбука отключить Secure Boot и пользоваться разъёмом USB 2.0 - он единственный, находится слева - я так и поступил, и установка Windows прошла без нареканий.

воскресенье, 9 апреля 2023 г.

Проблема с подключением по ssh к Slackware 12.0

Проблема выглядит так:

$ ssh  huhmuh@192.168.0.13
Unable to negotiate with 192.168.0.13 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

Решение:

ssh  -oHostKeyAlgorithms=+ssh-dss  huhmuh@192.168.0.13

Литература:

Unable to negotiate with port 22: no matching host key type found. Their offer: ssh-dss

пятница, 1 июля 2022 г.

Debian 11 + VirtualBox 6.1.34 + Windows 10 - частые перезагрузки.

С некоторых пор стала глючить виртуальная машина с Windows 10 на моём дебиане.
Симптомы такие: в какой-то момент система начинает притормаживать, иногда появляются на ровном месте в приложениях ошибки выделения памяти, затем система зависает на пару секунд и уходит на перезагрузку.
В системном журнале windows появляются примерно такие сообщения:
Компьютер был перезагружен после критической ошибки. Код ошибки: 0x0000003b (0x00000000c0000005, 0xfffff8050ec1348a, 0xffffbf0efe7f6b10, 0x0000000000000000). Дамп памяти сохранен в: C:\Windows\MEMORY.DMP. Код отчета: 05a343cc-46a1-4a5c-b0a6-4dc93983176d.
с разными кодами ошибок. Или такие:
Система перезагрузилась, завершив работу с ошибками. Возможные причины ошибки: система перестала отвечать на запросы, произошел критический сбой или неожиданно отключилось питание.

Помогло (надеюсь, что помогло) следующее: В свойствах виртуальной машины (Machine -> Settings -> System -> Acceleration) поставить Paravirtualization Interface = None.
UPD: не помогло...

понедельник, 16 мая 2022 г.

ODBC+MSSQL ошибка "certificate verify failed:self signed certificate"

Проблема: pyodbc при подключении к SQL Server-у выдает ошибку

[08001] [Microsoft][ODBC Driver 18 for SQL Server]SSL Provider: [error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:self signed certificate] (-1) (SQLDriverConnect)

Решение: прописать в настройках подключения (строке подключения или свойствах соответствующего подключения в файле ~/.odbc.ini) параметр:

TrustServerCertificate=yes

вторник, 29 марта 2022 г.

Debian 11 и добавление пути в $PATH

Вообще, этот $PATH кто только не модифицирует. Насколько я понял, настройка переменных среды выглядит так:

  1. выполняются скрипты /etc/environment и /etc/profile
  2. выполняются скрипты *.sh из папки /etc/profile.d/
  3. если в домашнем каталоге пользователя есть скрипты ~/.bash_profile или ~/.bash_login, выполняются они
  4. если вышеуказанных скриптов нет, выполняется ~/.profile

Но вся эта кухня бесполезна в эмуляторе терминала, если не поставить галочку "Edit -> Preferences -> Run command as login shell".

понедельник, 6 декабря 2021 г.

Debian 11: настройка VirtualBox

При настройке VirtualBox под Debian 11 столкнулся с загадочной проблемой. По заветам официального сайта скачал и развернул дистрибутив, всё выглядит привычно и работоспособно, виртуальная машина создалась, но вот запускаться категорически не захотела:

vboxdrv.sh: failed: modprobe vboxdrv failed. Please use 'dmesg' to find out why.
There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.  If your system is using EFI Secure Boot you may need to sign the
kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load
them. Please see your Linux system's documentation for more information.

Оказывается, теперь есть механизмы защиты от загрузки всяких нежелательных компонентов, поэтому системе надо как-то сообщить, что подсовываемые ей модули - не злодейские. Делается это путем их подписания.

С учетом этого требуются следующие дополнительные шаги:

1. генерируем модули, требующиеся VirtualBox-у (впрочем, пока у меня дело дошло до вышеописанной ошибки, модули уже были созданы)

sudo /sbin/vboxconfig

2. создаём так называемый ключ владельца (machine owner key)

openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -days 36500 -subj "/CN=huhmuh/" -nodes

3. подсовываем созданный ключ в систему:

sudo mokutil --import MOK.der

4. перезагружаем компьютер. Тут потребуется пароль, заданный на этапе 2.

5. подписываем ключом владельца модули, сгенерированные VirtualBox-ом:

sudo /usr/src/linux-kbuild-5.10/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/$(uname -r)/misc/vboxdrv.ko
sudo /usr/src/linux-kbuild-5.10/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/$(uname -r)/misc/vboxnetadp.ko
sudo /usr/src/linux-kbuild-5.10/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/$(uname -r)/misc/vboxnetflt.ko

6. наконец, добавляем модули в ядро:

sudo modprobe vboxdrv
sudo modprobe vboxnetadp
sudo modprobe vboxnetflt

По завершении этой процедуры VirtualBox запустилась без ошибок.

Литература: