FreeBSD 11.3을 실행하는 FreeNAS 서버에서 일부 11.3 Base Jail을 11.4로 업그레이드하려고 합니다. 나는 다음을 사용했다:
iocage upgrade -r 11.4-RELEASE my-jail-name
일부 감옥은 etcupdate failed! Rolling back snapshot
메시지로 인해 실패합니다. etcupdate
감옥 안팎에서 수동으로 실행 하려고 하면 iocage exec
다음과 같은 추가 메시지가 나타납니다. Failed to build new tree.
무엇이 잘못되었나요?
답변1
/usr/local/sbin/etcupdate
스크립트가 실패하는 이유는 시스템 불변 플래그를 설정하여 특정 파일이 삭제되는 것을 방지하기 때문인 것으로 나타났습니다 chflags schg
. 스크립트의 213행을 참조하세요.
chflags -R noschg $1 >&3 2>&1 || return 1
불행하게도 플래그를 더 이상 지우지 못하고 265-266행에서 오류가 발생합니다 Operation not permitted
.
chflags -R noschg $1 >&3 2>&1
rm -rf $1 >&3 2>&1
감옥에 필요한 allow_chflags
설정이 있음에도 불구하고 설정을 허용하는 securelevel
것이 기본값이기 때문입니다.2
schg
아니요그렇게 되도록 허락하다설정되지 않았습니다.
이 문제를 해결하려면 감옥을 securelevel
임시 로 변경하고 켜져 있는지 0
확인한 다음 작동해야 했습니다. 업그레이드한 후에는 더 안전한 기본값 으로 다시 변경하겠습니다 .allow_chflags
iocage upgrade
securelevel
2
혹시 다른 분들께 도움이 될까 해서 여기에 글을 올립니다.