루트를 제거하고 SSH를 사용하여 전체 디스크를 수정하는 Python 스크립트를 실행하는 방법은 무엇입니까?

루트를 제거하고 SSH를 사용하여 전체 디스크를 수정하는 Python 스크립트를 실행하는 방법은 무엇입니까?

SSH를 사용하여 Debian 또는 CentOS 장치에 연결하고 전체 디스크(5개의 파티션이 있는 30GB 디스크, 새 원시 디스크 이미지 파일과 Linux 루트 디렉터리에 새 파티션 테이블을 작성하여 5번째 파티션)를 수정하고 싶습니다. 나의 주요 목표는 이것을 원격으로 자동화하는 것입니다.

그래서 어떻게든 루트 파티션을 마운트 해제하고 Linux가 RAM에서 실행되는 동안 Python을 실행할 수 있을 것이라고 생각했습니다. 이것이 가능합니까?

대안이나 더 나은 솔루션이 있습니까?

메모 추가: "그들은 서버가 아닙니다. 물리적으로 쉽게 접근할 수 있는 라즈베리 파이와 같습니다. SD 카드와 같은 디스크가 있어 수동으로 제거하고 컴퓨터에 설치하고 새 이미지를 쓴 다음 데비안 USB로 부팅할 수 있습니다. 나머지 부분에 설치하세요. 이 작업을 더 쉽게 만들려고 노력 중입니다."

답변1

설명을 정확하게 따를 수는 없습니다.

그러나 많은 배포판에서는 초기 부팅을 위해 Intramfs 이미지를 사용합니다. 이 이미지의 init 스크립트를 수정하려면 파일 시스템을 마운트하기 전에 작업을 실행할 수 있습니다. 한 번만 발생하는 메서드를 작성하려면 더욱 현명해야 합니다. 이 모든 작업은 충분한 액세스 권한이 있으면 원격으로 수행할 수 있습니다. CentOS와 Debian은 initramfs에 서로 다른 시스템을 사용하므로 이 작업을 두 번 수행해야 합니다. 로컬 액세스 권한이 없는 시스템에 배포하기 전에 로컬 액세스 권한이 있는 시스템의 버그를 해결하는 것이 좋습니다. 이런 일은 완벽하게 작동해야 합니다.

답변2

이 목적을 위해 사용자 정의 initramfs 이미지를 생성할 수 있습니다. 이에 대한 Dracut 모듈(또는 선호하는 initramfs 빌더에 따라 initramfs-tools 후크)을 확인하세요. 전체 Python 환경을 제공하는 것은 어려운 일이므로 가능하면 셸 도구를 사용하는 것이 좋습니다 sfdisk. 비록 기본 initramfs에도 전체 디스크 이미지를 작성하는 데 필요한 모든 것이 이미 갖춰져 있지만 말입니다. 가장 쉬운 방법은 kexec디스크 이미지가 잘 압축되어 있더라도(사용하지 않는 모든 영역이 0으로 지워졌는지 확인하십시오!) 이를 포함하는 initramfs 이미지가 여전히 너무 커서 실행 중인 시스템 로드에 맞지 않을 수 있습니다. 이 경우 다음 재부팅 시 변경 사항이 적용되도록 부트로더 구성을 조정해야 합니다. 일부 부트 로더는 "한 번 부팅" 기능을 제공합니다. 그렇지 않으면 디스크를 덮어쓴 후 변경 사항을 되돌려야 합니다. 적어도 Syslinux 부트로더를 사용하면 부팅 시 병합되는 여러 개의 initramfs 이미지를 로드할 수 있으므로 일반 이미지에서 대체 이미지 파일이 있는지 확인하고 부팅을 계속하기 전에 이를 쓸 수 있습니다.

관련 정보