Creating an OPENSTEP Boot CD t3RRa
- OPENSTEP을 booting 가능한 iso 로 만들기-t3RRa
작업진행
qemu 로만 일단 시디 부팅으로 디스크 파티션 나누는 부분까지 가는걸 확인했습니다. (그리고는 하드 디스크 부분에서 인터럽트 타임아웃이 나네요;; 드라이버 문제일까요. 그렇다면 어쩌면 베타 디스크의 드라이버들을 넣어주면 좀 해결될까요.)
http://peterwong.net/blog/?p=119 이 글에서 i386에 해당되는 부분만 참조했습니다. 여기에 있는 F288.img (2.88 플로피 디스켓 이미지) 와 OPENSTEP42CD.Block00.ElTorito.lbl 를 받아서 사용했구요.
일단 ufs 파일시스템을 추출해냅니다.
dd bs=2048 if=OPENSTEP42CD.iso of=OPENSTEP42CD.ufs skip=80
그리고 이제 일단 ufs 파일과 F288.img 를 한 폴더 (제 경우에는 Temp 라는 폴더를 만들어 넣었습니다)에 넣고, 부팅 가능한 El-Torito 시디 이미지를 만듭니다.
mkisofs -b F288.img -V OPENSTEP_4.2J -hide F288.img -J -R -o test.iso Temp
하지만 이걸로는 부팅이 불가능하고 디스크 라벨을 덮어 씌어줘야 합니다. 근데 받은 OPENSTEP42CD.Block00.ElTorito.lbl 에 수정된 값은 위에 mkisofs 로 만든 이미지랑은 오프셋이 다릅니다;; 제 경우는 ufs 파일 오프셋에 대한 “front porch” 값이 0x06C0 이 아니라 0x5C1 이었고 이에 대한 체크섬 값은 0xD492 가 아니라 0xD393 이 되더군요.
mkisofs로 생성된 이미지에서 추출된 ufs 파일의 오프셋 값을 찾아 2042 로 나누면 “front porch” 값이 나옵니다. 그리고 체크섬 값은 같은 사이트에서 받은 C 소스를 컴파일 해서 .lbl 파일을 옵션으로 주고 실행해서 얻은 값입니다. 이 두 값을 각각 0×70, 0x22E 위치에 Big Endian 으로 기록한 뒤 iso 이미지에 씁니다.
dd bs=1 count=7680 if=OPENSTEP42CD.Block00.ElTorito.m68k.lbl of=test.iso conv=notrunc
맥에서는 conv=notrunc 옵션을 주지 않으면 iso 이미지가 .lbl 파일과 동일한 사이즈로 되어버립니다.
일단 어디선가 테스트를 해보고 싶은데 시간이 너무 늦어진 관계로 좀 미뤄야 겠네요. 흘…