Hasher/tmux: различия между версиями
Vt (обсуждение | вклад) |
Vt (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
= Использование tmux в Hasher = | = Использование tmux в Hasher = | ||
== 1. Общая настройка Hasher == | == tmux внутри Hasher == | ||
'''tmux''' внутри Hasher может быть полезен, например, для отладки процесса сборки напрямую через <code>rpmbuild</code>. | |||
=== 1. Общая настройка Hasher === | |||
* В {{path|/etc/hasher-priv/system}} нужно добавить <tt>/dev/pts</tt> в <tt>allowed_mountpoints=</tt>, например: | * В {{path|/etc/hasher-priv/system}} нужно добавить <tt>/dev/pts</tt> в <tt>allowed_mountpoints=</tt>, например: | ||
Строка 12: | Строка 15: | ||
$ hsh-shell --mountpoints=/proc,/dev/kvm,/dev/pts | $ hsh-shell --mountpoints=/proc,/dev/kvm,/dev/pts | ||
== 2. Настроить Hasher сессию == | === 2. Настроить Hasher сессию === | ||
<span style="color:blue">~$</span> '''hsh''' --ini | <span style="color:blue">~$</span> '''hsh''' --ini | ||
<span style="color:blue">~$</span> '''hsh-install''' tmux | <span style="color:blue">~$</span> '''hsh-install''' tmux | ||
=== 3. Запуск tmux === | |||
<span style="color:blue">~$</span> '''hsh-shell''' --mountpoints=/dev/pts | |||
<span style="color:brown">builder@i586:/.in</span>$ '''tmux''' | |||
К сожалению, нельзя оставить tmux внутри <code>hsh-shell</code> и временно выйти, так как Hasher убьёт процесс <code>tmux</code>. | |||
== tmux с доступом извне Hasher == | |||
Пункты 1-2 как ранее. | |||
=== 3. Настроить Hasher сессию === | |||
Нужно добавить пользователя которому будет разрешено присоединяться к tmux серверу. | Нужно добавить пользователя которому будет разрешено присоединяться к tmux серверу. | ||
Строка 22: | Строка 38: | ||
<span style="color:blue">~$</span> '''hsh-run''' --rooter -- /bin/sh -c "echo server-access -aw $USER >> /etc/tmux.conf" | <span style="color:blue">~$</span> '''hsh-run''' --rooter -- /bin/sh -c "echo server-access -aw $USER >> /etc/tmux.conf" | ||
== | === 4. Запуск tmux сервера === | ||
Первый запуск tmux запустит tmux server и первую сессию в нём. В ней нужно будет установить разрешающие премишены на | Первый запуск <code>tmux</code> запустит tmux server и первую сессию в нём. В ней нужно будет установить разрешающие премишены на контрольный сокет. В дальнейшем вы оставляете эту сессию запущенной — из неё нельзя выходить, иначе tmux будет убит Hasher'ом. | ||
<span style="color:blue">~$</span> '''hsh-shell''' --mountpoints=/dev/pts | <span style="color:blue">~$</span> '''hsh-shell''' --mountpoints=/dev/pts | ||
Строка 30: | Строка 46: | ||
<span style="color:brown">builder@i586:/.in</span>$ '''chmod''' 660 /.out/tmux | <span style="color:brown">builder@i586:/.in</span>$ '''chmod''' 660 /.out/tmux | ||
== | === 5. Присоединение к tmux извне Hasher === | ||
Допустим workdir находится в <code>~/hasher</code>. При подключении к tmux внутрь Hasher нужно указать пусть к | Допустим workdir находится в <code>~/hasher</code>. При подключении к tmux внутрь Hasher нужно указать пусть к сокету, который изнутри Hasher имеет имя <code>/.out/tmux</code>, а снаружи <code>~/hasher/chroot/.out/tmux</code>. | ||
Например, проверяем, что доступ есть и сессии видны: | Например, проверяем, что доступ есть и внутренние сессии видны: | ||
<span style="color:blue">~$</span> '''tmux''' -S ~/hasher/chroot/.out/tmux ls | <span style="color:blue">~$</span> '''tmux''' -S ~/hasher/chroot/.out/tmux ls | ||
<span style="color:gray">0: 1 windows (created Tue Mar 28 23:45:10 2023) (attached)</span> | <span style="color:gray">0: 1 windows (created Tue Mar 28 23:45:10 2023) (attached)</span> | ||
Присоединение и создание новой сессии внутри tmux | Присоединение и создание новой сессии внутри tmux: | ||
<span style="color:blue">~$</span> '''tmux''' -S ~/hasher/chroot/.out/tmux new | <span style="color:blue">~$</span> '''tmux''' -S ~/hasher/chroot/.out/tmux new |
Версия от 05:17, 29 марта 2023
Использование tmux в Hasher
tmux внутри Hasher
tmux внутри Hasher может быть полезен, например, для отладки процесса сборки напрямую через rpmbuild
.
1. Общая настройка Hasher
- В /etc/hasher-priv/system нужно добавить /dev/pts в allowed_mountpoints=, например:
allowed_mountpoints=/proc,/dev/shm,/dev/pts
- В ~/.hasher/config добавить /dev/pts в known_mountpoints=, например:
known_mountpoints=/proc,/dev/kvm,/dev/pts
- Ппри запуске hsh-shell нужно передать /dev/pts в ключ
--mountpoints=
, пример:
$ hsh-shell --mountpoints=/proc,/dev/kvm,/dev/pts
2. Настроить Hasher сессию
~$ hsh --ini ~$ hsh-install tmux
3. Запуск tmux
~$ hsh-shell --mountpoints=/dev/pts builder@i586:/.in$ tmux
К сожалению, нельзя оставить tmux внутри hsh-shell
и временно выйти, так как Hasher убьёт процесс tmux
.
tmux с доступом извне Hasher
Пункты 1-2 как ранее.
3. Настроить Hasher сессию
Нужно добавить пользователя которому будет разрешено присоединяться к tmux серверу.
~$ hsh-run --rooter -- /bin/sh -c "echo $USER:x:$UID:$UID::/usr/src:/bin/bash >> /etc/passwd" ~$ hsh-run --rooter -- /bin/sh -c "echo server-access -aw $USER >> /etc/tmux.conf"
4. Запуск tmux сервера
Первый запуск tmux
запустит tmux server и первую сессию в нём. В ней нужно будет установить разрешающие премишены на контрольный сокет. В дальнейшем вы оставляете эту сессию запущенной — из неё нельзя выходить, иначе tmux будет убит Hasher'ом.
~$ hsh-shell --mountpoints=/dev/pts builder@i586:/.in$ tmux -S /.out/tmux builder@i586:/.in$ chmod 660 /.out/tmux
5. Присоединение к tmux извне Hasher
Допустим workdir находится в ~/hasher
. При подключении к tmux внутрь Hasher нужно указать пусть к сокету, который изнутри Hasher имеет имя /.out/tmux
, а снаружи ~/hasher/chroot/.out/tmux
.
Например, проверяем, что доступ есть и внутренние сессии видны:
~$ tmux -S ~/hasher/chroot/.out/tmux ls 0: 1 windows (created Tue Mar 28 23:45:10 2023) (attached)
Присоединение и создание новой сессии внутри tmux:
~$ tmux -S ~/hasher/chroot/.out/tmux new
Таким образом можно создавать много сессий работающих в одном Hasher окружении. Главное не выходить из первой сессии где tmux был запущен в hsh-shell.
^B
+ (
и ^B
+ )
. Остальной функционал см. в документации по tmux.
Документация по tmux
- https://github.com/tmux/tmux/wiki
- https://man7.org/linux/man-pages/man1/tmux.1.html
- https://tmuxguide.readthedocs.io/en/latest/