Start X at Boot (Українська)

From ParabolaWiki
Jump to: navigation, search

i18n


Dansk – Deutsch – English – Esperanto – Español – Euskera – Français – Galego – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Polski – Português – Română – Slovenský – Suomi – Svenska – Türkçe – Česky – Ελληνικά – Български – Русский – Српски – Українська – العربيّة – עברית – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어

Короткий зміст
Охоплює методи bash_profile і inittab для запуску X сервера під час завантаження.
Дивіться також
Automatic login to virtual console
Display Manager
Xinitrc (Українська)

Більшість користувачів використовують дисплейний менеджер для запуску X-сервера. У цій статті представлено два методи запуску без дисплейного менеджера. Метод bash_profile запустить X, коли він ввійде в tty. Спосіб inittab дозволяє автоматично запускати X без надання пароля.

Щоб вручну запустити X, використовуються startx або xinit. Обидва будуть виконувати ~/.xinitrc, які можуть бути налаштовані для запуску вибору менеджера вікон, як описано у статті xinitrc (Українська).

1 bash_profile

Альтернативою для менеджера входу є додавання наступного до у низ вашого ~/.bash_profile (якщо ~/.bash_profile ще не існує, ви можете скопіювати скелет з /etc/skel/.bash_profile. Якщо ви використовуєте zsh, додайте наступні рядки до вашого ~/.zprofile):


~/.bash_profile
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
  exec startx
  # Could use xinit instead of startx
  #exec xinit -- /usr/bin/X -nolisten tcp vt7
fi

або за допомогою додаткової перевірки(якщо tty1 (Ctrl+Alt+F1) показує повідомлення про помилку):

~/.bash_profile
if [[ -z $DISPLAY ]] && ! [[ -e /tmp/.X11-unix/X0 ]] && (( EUID )); then
  exec startx
fi

Або з підказкою:

~/.bash_profile
if [[ -z $DISPLAY ]] && ! [[ -e /tmp/.X11-unix/X0 ]] && (( EUID )); then
  while true; do
    read -p 'Do you want to start X? (y/n): '
    case $REPLY in
      [Yy]) exec xinit -- /usr/bin/X -nolisten tcp vt7 ;;
      [Nn]) break ;;
      *) printf '%s\n' 'Please answer y or n.' ;;
    esac
  done
fi

Ви вийдете з профіля користувача, коли X буде вбито. Щоб уникнути цього, видаліть частину exec з сценарію.

Примітка: Цей метод можна поєднувати з автоматичним входом до віртуальної консолі і діяти подібно до методу inittab, але він правильно реєструє сеанс і працює з ConsoleKit.
Увага: Існує значна відмінність у безпеці при використанні простого startx замість менеджера входу. Таким чином, запускаючи startx з консолі ви завжди зможете перемикатися з X (зазвичай на tt7) назад до tty1 (Ctrl+Alt+F1) і отримати контроль над оболонкою користувача, навіть якщо екран заблокований (і т.п., за допомогою XScreenSaver, i3lock і т.д.). Рішення: замінити exec startx на exec nohup startx> .xlog & vlock. Це домопагає запускати X, перенаправляє друк до ~/.xlog і блокує консольну оболонку. Звичайно, вам слід спочатку встановити vlock.

2 inittab

Інший спосіб обходу менеджерів відображення та завантаження прямо в бажаний менеджер вікон або середовище робочого столу включає редагування /etc/inittab.

Примітка: Цей метод не використовуватиме /bin/login або реєструватиме ваш сеанс, тому в who або w не з'явиться жодна сесія. Ваша сесія також не буде авторизована як "локальна" у ConsoleKit, тому ви не зможете вимкнути/призупинити/перезавантажити або змонтувати диск без використання sudo або su.

Змініть:

id:3:initdefault:
[...]
x:5:respawn:/usr/bin/xdm -nodaemon

На:

id:5:initdefault:
[...]
x:5:once:/bin/su - -- PREFERRED_USER -l -c '/usr/bin/startx </dev/null >/dev/null 2>&1'
  • Опція - викликає "оболонку входу", додаючи тире (-) до його імені.
  • Оскільки команда задається опцією -c, оболонка також запускається в "неінтерактивному режимі".
  • Bash не виконує звичайний процес входу в режим неінтерактивного входу, якщо він не вимушений за допомогою параметра -l.
  • Стандартний вхід повинен бути перенаправлений (</dev/null), якщо Getty або інша програма все ще використовується на консолі, інакше буде конфлікт між кількома програмами, які перехоплюють консольний вхід.
  • Вихід також може бути перенаправлений (>/dev/null 2> & 1), щоб уникнути виведення повідомлень з X у консоль.
  • Поле, заповнене once, може бути змінено на respawn, яке перезавантажить X, якщо він вийде.
  • startx може бути змінений на будь-яку бажану команду або сценарій. Наприклад:
startx -- -nolisten tcp -br -deferglyphs 16

Також ви можете зробити це для декількох користувачів, які використовують різні рівні виконання,

x1:4:once:/bin/su - -- PREFERRED_USER1 -l -c '/usr/bin/startx </dev/null >/dev/null 2>&1'
x2:5:once:/bin/su - -- PREFERRED_USER2 -l -c '/usr/bin/startx </dev/null >/dev/null 2>&1'

і вставлення нового запису в GRUB 's /boot/grub/menu.lst:

# (0) Parabola GNU/Linux-Libre
title  Parabola GNU/Linux-Libre USER1
root   (hd0,0)
kernel /vmlinuz-linux-libre root=/dev/disk/by-label/Libre ro 4
initrd /initramfs-linux-libre.img

# (1) Parabola GNU/Linux-Libre
title  Parabola GNU/Linux-Libre USER2
root   (hd0,0)
kernel /vmlinuz-linux-libre root=/dev/disk/by-label/Libre ro 5
initrd /initramfs-linux-libre.img
Примітка: Якщо у вас виникли проблеми з написанням не-ASCII букв у терміналах в X, видаліть -l перемикач (дивіться тут).

3 Підтвердження

Ця стаття базується на ArchWiki. Ми вилучили всі елементи, які не відповідають FSDG(оригінал).