Как настроить макет нескольких контейнеров sway/i3 при запуске?

Потратив несколько дней на -tos и отладку проблемы с черным экраном при загрузке после установки драйверов nvidia, я наконец смог найти решение всех своих проблем. Основная причина, по которой я пишу этот пост, состоит в том, чтобы сообщить вам, что руководство, найденное на официальном сайте Kali, не работает по состоянию на 11 апреля 2018 года. Согласно его упоминаниям на их веб-сайте, вы можете успешно установить пакеты -ocl -icd -libopencl1, драйвер nvidia -, набор инструментов nvidia -cuda -, но при перезагрузке могут возникнуть проблемы. Вы можете получить черный экран и не сможете войти в систему через графический интерфейс. Итак, приступим-

Прежде всего позвольте мне рассказать вам характеристики моей системы-

ЦП -Intel® Core™ i5 -ЦП 8250U с тактовой частотой 1,60 ГГц × 8

Графический процессор #1 -Intel® UHD Graphics 620

ГП #2 -Nvidia GeForce MX150

root@europa:~# uname -a
Linux europa 4.14.0-kali3-amd64 #1 SMP Debian 4.14.17-1kali1 (2018-02-16) x86_64 GNU/Linux

Выпуск-

root@europa:~# cat /etc/*release*
DISTRIB_ID=Kali
DISTRIB_RELEASE=kali-rolling
DISTRIB_CODENAME=kali-rolling
DISTRIB_DESCRIPTION="Kali GNU/Linux Rolling"
PRETTY_NAME="Kali GNU/Linux Rolling"
NAME="Kali GNU/Linux"
ID=kali
VERSION="2018.1"
VERSION_ID="2018.1"
ID_LIKE=debian
ANSI_COLOR="1;31"
HOME_URL="http://www.kali.org/"
SUPPORT_URL="http://forums.kali.org/"
BUG_REPORT_URL="http://bugs.kali.org/"

Прежде чем мы начнем,пара замечаний:

ИСПОЛЬЗУЙТЕ НА СВОЙ РИСК

Это руководство относится к официальному драйверу NVIDIA

Учебник, найденный на официальном сайте Kali, НЕИСПРАВЕН! Он никогда не работает на ноутбуках с поддержкой оптимальной/гибридной графики

.

Шаг 1 :Убедитесь, что у вас гибридная графика

root@europa:~# lspci | grep -E "VGA|3D"
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
01:00.0 3D controller: NVIDIA Corporation GP108M [GeForce MX150] (rev a1)

Шаг 2 :Отключить модерн

echo -e "blacklist nouveau\noptions nouveau modeset=0\nalias nouveau off" > /etc/modprobe.d/blacklist-nouveau.conf
update-initramfs -u && reboot

Шаг 3 :Система перезагрузится, и режим nouveau должен быть отключен. Убедитесь, что nouveau отключено:

lsmod |grep -i nouveau

Если ничего не показывает, это означает, что nouveau успешно отключено.

Шаг 4 :Установите драйвер nvidia из репозитория kali:

apt-get install  nvidia-driver nvidia-xconfig

Вы также можете загрузить последнюю версию файла.run с веб-сайта Nvidia. Выполните и продолжите установку. Будь то из репозитория Kali или веб-сайта Nvidia, процедура одинакова. Код для установки файла.run:

sudo sh./Nvidia-driver-filename.run

Шаг 5 :Теперь нам нужно найти идентификатор шины нашей карты nvidia:

nvidia-xconfig --query-gpu-info | grep 'BusID : ' | cut -d ' ' -f6

должно отображаться что-то вроде этого:

PCI:1:0:0

Это наш идентификатор шины.

Шаг 6 :Теперь мы создаем файл /etc/X11/xorg.conf с этим идентификатором шины в соответствии с руководством Nvidia:

Section "ServerLayout"
    Identifier "layout"
    Screen 0 "nvidia"
    Inactive "intel"
EndSection

Section "Device"
    Identifier "nvidia"
    Driver "nvidia"
    BusID "**PCI:1:0:0**"
EndSection

Section "Screen"
    Identifier "nvidia"
    Device "nvidia"
    Option "AllowEmptyInitialConfiguration"
EndSection

Section "Device"
   Identifier "intel"
   Driver "modesetting"
EndSection

Section "Screen"
   Identifier "intel"
   Device "intel"
EndSection

Замените строку внутри****на идентификатор вашей шины и сохраните ее в /etc/X11/xorg.conf

Шаг 7 :Теперь нам нужно создать несколько сценариев в соответствии с нашим менеджером отображения. Поскольку я использую Kali Linux по умолчанию, то есть GDM, я создал два файла :/usr/share/gdm/greeter/autostart/optimus.desktop /etc/xdg/autostart/optimus.desktop со следующим содержимым:

[Desktop Entry]
Type=Application
Name=Optimus
Exec=sh -c "xrandr --setprovideroutputsource modesetting NVIDIA-0; xrandr --auto"
NoDisplay=true
X-GNOME-Autostart-Phase=DisplayServer

