Как сделать nohup chroot процесса?
Проблема такая. Надо запустить процесс "в фоне", только вот беда в том, что процесс надо запускать в chroot-е.
Вот нормальный ход команды:
termux@termux: ~ $ su
root@android: ~ # chroot /data/local/devuan4 /bin/su -l
root@devuan4: ~ # cd linux/linux-6.0
root@devuan4: ~/linux/linux-6.0 # bash run.sh
# А там команда make...
LD vmlinux.o
И вот на этой стадии поднимается OOM киллер, который, по сути, обрывает сборку ядра. Возникла идея сделать nohup - но как это правильно сделать?
Просто, тут есть проблема. Вот как запускается make:
zygote64
|- com.termux
| |- zsh
| | |- /sbin/su
-------------------------------------------------------------------------------------------------
| | | |- chroot /data/local/devuan4 /bin/su -l
| | | | |- /bin/bash
| | | | | |- bash run.sh
| | | | | | |- make -j6 ARCH=x86_64 SUBARCH=x86_64 CROSS_COMPILE=/usr/bin/x86_64-linux-gnu-
Но по факту все, что идёт после su, запускается от magiskd (такие особенности работы Magisk. Так что запущенный из Termux-а su лишь ожидает конца дочерней сессии), так что реальная картина такая:
/init
|- magiskd
| |- /sbin/su
| | |- chroot /data/local/devuan4 /bin/su -l
| | | |- /bin/bash
| | | | |- /bin/bash run.sh
| | | | | |- make -j6 ARCH=x86_64 SUBARCH=x86_64 CROSS_COMPILE=/usr/bin/x86_64-linux-gnu-
Но, как я уже сказал, поднимается OOM киллер, который "гасит" терминал, а вместе с ним - и сборку ядра.
Вопрос: как же заставить команду make работать даже в случае, если упадёт Termux, zygote или даже сам magiskd? Видно же, что сборка vmlinux требует нехилой нагрузки на телефон...
Запустить по USB через adb - сомнительная затея, т к может упасть сам adbd, а вместе с ним - и adb сессия:
/init
|- adbd
| |- /system/bin/sh
| | |- chroot /data/local/devuan4 /bin/su -l
| | | |- /bin/bash
| | | | |- /bin/bash run.sh
| | | | | |- make -j6 ARCH=x86_64 SUBARCH=x86_64 CROSS_COMPILE=/usr/bin/x86_64-linux-gnu-
Ответы (1 шт):
Надо было просто так сделать:
termux@termux: ~ $ su
root@android: ~ # chroot /data/local/devuan4 /bin/su -l
root@devuan4: ~ # cd linux/linux-6.0
root@devuan4: ~/linux/linux-6.0 # exec nohup bash run.sh
