LINUX.ORG.RU

Еще раз про автологин с автозапуском Иксов


1

1

Из всех рецептов по автологину с последующим автозапуском Иксов без использования /gdm/kdm/xdm пока нашел один нормальный: https://syslinux.ru/node/1362

Но к нему есть некоторые вопросы:

В Центосе в /etc/inittab изначально нет такой строки -

c1:12345:respawn:/sbin/agetty 38400 tty1 linux

соответственно возникает сомнение, будет ли корректно работать рекомендованная строка

c1:2345:respawn:/sbin/agetty -a your_user -8 -s 38400 tty1 linux

И что за параметр такой - 38400? Это что, скорость, а 8 - битность? При чем тут они к автологину и Иксам?

В-общем, буду признателен, если кто объяснит, как работает этот непонятный рецепт и как его приспособить к Центос.

★★★★★

Из всех рецептов по автологину с последующим автозапуском Иксов без использования /gdm/kdm/xdm пока нашел один нормальный:

nodm поставь и не парься.

Zubok ★★★★★
()

автологин с автозапуском Иксов

$ grep autologin /etc/inittab
1:2345:respawn:/sbin/getty 38400 tty1 --noclear --autologin halo
$ grep startx -B 2 -A 2 ~/.bashrc 
PS1='\h \w $ '
if [ `tty` == "/dev/tty1" ]; then
    startx
fi

Debian, sysvinit. Если в CentOS - systemd (я хз, что там), то придется делать по другому.

Extraterrestrial ★★★★★
()
Последнее исправление: Extraterrestrial (всего исправлений: 1)
Ответ на: комментарий от Zubok

И что за параметр такой - 38400? Это что, скорость, а 8 - битность? При чем тут они к автологину и Иксам?

В-общем, буду признателен, если кто объяснит, как работает этот непонятный рецепт и как его приспособить к Центос.

chukcha ★★★★★
() автор топика
Ответ на: комментарий от ogiel

Кто-нибудь, объясните мне чем так неправославен xdm?

Если не смогли ответить на мои, простые вопросы, то на этот и подавно.

chukcha ★★★★★
() автор топика
Ответ на: комментарий от chukcha

Странная ситуация, кто разрулит?

Вот сделал по этой рецептуре автологин и автозапуск Иксов:

в конфиге /etc/init/tty.conf
заменил строку

exec /sbin/mingetty $TTY
на
exec /sbin/mingetty --autologin chukcha $TTY

Это работает.

Потом сделал «умный» запусков Иксов, добавив в файл ~/.bash_profile той же учетной записи строку:

[[ $(fgconsole 2>/dev/null) == 1 ]] && exec startx — vt1

- и это тоже работает.

Но когда добавляю в ~/.bash_profile (или в ~/.bashrc) строку для запуска любой утилиты, например, screen - странное дело, Иксы вообще не стартуют!

Почему так происходит? И как сделать, чтобы автозапуск любой программы в моем аккаунте не нарушал запуск Иксов?

chukcha ★★★★★
() автор топика
Ответ на: комментарий от arson

Нет, запускалось вот так - добавлялись две строки в файл .bashrc: или в .bash_profile

xterm
screen

- это не есть правильно?

chukcha ★★★★★
() автор топика
Ответ на: комментарий от chukcha

это не есть правильно?

Нет. И screen -d -m &, тоже не правильно
1. Команды нужно добавлять в .xinitrc (при старте с помощью startx)
2. Команды выполняются последовательно, если ты хочешь запустить xterm, то его надо запускать как фоновый процесс (xterm &), иначе скрипт будет ждать его завершения.
3. Команда screen запускается в терминале, т.е. xterm -e screen &
4. Последняя команда в .xinitrc запуск твоего WM.
Пример:

xterm -e screen &
setxkbmap -option terminate:ctrl_alt_bksp
exec icewm-session

arson ★★★★★
()
Ответ на: комментарий от chukcha

Сделал следующее:

1. Заменил в /etc/init/tty.conf строку

exec /sbin/mingetty $TTY
на
exec /sbin/mingetty --autologin chukcha $TTY

2. В /home/chukcha/.bash_profile добавил строки:

