Linux를 실행하는 외부 USB 드라이브를 부팅하여 주 컴퓨터 하드 드라이브가 Linux를 실행 중인지 확인하고 /mnt
일부 파일을 수정하기 위해 디렉터리에 마운트하려고 합니다.
컴퓨터에 연결된 장치(하드 드라이브)를 감지할 수 있지만 해당 디스크에 운영 체제가 있는지, 해당 운영 체제가 Linux의 변형인지 감지하는 방법을 모르겠습니다.
파이썬으로 구현하려고 합니다.
답변1
디스크가 "Linux를 실행"하는지 여부를 결정하는 프로세스에는 세 가지 요소가 포함됩니다.
- 확인할 파티션 목록
- 각 파티션 마운트
- 각 파티션에 "마법의" 파일이 있는지 확인하세요.
- 각 파티션 마운트 해제
1단계에서는 다음을 호출하여 "parted"를 사용할 수 있습니다.하위 프로세스.check_output()반환 값을 구문 분석합니다.
2단계와 4단계에는 각각 "mount"를 사용합니다. "제거"를 통해하위 프로세스.check_call(), 출력을 구문 분석할 필요가 거의 없기 때문입니다.
남은 것은 os.path.exists()
변경하려는 파일로 작업하는 3단계입니다. 업데이트하고 싶지 않다면 open()
파일을 업데이트하고 파일이 존재하지 않는 경우 예외를 잡을 수도 있습니다(이 경우 Linux를 실행하는 파티션이 없을 수도 있습니다).
그러나 Linux 디렉터리 트리의 모든 하위 디렉터리는 자체 파티션에 있을 수 있습니다. 따라서 /mnt/boot/grub/grub.cfg
파티션 2가 파티션 1 아래에 설치되어 있으므로 파티션 1이나 파티션 2에 대한 확인이 작동하지 않을 수 있습니다 /boot
.
답변2
파티션을 마운트하면 해당 파티션에 Linux가 설치되어 있는지 확인할 수 있습니다. 어떤 배포판인지 알아보려면 설명서 /etc/os-release
및 /etc/lsb-release
를 확인하세요 /etc/issue
. /etc/issue.net
그 중 하나 이상에서 배포 이름을 찾을 수 있습니다.