Архив метки: arch linux

Установить и настроить KVM в ArchLinux

KVM означает виртуальную машину на основе ядра. Это программное обеспечение позволяет пользователям запускать несколько виртуальных машин с разными операционными системами, избегая, таким образом, необходимости использовать более традиционные способы использования Virtualbox. KVM — это бесплатная программа с открытым исходным кодом, которая дорабатывалась и улучшалась за последние десять лет.

В этой статье показано, как установить и настроить KVM в вашей системе ArchLinux.

 

Часть 1: Установка KVM

Процедура установки KVM немного сложна, так как сначала необходимо проверить систему на наличие необходимых предпосылок.

 

Шаг 1. Проверьте поддержку виртуализации

Чтобы проверить, включена ли виртуализация на вашем ПК, введите следующую команду:

$ LC_ALL=C lscpu | grep Virtualization

 

Технические характеристики оборудования для запуска KVM: VT-x для процессоров Intel и AMD-V для процессоров AMD. Таким образом, если в вашей системе есть оборудование для создания виртуальных машин, вы увидите следующее в отображаемом тексте:

Virtualization: VT-x

или

Virtualization: AMD-V

 

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

 

Шаг 2. Найдите модуль ядра

Чтобы узнать, есть ли в вашей системе модуль ядра для запуска KVM, введите следующую команду:

$ zgrep CONFIG_KVM /proc/config.gz

 

Если вы используете процессор AMD, вы должны увидеть CONFIG_KVM_AMD (или CONFIG_KVM_INTEL, если вы используете Intel), за которым следует = y или = m, тогда все готово.

 

Шаг 3: Установите KVM для ArchLinux

Запустите терминал и запустите следующий код для прямой установки KVM:

$ sudo pacman -S virt-manager qemu vde2 ebtables dnsmasq bridge-utils openbsd-netcat

 

Это должно установить KVM в вашей системе.

 

Шаг 4: активируйте и запустите KVM

Выполните следующую команду, чтобы активировать KVM:

$ sudo systemctl enable libvirtd.service

 

Далее введите следующее:

$ sudo systemctl start libvirtd.service

 

Затем перейдите в /applications и запустите диспетчер виртуальных машин.

 

Часть 2: Настройка KVM

Чтобы продолжить использование KVM со стандартной учетной записью Linux, вы можете сделать это, изменив файл libvirtd.conf. Чтобы получить доступ к файлу, введите следующее:

$ sudo pacman -S vim

$ sudo vim/etc/libvirt/libvirtd.conf

 

Между строками 80-90 должен быть термин «lineabout unix_sock_group». Вы измените это на libvirt.

# unix_sock_group = "libvirt"

 

Перейдите к строкам между 100-110 и измените unix_sock_rw_perms на = 0770

# unix_sock_rw_perms = "0770"

 

Затем введите следующий код, чтобы включить вашу стандартную учетную запись Linux в libvirt.

$ sudo usermod -a -G libvirt $ ( whoami )

 

$ newgrp libvirt

 

Перезагрузите службу libvirt, чтобы изменения вступили в силу. Для этого введите следующий код:

$ sudo systemctl restart libvirtd.service

 

Теперь вы можете использовать свою учетную запись Linux для использования KVM.

Чтобы создать виртуальные машины внутри виртуальной машины, включите вложенную виртуализацию, введя следующее:

$ sudo modprobe -r kvm_intel

$ sudo modprobe kvm_intel nested=1

 

Чтобы применить эти изменения, введите:

$ echo "options kvm-intel nested = 1" | sudo /etc/modprobe.d/kvm-intel.conf

 

Вывод

В этой статье описана установка и настройка KVM в системах ArchLinux. Если вы правильно следовали инструкциям, у вас должен быть настроен KVM в вашей системе и готов к запуску виртуальных машин.



2020-11-17T13:33:55
ArchLinux

Arch-Audit: инструмент проверки уязвимых пакетов в Arch Linux

Мы должны обновить систему, чтобы минимизировать время простоя и устранить проблемы.

Это одна из обычных задач администратора Linux для исправления системы один раз в месяц или максимум 90 дней. Читать

linux: русский в консоли archlinux

Возникла проблема со шрифтами в виртуальной консоли. Квадратики вместо кириллицы. В графическом эмуляторе терминала, разумеется, всё нормально, а в /dev/ttyX беда. Выяснилось, что всё портит systemd, сначала загружая шрифты и настраивая их согласно vconsole.conf как и положено, а потом подгружая drm-модуль видеокарты, который создаёт новый фреймбуфер (например, у меня /dev/fb0), в котором уже никаких настроек не делается.

Считаю, что это косяк. Когда-нибудь это должны поправить, вероятно. Это давно было уже, до сих пор актуально, сначала долго копался, потом появилось несколько материалов в сети. Примерный механизм описан здесь. Основная тема на archlinux.org.ru здесь.

Т.к. у меня грузится с локальной ФС, то я ограничился способом добавления

MODULES="i915"

(нужно подставить свой модуль: i915, nouveau, radeon итд) в /etc/mkinitcpio.conf
и перегенерацией initramfs:

mkinitcpio -p linux

Проверить в этом ли дело можно руками поставив нужный шрифт (они лежат в /usr/share/kbd/consolefonts/):

setfont cyr-sun16[.psfu.gz]

Автор: Дмитрий

archlinux перевод на systemd

Как известно, archlinux к данному моменту почти полностью перешёл на systemd. Старый механизм sysvinit/initscripts тоже почти полноценно пока поддерживается через костыли. Чтобы вату не катать, я тоже стал переходить. В данный момент переход довольно подробно описан на арчвики, но на момент накидывания черновика этой заметки всё только начиналось, к тому же у меня чуть более сложный случай, т.к. стояло несколько специфических сервисов итд. Чтобы сразу всё не сломалось (а оно может даже если ничего не трогать), переходить решил постепенно, в принципе, на арчвики так же рекомендовано сейчас.

Смешанная установка systemd+sysvinit+initscripts

Сам systemd уже должен стоять по-любому, но если отдельно не настраивалось, то грузится пока старый init. Попробуем прописать init=/bin/systemd в параметры ядра. Очевидные вещи разжёвывать не нужно, если grub2, то в /etc/default/grub прописываем в GRUB_CMDLINE_LINUX_DEFAULT="init=/bin/systemd" , и далее grub-mkconfig, как положено.
Из /etc/rc.conf надо убрать лишние демоны. Самое простое: после перезагрузки надо изучить что поднялось (cups, sshd итд), и это убрать из DAEMONS в /etc/rc.conf . По идее, все стандартные службы должны уже иметь systemd-unit и корректно подняться. У меня остались в DAEMONS network, а также мои специфические activemq и т.д.
Это и ниже всё нужно будет включить руками через systemctl enable, читать справку по systemd в той же арчвики по ссылке выше.

Если согласно предыдущим рекомендациям (с archlinux.org или при апдейтах) журналирование меняли, то не забыть изменить в /etc/syslog-ng/syslog-ng.conf на systemd-шный.

source src {
...
unix-dgram("/run/systemd/journal/syslog");
#unix-dgram("/dev/log");
...
};

Ещё у меня был netfs, теперь он не нужен, всё работает искаропки. Но надо только включить не забыть (как и раньше) rpcbind, для него тоже есть нативный юнит.

# systemctl enable rpcbind

Также надо не забыть заенаблить нужный dm для графического входа (у меня lxdm).

Перезагружаемся и (скорее всего) радуемся.

Смешанная установка systemd+initscripts

Это вариант предыдущего этапа, но фиксируем systemd как init по дефолту. Ставим systemd-sysvcompat, оно заменяет sysvinit и прописывает линки init на systemd и прочие sysvinit бинарники на systemctl. Так что init= из grub убираем. Перегружаемся.

После проверки и написания недостающих юнитов, когда rc.conf опустел можно приступить к следующему этапу. На что, возможно, придётся до этого обратить внимание:

Сеть

Если было настроено как служба network (а не через NetworkManager или другие механизмы), то оно почти как служба осталась, но с нюансами. Итак, из rc.conf надо убрать настройку сети и загрузку демона network, а сеть включить нативно как-то так (если через dhcp, например):

systemctl enable dhcpcd@eth0

Если нужно грузить модуль ядра для сети и т.д., см. ссылку на арчвики выше.

Группы юзера

Нужно не забыть выкинуть всех локальных юзеров из дополнительных групп (audio, lock, scan итд итп) кроме wheel пожалуй только, это всё тоже написано в инструкции к арчвики. Походу, проблемы иначе действительно возникают.

Чистая установка systemd

Это такой окончательный этап на арчвики, но на самом деле отличается от предыдущего только тем, что не стартует костыль который запускает все инитскриптовские скрипты (которые называются у этого костыля легаси-юниты) и вообще как-либо парсит rc.conf. Ну и удаляем initscripts, раз он не нужен больше. Удаляются также и rc.conf, rc.local, rc.local.shutdown.

Автор: Дмитрий

linux: почему же ELF interpreter в Arch Linux 64 линкуется в /lib

Как-то однажды я собрал программу в своём 64-битном Arch Linux и отдал бинарник, а оно берёт и не работает. Пишет:

/lib/ld-linux-x86-64.so.2: bad ELF interpreter: Нет такого файла или каталога

Ну, долго тут думать не пришлось — оказался странным путь для ld-linux-x86-64. Я не понял как оно должно быть по LSB, но во всех тестируемых системах ld-linux-x86-64.so.2 ищется в /lib64.
Fedora 17:

$ whereis ld-linux-x86-64.so.2
ld-linux-x86-64.so: /lib64/ld-linux-x86-64.so.2 /usr/lib64/ld-linux-x86-64.so.2

Arch Linux:

$  whereis ld-linux-x86-64.so.2
ld-linux-x86-64.so: /lib/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2

В генту lib это ссылка на lib64.
Причём, в арче в lib64 кроме двух ссылок на соответствующие файлы в lib больше ничего нет:

$ ls /lib64
ld-2.15.so  ld-linux-x86-64.so.2


Короче, как ясно, интерпретатор находится и в lib и в lib64. То есть будет работать и так и так. Но при линковке на моей машине у меня связывается напрямую в lib, так что нигде больше не работает:

$ ldd ./myprogram
...
 /lib/ld-linux-x86-64.so.2 (0x00007f4b4ea70000)
...

Это печально, ну а что делать. Решил проблему временно с помощью patchelf:

patchelf --set-interpreter /lib64/ld-linux-x86-64.so.2 ./myprogram

Всё стало прекрасно. На этот счёт девелопер (?) сказал:

Historically, we were a pure 64-bit distro (multilib is a more recent thing), so the distinction of /lib v. /lib64 didn’t make sense for us.

Автор: Дмитрий