среда, 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 запустилась без ошибок.

Литература:

пятница, 3 декабря 2021 г.

Маленькая заметочка про сервисы в debian дистрибутивах

Понадобилось расшарить папку для общего доступа. Задача знакомая: добавляем пару строк в файл конфигурации, включаем пользователя, перезапускаем сервис. Последний пункт вызвал некоторые затруднения. Если раньше делал просто /etc/init.d/smbd restart, то теперь захотелось по-модному, через systemctl. Однако выполнение соответствующей команды слегка озадачило:

# systemctl status samba
● samba.service
   Loaded: masked (/dev/null)
   Active: inactive (dead)

# systemctl start samba
Failed to start samba.service: Unit samba.service is masked.

Что за чудеса? Оказывается, в моём случае статус masked означает, что сервис отключён:

$ ls -l /lib/systemd/system/samba.service
lrwxrwxrwx 1 root root /lib/systemd/system/samba.service -> /dev/null

Пришлось покопаться в памяти и вспомнить, что нужный мне сервис называется по-другому, smbd. А этот сервис перезапустить не составило труда:

# systemctl status smbd
# systemctl restart smbd

Ну, и на будущее: посмотреть сервисы можно командой:

# systemctl list-units

Посмотреть файлы - командой:

# systemctl list-units

Посмотреть зависимости - командой:

# systemctl list-dependencies smbd

и так далее...

Литература:

  1. Почему некоторые системные сервисы находятся в «маскированном» состоянии?