При установке последних версий Proxmox 8.х (и позднее) "DMAR: ERROR: DMA PTE for vPFN". согласно официальной документации Proxmox Wiki данная ошибка возникает из-за того, что включение IOMMU может вызвать проблемы со старым оборудованием или системами с неактуальным BIOS. И в ядрах 6.8.х этот параметр включен по умолчанию.
Соответственно, необходимо явно отключить данный параметр при загрузки ядра, это делается следующим образом:
отредактировать файл
/etc/default/grub
Изменив строку
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
на
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=off"
после чего запустить
update-grub
и перезагрузиться
Второй вариант, зафиксировать определенное ядро в качестве загрузки по умолчанию, командой:
/usr/sbin/proxmox-boot-tool kernel pin 6.2.16-20-pve
где 6.2.16-20-pve это последнее ядро которое корректно работает.
Если автодополнение работает в обычном терминале, но не в mc, возможно, скрипты завершения не загружены.
Решение:
Явно загрузите автодополнение для systemctl в ~/.bashrc:
# Добавьте в конец файла ~/.bashrc if [ -f /usr/share/bash-completion/completions/systemctl ]; then source /usr/share/bash-completion/completions/systemctl fi
После правки выполните:
source ~/.bashrc
Получить IP-адрес внешнего интерфейса можно командой:
ubus call network.interface.wan status | jsonfilter -e '@["ipv4-address"][0].address'
также можно получить адрес с других интерфейсов откорректировав параметр "network.interface.wan"
например для LAN:
ubus call network.interface.lan status | jsonfilter -e '@["ipv4-address"][0].address'
посмотреть список интерфейсов можно командой:
ubus list network.interface.*
Далее при необходимости полученные данные использовать для передачи во внешние скрипты, например для отправления по mqtt:
mosquitto_pub -h HOSTNAME -p 1883 -u "USERNAME" -P "PASSWD" -t 'openwrt/wan_ip' -m "$(ubus call network.interface.wan status | jsonfilter -e '@["ipv4-address"][0].address')"
для того чтобы каждый раз не вводить длинные команды при просмотре статусов служб в Linux добавляем в файл ~/.bashrc следующие строки
systemctl alias
alias systemctl-running='systemctl --type=service --state=running' # Список запущенных служб
alias systemctl-failed='systemctl --type=service --state failed' # Список служб со статусом failed
alias systemctl-active='systemctl --type=service --state=active' # Список активных служб
После чего будет удобнее получать список запцущенных служб командой
systemctl-running
По умолчанию нажатие клавиши "стрелка вверх" в bash выводит последнюю команду вне зависимости от того, что было введено на данный момент. Но более удобно перемещаться по истории команд используя частично набранную команду.
Для этого нужно в файл ~/.inputrc добавить следующие команды
"\e[A": history-search-backward
"\e[B": history-search-forward
или в файл ~/.bashrc
if [[ $- == *i* ]] then bind '"\e[A": history-search-backward' bind '"\e[B": history-search-forward' fi
Для подсветки строки приглашения под пользователем root (например выделить красным цветом пользователя) нужно заменить строку в файле /etc/bash.bashrc
if ! [ -n "${SUDO_USER}" -a -n "${SUDO_PS1}" ]; then
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
на
if ! [ -n "${SUDO_USER}" -a -n "${SUDO_PS1}" ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\e[0;31m\]\u\[\e[m\]@\h:\w\$ '
fi
Иногда надо вывести содержимое конфигурационного файла, но в них часто много закоментированных строк и/или пустых строк. Чтобы не выводить эти строки можно воспользоваться командой grep
например:
cat sysctl.conf | grep -v ^# | grep -v ^$ | grep -v ^\;
либо короче
cat sysctl.conf | grep -v -e ^# -e ^$ -e ^\;
или
cat sysctl.conf | grep -Ev '^\s*(;|#|$)'
но все равно долго набирать такую конструкцию из скобок и спецсимволов, поэтому можно добавить alias для команды. Делается это следующим способом:
В файл ~/.bashrc добавляется строка:
alias grep-v="grep -Ev '^\s*(;|#|$)'"
после чего необходимо выполнить команду
source ~/.bashrc
либо перезайти в оболчку для применение алиаса.
После этого можно использовать алиас grep-v, например:
grep-v /etc/sysctl.conf