Hasher/tmux: различия между версиями

Материал из ALT Linux Wiki
 
(не показаны 4 промежуточные версии этого же участника)
Строка 1: Строка 1:
= Использование tmux в Hasher =
= Использование tmux в Hasher =
'''tmux''' внутри Hasher может быть полезен, например, для отладки процесса сборки напрямую через <code>rpmbuild</code>.


== 1. Общая настройка Hasher ==
__TOC__


== tmux внутри Hasher ==
=== 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>, например:
   allowed_mountpoints=/proc,/dev/shm,/dev/pts
   allowed_mountpoints=/proc,/dev/shm,/dev/pts
Строка 12: Строка 16:
   $ 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


Нужно добавить пользователя которому будет разрешено присоединяться к 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 ==


  <span style="color:blue">~$</span> '''hsh-run''' --rooter -- /bin/sh -c "echo $USER:x:$UID:$UID::/usr/src:/bin/bash >> /etc/passwd"
Пункты 1-2 как ранее.
  <span style="color:blue">~$</span> '''hsh-run''' --rooter -- /bin/sh -c "echo server-access -aw $USER >> /etc/tmux.conf"


== 3. Запуск tmux сервера ==
=== 3. Запуск tmux сервера ===


Первый запуск tmux запустит tmux server и первую сессию в нём. В ней нужно будет установить разрешающие премишены на управляющий сокет. В дальнейшем вы оставляете эту сессию запущенной. Из неё нельзя выходить иначе tmux будет убит Hasher'ом.
Разрешаем внешнему пользователю присоединяться к tmux серверу. И далее, первый запуск <code>tmux</code> запустит tmux сервер и первую сессию в нём. В ней нужно будет установить разрешающие премишены на контрольный сокет. В дальнейшем вы оставляете эту сессию запущенной — из неё нельзя выходить, иначе tmux будет убит Hasher'ом.


   <span style="color:blue">~$</span> '''hsh-shell''' --mountpoints=/dev/pts
   <span style="color:blue">~$</span> '''hsh-shell''' --mountpoints=/dev/pts
   <span style="color:brown">builder@i586:/.in</span>$ '''tmux''' -S /.out/tmux
   <span style="color:brown">builder@i586:/.in$</span> '''echo''' server-access -aw caller >> ~/.tmux.conf
   <span style="color:brown">builder@i586:/.in</span>$ '''chmod''' 660 /.out/tmux
  <span style="color:brown">builder@i586:/.in$</span> '''tmux''' -S /.out/tmux
   <span style="color:brown">builder@i586:/.in$</span> '''chmod''' 660 /.out/tmux


== 4. Присоединение к tmux извне Hasher ==
=== 4. Присоединение к tmux извне Hasher ===


Допустим workdir находится в <code>~/hasher</code>. При подключении к tmux внутрь Hasher нужно указать пусть к управляющему сокету, который изнутри Hasher имеет имя <code>/.out/tmux</code>, а снаружи <code>~/hasher/chroot/.out/tmux</code>.
Допустим 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

Текущая версия от 02:53, 29 марта 2023

Использование tmux в Hasher

tmux внутри Hasher может быть полезен, например, для отладки процесса сборки напрямую через rpmbuild.

tmux внутри Hasher

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. Запуск tmux сервера

Разрешаем внешнему пользователю присоединяться к tmux серверу. И далее, первый запуск tmux запустит tmux сервер и первую сессию в нём. В ней нужно будет установить разрешающие премишены на контрольный сокет. В дальнейшем вы оставляете эту сессию запущенной — из неё нельзя выходить, иначе tmux будет убит Hasher'ом.

 ~$ hsh-shell --mountpoints=/dev/pts
 builder@i586:/.in$ echo server-access -aw caller >> ~/.tmux.conf
 builder@i586:/.in$ tmux -S /.out/tmux
 builder@i586:/.in$ chmod 660 /.out/tmux

4. Присоединение к 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