if [[ $(fgconsole 2>/dev/null) == 1 ]]; exec startx — vt1
screen -dm /bin/bash -c «bash ferma.sh»


В результате происходит:
- автологин юзера chukcha
- автозапуск Иксов
- запуск скрипта ferma.sh в сесии screen.

Но вот проблема - в процессах видно, что вместо одного запускается аж 6 (т.е. по числу консолей) непонятных процессов от имени chukcha такого вида:

/sbin/init
├─ login — chuckha
└─ /bin/sh /usr/bin/startx — vt1
└─ xinit /etc/X11/xinit/xinitrc — /usr/bin/X vt1 -auth /home/chuckha/.serverauth.2938

Что я сделал не так?

chukcha ★★★★★
() автор топика
Ответ на: комментарий от chukcha

Что я сделал не так?

Это:

Заменил в /etc/init/tty.conf строку

В результате система пытается запустить 6 X-ов

Скопируй /etc/init/tty.conf в /etc/init/autologin.conf, там исправь на exec /sbin/mingetty --autologin chukcha $TTY

Создай файл /etc/init/start-ttys.override, следующего содержания:

start on stopped rc RUNLEVEL=[2345]

env ACTIVE_CONSOLES=/dev/tty[1-6]
env X_TTY=/dev/tty1
task
script
    . /etc/sysconfig/init
    for tty in $(echo $ACTIVE_CONSOLES) ; do
        [ "$RUNLEVEL" = "5" -a "$tty" = "$X_TTY" ] && continue
        num=`basename "$tty"`
        case $num in
            tty1) initctl start autologin TTY=$tty ;;
            *) initctl start tty TTY=$tty ;;
        esac
     done
end script

arson ★★★★★
()
Ответ на: комментарий от arson

Спасибо большое, сейчас испробую!
Но можно вначале вопрос?

Автологин и автозапуск вроде бы по своей сущности должны быть несложными задачами.
Но ваш интеллектуальный скрипт это опровергает.
Неужели в Линуксе это только так решается?

chukcha ★★★★★
() автор топика
Ответ на: комментарий от chukcha

интеллектуальный скрипт

Этот скрипт немного модифицированный /etc/init/start-ttys.conf (он его замещает)

Неужели в Линуксе это только так решается?

Тебе же советовали, пользуйся *DM, *DE, там все кнопочками можно настроить (говорят, сам не пользуюсь). А если хочешь запустить напрямую twm, то пару строчек в скрипт придется дописать.

И еще раз повторю, программы которые должны запускаться в X-сессии лучше добавлять в ~/.xinitrc Еще раз про автологин с автозапуском Иксов (комментарий)

arson ★★★★★
()

одну строку лишь добавить надо

x:5:respawn:/bin/su eddy -l -c "/bin/bash --login -c startx -- -nolisten tcp -br -deferglyphs 16 >/dev/null 2>/dev/null"
Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

И чем это противоречит?

#ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM

Воспринимается только конструкция вида id:5:initdefault:

arson ★★★★★
()
Ответ на: комментарий от arson

И еще раз повторю, программы которые должны запускаться в X-сессии лучше добавлять в ~/.xinitrc

Да-да, это я помню, но тогда же я задал вопрос, но он остался без ответа:

А как же тогда быть с .xinitrc, если его нет в системе?


одну строку лишь добавить надо

А это строчка что, заменяет вышеуказанный скрипт, что ли?
И куда ее добавлять?

chukcha ★★★★★
() автор топика
Ответ на: комментарий от chukcha

А как же тогда быть с .xinitrc, если его нет в системе?

Ручками добавить к себе в хомяк. У меня вот что там:

cat ~/.xinitrc 
#!/bin/sh
#
# ~/.xinitrc
#
# Executed by startx (run your window manager from here)

