Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Двойная отработка скрипта запуска в jail #382

Closed
theawgur opened this issue Feb 3, 2019 · 7 comments
Closed
Assignees

Comments

@theawgur
Copy link

@theawgur theawgur commented Feb 3, 2019

Mandatory info for bug reports:
При использовании символа табуляции вместо пробела в файле ${workdir}/jails-fstab/fstab.todolist.local происходит двойная отработка скрипта запуска контейнера (jail-окружения). Если использовать пробел работает нормально.

FreeBSD version ( uname -a ): FreeBSD srv.local 12.0-RELEASE-p2 FreeBSD 12.0-RELEASE-p2 GENERIC amd64

CBSD version ( cbsd version ): 12.0.3
copypast.txt

@olevole olevole self-assigned this Feb 3, 2019
@olevole
Copy link
Member

@olevole olevole commented Feb 4, 2019

странно. а что в fstab.todolist.local ? приаттачи плз, с табами

@theawgur
Copy link
Author

@theawgur theawgur commented Feb 4, 2019

Прикладываю...
fstab.todolist.local.zip

@olevole
Copy link
Member

@olevole olevole commented Feb 5, 2019

неплохо запаковалось в zip, в 4 раза больше ;)

% /usr/bin/stat -f " %N%t%t %z" fstab.todolist.local fstab.todolist.local.zip
fstab.todolist.local 52
fstab.todolist.local.zip 226

Похоже дело не в табе, а zfs. Когда zfs аттачится, jail создается с persist, чтобы можно было вклиниться и сделать аттач ZFS в уже рабочий jail но до /etc/rc последовательности. Без persist создание и запуск jail является атомарным действием. А двойной запуск, походу с этого:

exec.start = "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";

Странно что без табов все ок, может там где без табов нет zfs?

@theawgur
Copy link
Author

@theawgur theawgur commented Feb 5, 2019

Оба jail активно ругаются

jail: todolist: /bin/sh -c /usr/local/bin/cbsd detachzfs fstab=/srv/jhive/jails-fstab/fstab.todolist.local jname=todolist; : failed

ругаются, но FS в jail видна

root@todolist:~ # mount
/srv/jhive/basejail/base_amd64_amd64_12.0 on / (nullfs, local, read-only)
/srv/jhive/jails-data/todolist-data/etc on /etc (nullfs, local)
/srv/jhive/jails-data/todolist-data/root on /root (nullfs, local)
/srv/jhive/jails-data/todolist-data/tmp on /tmp (nullfs, local)
/srv/jhive/jails-data/todolist-data/usr/home on /usr/home (nullfs, local)
/srv/jhive/jails-data/todolist-data/usr/local on /usr/local (nullfs, local)
/srv/jhive/jails-data/todolist-data/compat on /compat (nullfs, local)
/srv/jhive/jails-data/todolist-data/var on /var (nullfs, local)
devfs on /dev (devfs, local, multilabel)
srv_usr/jhive/_ds/todolist.srv on /usr/home/srv (zfs, local, nfsv4acls)

и файлы там имеются

olevole pushed a commit that referenced this issue Feb 9, 2019
grep with " zfs " doesnt work when tab used. use special [[:space:]] macros here

reported by: @xvfl8mzajp, issue #382
@olevole
Copy link
Member

@olevole olevole commented Feb 9, 2019

Думаю, проблема в этой строчке:

https://github.com/cbsd/cbsd/blob/v12.0.3/tools/makejconf#L111

тк " zfs " не грепает с табами ( надо юзать \t для tab ), то не отрабатывает идущий следом unset для exec_start последовательности. Поэтому как я и написал выше - дважды работал /etc/rc

Можешь попробовать руками поправить это в

/usr/local/sbin/cbsd/tools/makejconf , поменяв строку

/usr/bin/egrep -v "^#" "${_zfsfstab}" | /usr/bin/grep -q ' zfs '

на

/usr/bin/egrep -v "^#" "${_zfsfstab}" | /usr/bin/grep -q '[[:space:]]zfs[[:space:]]'

и выполни:
cbsd initenv

man.freebsd.org/re_format/7 говорит что это ' ' ИЛИ '\t', поэтому нам подходит

ps: незнаю насчет войдет ли в 11.0.4 - я апдейт в bugs.freebsd.org отправил неделю назад. если получится - пересоздам архив и залезится в 11.0.4. Thx!

ps2: если правка не помогает - переоткрой issue

@olevole olevole closed this Feb 9, 2019
@theawgur
Copy link
Author

@theawgur theawgur commented Feb 10, 2019

Спасибо, помогло, только файлик /usr/local/cbsd/tools/makejconf называется.

@olevole
Copy link
Member

@olevole olevole commented Feb 16, 2019

commited to ports tree: 12.0.4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants