새로운 OpenBSD 커널을 "안전하게" 설치: `make install`이 이 모든 추가 문제를 겪는 이유는 무엇입니까?

새로운 OpenBSD 커널을 "안전하게" 설치: `make install`이 이 모든 추가 문제를 겪는 이유는 무엇입니까?

새로운 OpenBSD 커널을 구축한 후 install커널의 타겟은 Makefile다음을 수행합니다:

rm -f /obsd
ln /bsd /obsd
cp bsd /nbsd
mv /nbsd /bsd

처음 두 줄은 이전 백업 커널을 삭제 /obsd하고 /obsd현재 실행 중인 커널에 대한 하드 링크를 생성한다는 것을 알고 있습니다 /bsd. 특히 실행 중인 커널은 전혀 이동되지 않습니다. 이것은 나에게 의미가 있습니다.

./bsd/nbsd그런데 새로 빌드된 커널을 먼저 로 이동 한 다음 이름을 로 바꾸는 목적은 무엇입니까 /bsd? 왜 세 번째와 네 번째 행을 더 간단한 행으로 바꾸지 않겠습니까 cp bsd /bsd?

이것이 중요한 경우: OpenBSD의 기본 파티셔닝 체계는 커널 빌드 트리를 루트 파일 시스템과 다른 파일 시스템(디스크 레이블)에 배치합니다.

답변1

makefile 레시피의 명령이 실패 상태를 반환하는 경우(명령 앞에 1이 오지 않는 한 -) 레시피 실행이 중지됩니다. 인용한 레시피는 /bsd명령이 성공한 경우에만 교체되도록 보장합니다 cp bsd /nbsd. 파티션이 가득 차거나 inode가 충분하지 않으면 cp가 실패할 수 있습니다.

관련 정보