if [ -d /etc/X11/xinit/xinitrc.d ]; then
  for f in /etc/X11/xinit/xinitrc.d/*; do
    [ -x "$f" ] && . "$f"
  done
  unset f
fi

syndaemon -i 2 -d
exec icewm-session

А это строчка что, заменяет вышеуказанный скрипт, что ли?
И куда ее добавлять?

Эту строчку надо добавлять в /etc/inittab. Соответственно, уровнем запуска по умолчанию должен быть пятый. Если нет — сделать нужный фикс.

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

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

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

В некотором недоумении... Ведь в стандартной системе запуска Иксы запускаются от рута и вне зависмости, залогинился ли какой-то юзер или нет - Иксы уже запущены заранее.
Не будет ли такой запуск Иксов от «юзера» вызывать какие-то артефакты?

chukcha ★★★★★
() автор топика
Ответ на: комментарий от chukcha

Кажется, я понял, как лучше - нужно отделить мухи от котлет :)
Т.е., запускать Иксы стандартным образом - через 5-й уровень, а консольные приложения как-то по-другому.

И еще раз повторю, программы которые должны запускаться в X-сессии лучше добавлять в ~/.xinitrc

Нет, их как раз не нужно запускать в X-сесии!
Кажется, я плохо объяснил ситуацию, попробую еще раз.

1. Иксы нужно просто запустить, чтобы они просто болтались в процессах, как говорится, «для мебели», и всё - пользоваться ими не планируется, и логиниться в них тоже не требуется.

2. А вот консольное приложение нужно запускать в обычной виртуальной консоли, используя bash - без всяких там Иксов.
В какой-то из этих виртуальных консолей, например, tty3, нужно сделать автологин и в тоже время - предотвратить автологин во всех пяти оставшихся консолей.

Вот, кажется объяснил подробно ;)

chukcha ★★★★★
() автор топика
Последнее исправление: chukcha (всего исправлений: 1)
Ответ на: комментарий от chukcha

Иксы запускаются пользователем, а потом уже — от рута!

Не будет ли такой запуск Иксов от «юзера» вызывать какие-то артефакты?

Нет. У тебя же startx работает!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Иксы запускаются пользователем, а потом уже — от рута!

Как это пользователем?? Хорошо, вВот давайте представим такую простую ситуацию:
- пользователь нажимает кнопку питания от системного блока.
К которому не подключена ни клавиатура, ни мышь - только монитор.
Т.е. пользователь не имеет возможности запустить чего-либо.

Тем не менее Иксы без пользователя запускаются самостоятельно, и они видны на экране.

chukcha ★★★★★
() автор топика
Ответ на: комментарий от chukcha

Что-то вроде получилось, проверьте, плиз, и покритикуйте:

1. Сделать копию файла /etc/init/tty.conf под названием autologin.conf и заменить в нем строку:

exec /sbin/mingetty $TTY
на
exec /sbin/mingetty --autologin chukcha $TTY

2. Создать файл с /etc/init/start-ttys.override с таким содержанием:

start on stopped rc RUNLEVEL=[2345]

env ACTIVE_CONSOLES=/dev/tty[1-6]
env X_TTY=/dev/tty1
task
script
. /etc/sysconfig/init
for tty in $(echo $ACTIVE_CONSOLES) ; do
[ «$RUNLEVEL» = «5» -a «$tty» = «$X_TTY» ] && continue
if [ «$tty» = «/dev/tty1» -o «$tty» = «/dev/tty2» ]; then
initctl start autologin TTY=$tty
else
initctl start tty TTY=$tty
fi
done
end script

3. Добавить в /home/abdula/.bash_profile две строки:

[[ $(tty) = «/dev/tty1» ]] && exec startx — vt1
[[ $(tty) = «/dev/tty2» ]] && exec screen /bin/bash -c «bash rtorrent»

В результате в консоли-1 запустятся X-ы, а в консоли-2 - приложение rtorrent

chukcha ★★★★★
() автор топика
Ответ на: комментарий от chukcha

Ну если у пользователя chukcha домашний каталог /home/abdula, то наверное сойдет. Правда скорее всего после запуска ты окажешься в X-ах, что как я понял тебе не надо.

arson ★★★★★
()
Ответ на: комментарий от arson

В каком смысле окажусь в Иксах?
Исследуемый комп удаленный, поэтому по ssh вижу, что запустился процесс X, и отдельно в SCREEN процесс rtorrent,

chukcha ★★★★★
() автор топика
Ответ на: комментарий от arson

Исследуемый комп удаленный
Новые подробности :)

Эээ.... а разве эта подробность вляет на всё остальное? Это лишь контроль за удаленным компом.

chukcha ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.