VPS에서 실행되는 Linux Arch 시스템이 있습니다. rootfs는 LVM 파티션에 설치됩니다. 이 파티션에 암호화된 컨테이너를 오버레이한 다음 여기에 rootfs를 다시 마운트하고 SSH를 통해 부팅 시 SSH 잠금 해제를 활성화하고 싶습니다. 기존 rootfs의 모든 내용을 삭제하고 처음부터 새 루트fs를 만들게 되어 기쁩니다.
나는 다음과 같이 진행합니다 :
- /tmp/newroot에 새로운 임시 rootfs를 생성합니다(나는아치스 위키)
- chroot 및 pacman 설정, 인증 키를 정의하는 항목 설치, sshd를 활성화하지만 시작하지 않음
- 원래 루트 디렉터리로 다시 종료
- 새 루트로 영구적으로 전환: 다음 제안 사항이것은 훌륭한 기사입니다, 아래 코드를 실행합니다.
- 이 시점에서 lvm 파티션에 있는 이전 루트에 여전히 걸려 있는 sshd 및 기타 모든 서비스를 다시 시작하고 싶습니다.
- lvm 파티션에 암호화된 파티션 생성
- 그것에 아치 리눅스를 설치하고 intrafms를 적절하게 수정하십시오.
6단계와 7단계는 잘 문서화되어 있습니다(예:여기).
다음은 훌륭하게 작동하는 4단계의 세부정보입니다.
# we start after step 2, so that /tmp/newroot contains a minimal temporary root fs
# with network, sshd and pacman, and the command prompt is from the original root
# move the new root fs to a newly create /tmproot, as per the referenced post
# (perhaps this is redundant, I could have used newroot directly, but it should not harm)
mkdir /tmp/tmproot
mount -t tmpfs none /tmp/tmproot
mv /tmp/newroot/* /tmp/tmproot
# switch to new root
mount -a
mount --make-rprivate / # necessary for pivot_root to work
pivot_root /tmp/tmproot /tmp/tmproot/oldroot
# move some directories to newroot
for i in dev proc sys run; do mount --move /oldroot/$i /$i; done
5단계에서 막혔어요. 를 사용하면 fuser -vm /oldroot
이전 루트 파티션에 여전히 많은 프로세스가 걸려 있는 것을 볼 수 있습니다. newroot에서 다시 시작하려고 하면 systemctl
오류가 발생합니다.
# systemctl restart sshd
Failed to restart sshd service: Failed to activate service 'org.freedesktop.systemd1': timed out
수동으로 종료할 수는 있지만 init 프로세스만 남아 있어 systemd
종료할 수 있는 방법이 없는 것 같습니다. systemctl daemon-reexec
불가능한.
어쩌면 파일 시스템에서 뭔가를 구성하는 것을 잊어버린 것일까 newroot
요? 어쩌면 switch_root
대신 사용해야할까요 pivot_root
?
어떤 제안이 있으십니까? 감사해요
답변1
보세요https://wiki.archlinux.org/index.php/Dm-crypt/Specialties. mkninitcpio 암호화 후크를 encryptssh로 전환하고 커널 부팅 라인에 무언가를 추가할 수 있습니다. 나는 dropbear 후크를 사용하고 있으며 정말 잘 작동합니다.