- Ошибка cannot open display в Linux
- Что означает «cannot open display» в Linux?
- Как исправить «can’t open display :0»
- 1. Использование PlicyKit
- 2. Использование sudo
- 3. Использование gvfs
- 4. Снимаем ограничение доступа к Xorg
- Выводы
- Ошибка Gtk-warning cannot open display при крафической установке orel-stable
- Чёрный экран после установки
- ALSE_User
- ALSE_User
- LuckyNigntshade
- ALSE_User
- Юрий Пет
- LuckyNigntshade
- LuckyNigntshade
- ALSE_User
- countmein
- LuckyNigntshade
- LuckyNigntshade
- kvv-vp
- LuckyNigntshade
- SergeyGo
Ошибка cannot open display в Linux
В операционной системе Linux очень жёсткий контроль полномочий для пользователей. Если пользователь не имеет прав администратора, то он не сможет сделать практически ничего дальше своей домашней папки. Но обычно графические приложения запускаются от имени рядового пользователя. Однако время от времени нужно что-то делать в графическом интерфейсе с файлами, которые не принадлежат текущему пользователю.
И тогда новички пытаются запустить нужное графическое приложение через sudo. Как правило, в таких ситуациях они получают ошибку «cannot open display :0 linux» или нечто подобное. В этой статье мы поговорим о том, что означает эта ошибка, а также как её обойти.
Что означает «cannot open display» в Linux?
Эта ошибка может выглядеть по-разному, в зависимости от приложения, которое вы будете запускать:
- Gtk warning cannot open display :0;
- Unable open display :0;
- Can’t connect to display :0 No protocol specified;
И так далее. Все эти ошибки означают одно: программа не может подключиться к графической подсистеме. Чтобы понять почему это происходит, возвращаемся к тому, что было сказано в самом начале статьи — в Linux очень жёсткий контроль прав пользователей.
В отличие от Windows, где графический интерфейс тесно интегрирован в операционную систему, в Linux это просто ещё одна программа, запущенная от имени обычного пользователя. Эта программа — графический сервер, на данный момент чаще всего используется Xorg.
Ещё одно отличие от Windows — это то, что вы можете запустить несколько графических серверов, и они будут работать не мешая друг другу, потому что каждый из них имеет свой адрес, по которому к нему можно подключиться. Эти серверы доступны глобально во всей системе (почти), но чтобы программы знали, к какому адресу им обращаться при запуске X-сервера, для текущего пользователя создаётся переменная DISPLAY с адресом графического сервера. По умолчанию для первого сервера присваивается адрес :0, для второго :1 и так далее.
Но поскольку при запуске команды через sudo для неё создаётся новое окружение с полномочиями суперпользователя и все переменные текущего пользователя из него не доступны, то наша программа просто не знает, по какому адресу ей обращаться. Это что касается ошибки, когда в конце сообщения «can’t open display» нет нуля. Если нуль есть, значит адрес известен, но X-сервер запрещает подключение. По умолчанию X-сервер разрешает подключаться к себе только пользователю, от имени которого он запущен. А теперь давайте разберём, как обойти проблему.
Как исправить «can’t open display :0»
Начнём с того, что для запуска графических приложений от имени суперпользователя существуют специальные утилиты. Программа sudo для этого не предназначена. Изначально для таких целей использовались kdesudo в KDE и gksu в Gnome. Сейчас они считаются устаревшими и поставляются по умолчанию далеко не всегда. В Ubuntu вы можете установить gksu командой:
А затем запустить с помощью неё своё приложение:
Но надо заметить, что с дисплейным сервером Wayland эта утилита работать не будет. А полноценных альтернатив gksu не существует.
1. Использование PlicyKit
Есть утилита pkexec. Она достаточно удобная, но для каждой программы, которую вы хотите запустить с помощью неё надо создавать отдельно файл настройки. Например, чтобы запустить Nautilus, надо открыть файл ниже и добавить в него такой текст:
sudo vi /usr/share/polkit-1/actions/org.freedesktop.policykit.pkexec.policy
Это значит, что для каждого приложения нам необходимо включить параметр org.freedesktop.policykit.exec.allow_gui=true, иначе переменная DISPLAY экспортирована не будет. Теперь мы можем запустить nautilus:
Это очень неудобно для запуска новых приложений, поэтому есть ещё несколько путей. Другой вариант — вручную передать утилите нужные переменные:
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY nautilus
2. Использование sudo
Можно попросить sudo передать все переменные нашего пользователя во временное окружение суперпользователя с помощью опции -E:
Тогда программа запускается.
3. Использование gvfs
Gnome Virtual Filesystem тоже позволяет получить доступ к файлам с правами администратора. Особенно если вам надо только отредактировать файл. Для этого просто добавьте в начале пути admin://. Например, так можно открыть файл /etc/group для редактирования с помощью gedit:
Смысл здесь в том, что программа запускается от имени обычного пользователя, а файл доступен ей через виртуальную файловую систему.
4. Снимаем ограничение доступа к Xorg
Обычно если переменная $XAUTHORITY содержит адрес файла аутентификации Xorg, то программа использует его для аутентификации в Xorg. Но если значение переменной не установлено, то сервер не позволит установить соединение. Например, если вы получаете ошибку подключения к Display :0, это значит, что адрес дисплейного сервера известен, но к нему нет доступа. Надо разрешить подключаться к Xorg суперпользователю. Для этого используйте команду:
Эта команда действует только до перезагрузки, чтобы сделать её постоянной, добавьте команду в конец ~/.xinitrc:
#!/bin/bash
xhost +SI:localuser:root &
Выводы
В этой статье мы рассмотрели, как исправить ошибку gtk warning «cannot open display :0» в Ubuntu или другом дистрибутиве. Как видите, это не очень сложно. А вы знаете другие пути решения? Напишите в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Ошибка Gtk-warning cannot open display при крафической установке orel-stable
При графической установке orel-stable начинается бесконечный цикл ошибки Gtk-warning cannot open display.
При неграфической установке зависает на пустом экране.
Ниже основное из lshw и скрин ошибки.
linux
описание: Ноутбук
продукт: 82KB (LENOVO_MT_82KB_BU_idea_FM_V15 G2 ITL)
производитель: LENOVO
версия: Lenovo V15 G2 ITL
серийный №: PF3FAY8S
разрядность: 64 bits
возможности: smbios-3.3.0 dmi-3.3.0 smp vsyscall32
конфигурация: administrator_password=disabled boot=normal chassis=notebook family=V15 G2 ITL frontpanel_password=disabled keyboard_password=disabled power-on_password=disabled sku=LENOVO_MT_82KB_BU_idea_FM_V15 G2 ITL uuid=D7FA8DA5-39F4-3D40-AB96-84A93889560D
*-core
описание: Материнская плата
продукт: LNVNB161216
производитель: LENOVO
физический ID: 0
версия: NO DPK
серийный №: PF3FAY8S
слот: Type2 — Board Chassis Location
*-firmware
описание: BIOS
производитель: LENOVO
физический ID: 0
версия: GGCN20WW
date: 01/13/2021
размер: 128KiB
capacity: 12MiB
возможности: pci upgrade shadowing cdboot bootselect edd int13floppynec int13floppytoshiba int13floppy360 int13floppy1200 int13floppy720 int13floppy2880 int9keyboard int10video acpi usb biosbootspecification uefi
*-cpu
описание: ЦПУ
продукт: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz
производитель: Intel Corp.
физический ID: 4
сведения о шине: cpu@0
версия: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz
серийный №: To Be Filled By O.E.M.
слот: U3E1
размер: 1688MHz
capacity: 4200MHz
разрядность: 64 bits
частота: 100MHz
конфигурация: cores=4 enabledcores=4 threads=8
*-memory
описание: Системная память
физический ID: 24
слот: Системная плата или материнская плата
размер: 8GiB
*-bank
описание: Ряд микросхем DDR4 Синхронная 3200 MHz (0,3 ns)
продукт: M471A1G44AB0-CWE
производитель: Samsung
физический ID: 0
серийный №: 00000000
слот: Controller1-ChannelA
размер: 8GiB
разрядность: 64 bits
частота: 3200MHz (0.3ns)
*-pci
описание: Host bridge
продукт: Intel Corporation
производитель: Intel Corporation
физический ID: 100
сведения о шине: pci@0000:00:00.0
версия: 01
разрядность: 32 bits
частота: 33MHz
*-display
описание: VGA compatible controller
продукт: Intel Corporation
производитель: Intel Corporation
физический ID: 2
сведения о шине: pci@0000:00:02.0
логическое имя: /dev/fb0
версия: 01
разрядность: 64 bits
частота: 33MHz
возможности: pciexpress msi pm vga_controller bus_master cap_list rom fb
конфигурация: depth=32 driver=i915 latency=0 mode=1920×1080 visual=truecolor xres=1920 yres=1080
ресурсы: iomemory:600-5ff iomemory:400-3ff IRQ:140 память:6000000000-6000ffffff память:4000000000-400fffffff ioport:5000(размер=64) память:c0000-dffff память:4010000000-4016ffffff память:4020000000-40ffffffff
*-memory UNCLAIMED
описание: RAM memory
продукт: Intel Corporation
производитель: Intel Corporation
физический ID: 14.2
сведения о шине: pci@0000:00:14.2
версия: 20
разрядность: 64 bits
частота: 33MHz (30.3ns)
возможности: pm bus_master cap_list
конфигурация: latency=0
ресурсы: iomemory:600-5ff iomemory:600-5ff память:600113c000-600113ffff память:600114600
Чёрный экран после установки
Доброго времени суток. После установки астры SE 1.7.2 — орёл базовый, и последующей перезагрузки( после установки grub), чёрный экран. Монитор отваливается совсем, т.е. сигнал не идёт на него вообще. Видеокарта nvidia gtx 1650. С чем это может быть связано и как это лечить?
ALSE_User
New member
ALSE_User
New member
LuckyNigntshade
New member
Простите, а как это можно сделать, если я не могу войти в систему совсем? Монитор теряет сигнал, наощупь?
ALSE_User
New member
Юрий Пет
New member
Простите, а как это можно сделать, если я не могу войти в систему совсем? Монитор теряет сигнал, наощупь?
LuckyNigntshade
New member
Спасибо, сейчас попробую через консоль. Жаль, что на базовых дровах нельзя войти
LuckyNigntshade
New member
Всё, куда я могу зайти — это в меню grub`а. Там не находится никаких действий, как мне хотя бы достать информацию с логов
ALSE_User
New member
countmein
New member
В меню Граба должна быть возможность редактировать команду загрузки ядра. Помнится, если туда добавить параметр vga=ask, то при загрузке выводится список поддерживаемых видеорежимов. Можно выбрать какой-нибудь попроще.
LuckyNigntshade
New member
Прошу прощения за преждевременную панику. Консоль обнаружена, не там тапал ctrl + alt + f2. Вывел логи ошибок, отправлю в техподдержку. Вообще, имхо, вот такие танцы с бубном ещё на стадии установки ОС уже отбивают всякое желание иметь с ней дело. Даже на базовых драйверах не запуститься, её ж не первый год разрабатывают.
Спасибо за помощь, по результатам отпишусь
LuckyNigntshade
New member
В меню Граба должна быть возможность редактировать команду загрузки ядра. Помнится, если туда добавить параметр vga=ask, то при загрузке выводится список поддерживаемых видеорежимов. Можно выбрать какой-нибудь попроще.
Спасибо, завтра попробую, сегодня уже голова не соображает. Да, читал что-то такое в туториалах. Самое интересное, до до этого устанавливал common edition, там всё отлично работало
kvv-vp
New member
В меню grub измените vga в соответствии с разрешением монитора. «vga=775», как пример.
https://wiki.enchtex.info/doc/vgatable
LuckyNigntshade
New member
В меню grub измените vga в соответствии с разрешением монитора. «vga=775», как пример.
https://wiki.enchtex.info/doc/vgatable
SergeyGo
New member
На своем опыте могу сказать что последние системы на z590 и 10м проце без видеокарты, астра вплоть до ядра 5.4 не видит графического ядра, то ставим видюху (с поддержкой uefi), ставим астру, обновляем 11м обновлением ставим ядро 5.10 убираем видиокарту астра видит графическое ядро на проце, все работает. Если процы типа серверных астра видит графическое ядро или встроенную графику, но с нвидиа картой не запускается, то убираем видеокарту стаим астру, обновляем 11м обновлением ядро 5.10 (5.15 у меня лично не зашли с нвидиа) и ставим дрова нвидиа 510 (через репозиторий локальный) но можно и через интернет. Вставляем нвидиа, все работает.