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 이미지를 로드할 수 있으므로 일반 이미지에서 대체 이미지 파일이 있는지 확인하고 부팅을 계속하기 전에 이를 쓸 수 있습니다.