2011-09-12 1 views
1

MBR을 읽고 해석 할 수있는 코드를 작성하고 있습니다. fat32로 포맷 된 펜 드라이브의 FAT는 다 잘 진행되고 있습니다. 이제 장치에 쓰려고합니다.원시 쓰기 용 장치를 열기 위해 Python을 사용합니다.

dr = file("/dev/disk5","r+") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IOError: [Errno 16] Resource busy: '/dev/disk5' 

그래서 내가 모든 것을 닫고, sudo는 (sudo는 파이썬)와 인터프리터를 다시 시작하고 모든 재 시도 : 특정 위치는, 내가 읽고 열었던 장치를 닫은 후,이처럼 다시 시도 같은 결과.

쓰기 액세스를 위해 장치를 열려면 어떻게해야합니까? 덕분에 약간의 코드로 수정하십시오. ... 모두가 권한 오류처럼 보인다

http://pastie.org/2521541

제대로 작동 할 수있는 형식화하는 없었어 :

import sys,os 
disk = file("/dev/disk5",'rb') 
disk.seek(0) 
sector_size=512 
first_sector = disk.read(1*sector_size) 
fat_part_list = (first_sector[-66:])[:64] 
part1=fat_part_list[:16] 
#more code here in order to analyse the first partition information in the MBR and get the required offset to actually read the partition itself. 
#now for instance lets say I want to write here in sector 1 byte 0 (so basically at seek(0). 
disk.close()#close the device 
disk = file("/dev/disk5","r+") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    IOError: [Errno 16] Resource busy: '/dev/disk5' 

사실 당신은 단순히이 같은 문제를 볼 수 있었다 하지만 sudo로 인터프리터를 실행해도 아무런 변화가 없습니다.

+0

문제를 나타내는 절대 (자체 포함) 최소값으로 코드를 자르고 결과를 질문에 추가 할 수 있습니까? – NPE

답변

1

블록 장치를 파이썬에서 열기 전에 마운트 해제해야합니다.

+0

마운트 된 경우 읽으십시오. – cromestant

+0

그래 파이썬에서이 작업을 수행 할 수 있다면 블록 장치를 마운트 해제하는 것이 대답 (/ dev/disk5 자체가 아니라 파티션 '/ dev/disk5s1')이되었습니다. – cromestant

관련 문제