Search

'CLKH64 OS/07장'에 해당되는 글 4건

  1. 2013.01.02 파이썬으로 만든 ImageMaker

파이썬으로 만든 ImageMaker

CLKH64 OS/07장 2013. 1. 2. 09:19 Posted by 알 수 없는 사용자

 

 

7장에서 이미지 메이커 프로그램이 복잡해서 파이썬으로 만들어 봄.

 

 

 

import sys
import struct


def createDiskImage():
    fDiskImage = open('../../Disk.img', "wb+")
    return fDiskImage

def readBootLoader(fDiskImage):
    fBootLoader = open('../../00.BootLoader/BootLoader.bin', 'rb')
    
    # get size of bootloader
    fBootLoader.seek(0, 2)
    sizeOfBootLoader = fBootLoader.tell()
    
    # reset file descriptor
    fBootLoader.seek(0)
    
    # set fDiskImage as stdout
    fDiskImage.write(fBootLoader.read())
#    padding = struct.pack('b', 0) * (sizeOfBootLoader % 512)
    if ( sizeOfBootLoader % 512 ) != 0 :
        padding = (b'\x00') * (sizeOfBootLoader % 512)
        fDiskImage.write(padding)
    
    fBootLoader.close()
    
    
def readKernel32(fDiskImage):
    fKernel32 = open('../../01.Kernel32/Kernel32.bin', 'rb')
    
    fKernel32.seek(0, 2)
    sizeOfKernel32 = fKernel32.tell()
    fKernel32.seek(0)
    
    fDiskImage.write(fKernel32.read())
    if ( sizeOfKernel32 % 512 ) != 0 :
        for i in range(512 - (sizeOfKernel32 % 512)):
            fDiskImage.write(b'\x00')
        sizeOfKernel32 += (512 - (sizeOfKernel32 % 512))
        
    fKernel32.close()
    
    return (sizeOfKernel32 // 512)
    
    
if __name__ == "__main__":
    fDiskImage = createDiskImage()
    readBootLoader(fDiskImage)
    sectorNumber = readKernel32(fDiskImage)
    
    print ("Sector Number :", sectorNumber)
    
    fDiskImage.seek(5);
    fDiskImage.write(struct.pack('b', sectorNumber))
    
    
    fDiskImage.close()
    
    

 

 

참조 -

http://kybin.github.com/translateDiveIntoPython3korean/table-of-contents.html#native-datatypes (다이브인투파이썬3)

http://ddiri01.tistory.com/78 (struct, pack)

http://pracon.tistory.com/131 (struct, pack)

http://pracon.tistory.com/130 (file I/O)

http://thdev.net/225 (파싱)

http://www.ibm.com/developerworks/kr/library/l-python3-1/ (IBM 문서, 파이썬3 새로운 기능)

http://devsw.tistory.com/20 (간단한 파이썬 튜토리얼)

 

 

'CLKH64 OS > 07장' 카테고리의 다른 글

7장 대략적인 설명  (2) 2013.01.07
Makefile  (1) 2013.01.01
링커스크립트  (0) 2013.01.01