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
xvfl8mzajp opened this issue Feb 3, 2019 · 7 comments
Assignees

Comments

@xvfl8mzajp
Copy link

@xvfl8mzajp xvfl8mzajp 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

This comment has been minimized.

Copy link
Collaborator

@olevole olevole commented Feb 4, 2019

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

@xvfl8mzajp

This comment has been minimized.

Copy link
Author

@xvfl8mzajp xvfl8mzajp commented Feb 4, 2019

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

@olevole

This comment has been minimized.

Copy link
Collaborator

@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?

@xvfl8mzajp

This comment has been minimized.

Copy link
Author

@xvfl8mzajp xvfl8mzajp 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

This comment has been minimized.

Copy link
Collaborator

@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
@xvfl8mzajp

This comment has been minimized.

Copy link
Author

@xvfl8mzajp xvfl8mzajp commented Feb 10, 2019

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

@olevole

This comment has been minimized.

Copy link
Collaborator

@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
Projects
None yet
2 participants
You can’t perform that action at this time.