Шаг 8 :Теперь перезагрузите компьютер, и вы должны использовать драйвер Nvidia. Убедитесь, что все в порядке :установите mesa -утилиты, если они не были установлены ранее.

 apt-get install mesa-utils

 root@europa:~# glxinfo | grep -i "direct rendering" direct rendering: Yes

Шаг 9 :Теперь вы можете установить инструменты и драйверы cuda

 apt install -y ocl-icd-libopencl1 nvidia-driver nvidia-cuda-toolkit

Шаг 10 :Теперь, когда наша система готова к работе, нам нужно проверить правильность загрузки драйверов.Мы можем быстро проверить это, запустив инструмент nvidia -smi.

root@europa:~# nvidia-smi
Wed Apr 11 11:08:55 2018       
+-----------------------------------------------------------------------------    +
| NVIDIA-SMI 390.42                 Driver Version: 390.42                        |
|-------------------------------+----------------------+----------------------     +
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================        |
|   0  GeForce MX150       Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   60C    P0    N/A /  N/A |    368MiB /  2002MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage          |
|=============================================================================    |
|    0       763      G   /usr/lib/xorg/Xorg                            20MiB |
|    0       793      G   /usr/bin/gnome-shell                          19MiB |
|    0      1108      G   /usr/lib/xorg/Xorg                            82MiB |
|    0      1191      G   /usr/bin/gnome-shell                         242MiB |
|    0      2132      G   gnome-control-center                           1MiB |
+-----------------------------------------------------------------------------+

РЕШЕНИЕ ПРОБЛЕМЫ С РАЗРЫВОМ ЭКРАНА :После успешной загрузки с помощью драйвера Nvidia вы, скорее всего, столкнетесь с проблемой разрыва экрана, например, :сбои при воспроизведении видео в VLC, видео Youtube в Chrome/Firefox и т. д. К счастью, мы можно исправить это, включив PRIME Sync.

1. Убедитесь, что PRIME отключен

 xrandr --verbose|grep PRIME

должно получиться что-то вроде этого:

 PRIME Synchronization: 0
 PRIME Synchronization: 1

Первый — это наш подключенный дисплей. Синхронизация PRIME отключена.

2. Отредактируйте /etc/default/grub и добавьте nvidia -drm.modeset=1 в GRUB _CMDLINE _LINUX _ПО УМОЛЧАНИЮ после тихого. Как показано ниже:

...
GRUB_CMDLINE_LINUX_DEFAULT="quiet nvidia-drm.modeset=1"
...

3. Сохраните изменения и обновите grub с помощью команды:

 update-grub

4. Перезагрузите систему.

5.Проверьте, включен ли PRIME:

 xrandr --verbose|grep PRIME

Теперь он должен выводить:

 PRIME Synchronization: 1
 PRIME Synchronization: 1

Если у вас по-прежнему отображается 0, возможно, что-то не так с конфигурацией вашей системы/ядром. Поскольку это все еще экспериментальная функция от Nvidia, вам не повезло.

ЕСЛИ ВЫ ЗАСТРЕЛИ НА ЭКРАНЕ ЗАГРУЗКИ

Вернуть то, что мы сделали до сих пор:

Нажмите CTRL+ALT+F2 или CTRL+ALT+F3, войдите под своим паролем.

 apt-get remove --purge nvidia-*
 rm -rf /etc/X11/xorg.conf

Удалите те файлы диспетчера отображения, которые мы создали ранее (для GDM):

 rm -rf /usr/share/gdm/greeter/autostart/optimus.desktop
 rm -rf /etc/xdg/autostart/optimus.desktop

Теперь перезагрузите компьютер. Вы должны быть в состоянии вернуться к своей старой системе.

Если возникнут какие-либо проблемы, отправьте сообщение в форме Кали .

Выражаю искреннюю благодарность Tiger11 , проделавшему всю тяжелую -работу.

2
05.03.2020, 08:58
1 ответ

Мне удалось сделать это с помощью этой конфигурации:

exec \
    swaymsg "workspace $workspace_programming"; \
    swaymsg "exec $neovim"; \
    swaymsg "layout tabbed"; \
    sleep 0.3s; \
    swaymsg "exec $term"; \
    sleep 0.3s; \
    swaymsg "split vertical"; \
    swaymsg "layout stacking"

РЕДАКТИРОВАТЬ:Описанное выше работало, но только при выполнении после запуска (с помощьюexec_always). По какой-то причине при запуске с использованием execэто не работает. Удивительно для меня, он вообще не открывает ни одно окно, даже терминал Neovim. Я его немного рефакторил, и эта версия работает и при запуске:

exec swaymsg "workspace $workspace_programming; exec $neovim; layout tabbed;"
exec sleep 0.3s && swaymsg "exec $term";
exec sleep 0.6s && swaymsg "workspace $workspace_programming; split vertical; layout stacking"

Я не понимаю, в чем разница между обеими версиями и почему первая не работает. Если кто-то может объяснить мне, я был бы рад.

Мне также все еще интересно, есть ли более чистый способ сделать это, не прибегая к sleep.

1
28.04.2021, 23:21

Теги

Похожие вопросы