
| OPENSTEP 을 booting 가능한 iso 로 만들기 |
| 이름: onion | [수정] 2013-04-02 19:19:00 |
작업한 원본주소 :: http://workspace.onionmixer.net/mediawiki/index.php?title=Creating_an_OPENSTEP_Boot_CD_onion
정확한 내용은 위의 주소를 확인해주세요... wiki페이지ㅢ
대략...... 이런저런 내용들이 있을겁니다......
아주.. 요 며칠 삽 제대로 펐네요 ㅋㅋㅋ
(이제 그만할랍니다 이 삽질은..-.-)
내용에 보면 테러님 요청하신 파일도 있으니.....
대략.... 필요한 내용은 다 정리한거같네요..^.^;
----------------------------------------------------------------------------------------
준비물
OPENSTEP iso
OPENSTEP FDD image (boot and driver diskette)
linux system
사용한 프로그램
vbindiff :: binary 파일을 diff 뜨는경우에 사용
mkisofs :: cdrtools 에 들어있는 프로그램. iso파일을 만드는경우에 사용
bless :: mono 기반으로 만들어진 Hexcode editor
주의사항
OPENSTEP 의 영문버전과 일본어버전은 추출되는 label이 틀리다. 때문에 label은 새로 추출해야함
최소한 iso 를 만드는 프로그램과 환경에 따라 미묘하게 결과물이 차이가 있다. 때문에 offset 은 hexeditor 를 통해서 직접 다시 계산해줘야한다
작업내역
일단 주된내용은 아래쪽의 참고문서쪽을 보면되며 여기서는 간단하게 요약한 작업정보와 참고사항만 언급하도록 한다.
단계1-ufs추출
openstep 4.2j iso 에서 ufs 부분을 추출한다
dd bs=2048 if=OPESNTEPISO파일 of=UFS로만들파일이름 skip=80
단계2-lbl추출
아래의 과정을 통해서 lbl(disk label)을 추출한다.
dd bs=1 count=7680 if=OPESNTEPISO파일 of=lbl파일이름 skip=8192
단계3-iso만들기
명령어를 이용해서 iso 파일을 만든다. iso 파일 안에 들어갈 floppy image 와 ufs image 두가지를 Temp 라는 폴더안에 넣고 Temp 폴더 의 바로 윗 디렉토리 에서 다음과같은 과정을 거쳐 iso 파일을 만든다.
mkisofs -b 플로피이미지이름 -V OPENSTEP_4.2J -hide 플로피이미지이름 -J -R -o 결과로만들어질iso파일이름(확장자포함) Temp
단계4-플로피 이미지 만들기
참고문서1 에서 해당되는 부분을 읽고 이미지를 만든다. 본인의 경우에는 기본적으로 들어가있는 EIDE driver 대신 beta disk 1의 EIDE driver 를 넣었다
단계5-lbl파일에서는 어떤 부분을 손봐야하는건가요?
x86의 경우 추출한 disklabel(lbl) 에서 수정해야할 부분은 다음과 같다.
아래의 내용은 lbl 파일내의 offset 이므로 hex editor 로 관련된 부분을 찾아서 편집해야 한다.
offset 0x08 > 04 값을 00 으로 바꿔준다
offset 0x70 > frontporch 주소의 16진수 계산값. 2개 바이트(int16)-(이유는 모르겠지만 실제 offset은 0x7c)
offset 0x22e > lbl 파일의 hash값. checksum 프로그램을 이용해서 산출한값을 넣어준다
이 값들에 대한 의미는 참고문서1 을 참고하면 된다.
관련된 자세한 내용은 bootblock.h 파일내용분석 부분을 참고.
단계6-lbl파일 엎어쓰기
편집이 끝난 lbl 파일을 만들어진 iso 파일에 덮어씌운다
dd bs=1 count=7680 if=lbl파일이름 of=결과로만들어진iso파일이름(확장자포함) conv=notrunc
이렇게 만들어진 파일을 가지고 설치를 진행하면 된다.
결과물
http://onion.onionmixer.net/os42jmkiso.rar
압축파일안에는 다음과같은 내용들이 들어있다
OPENSTEP42JCD_makeafter.lbl :: OPENSTEP 4.2j 버전에서 추출해서 몇개값을 만져놓은 lbl 파일
F288C.img :: OPENSTEP 4.2J 버전에서 사용가능한 상태로 합쳐놓은 floppy image. BETA driver 1 디스켓의 EIDE driver 가 적용되어있다
OS42JCD.ufs :: OPENSTEP 4.2J iso 파일에서 추출한 ufs 파일
mkopenstepiso.sh :: iso 파일을 생성하는 mkiso 스크립트
writelabel.sh :: lbl 파일을 iso 에 덮어주는 스크립트
ns_checksum.c :: 원문에 들어있던 checksum 파일을 gcc 4.6 이상에서 compile 가능하도록 수정한버전
위의 결과물을 이용하면....... 필요한 offset 만 잘 파악하면 부팅가능한 iso 를 만들 수 있다.
lbl 파일에서 offset 을 파악해서 다시 작업해주기만 하면 사용할 수 있다.
참고사항
이유는 모르겠지만 기본적으로 bundle 되어있는 EIDE driver를 바로쓰면 ATAPI read error 로 인해 똑바로된 설치가 진행되지 않는다. 위의 결과물로 생성한 이미지를 사용하는경우 반드시 FDD diskett 또는 fdd beta disk 1 을 사용할 수 있는 가상drive 등을 준비해야한다.
linux에서 ufs image 를 read-only 로 mount하는법
mount -t ufs -o loop,ufstype=openstep 이미지이름 /mnt/마운트경로
기본적으로 kernel에서 ufs를 지원해야한다.
https://www.kernel.org/doc/Documentation/filesystems/ufs.txt
이 내용을 보면 openstep은 kernel에서 rw를 켜도 readonly 만 지원된다는걸 알 수 있다.
참고로 부가적인 삽질을 하기위해 FreeBSD까지 동원했으나 mount 실패.
OPENSTEP 의 iso에서 추출한 UFS에서 EIDE driver의 위치
./private/Drivers/i386/EIDE.config
./usr/template/client/Drivers/i386/EIDE.config
2개가 같은내용인건 맞는데.. 실제로 둘 다 쓰이는지는 잘 모르겠다
iso 파일의 섹터에 대한 정보와 시작지점에 대한 구성정보
위의 별도페이지를 참고한다.
추가적으로 진행했지만 실패한삽질
혹시나해서 ufs 안의 driver 를 변경해보려는 삽질
linux에서 추출한 ufs를 readonly로 Mount한다. 내용을 tar 파일로 묶는다
openstep 에서 추출한 ufs 파일을 복사한후 raw로 별도 drive-vmdk 로 mount 시킨다 <- 참고문서의 방법 참고
vmdk를 openstep에서 format한다.
vmdk로 인식된 drive에 tar 파일 압축을 푼다. 이후 EIDE driver를 교체
vmdk-raw 를 linux에서 ufs 로 mount 시도한다.
정상적으로 read-only 로 mount가 되었기때문에 이미지를 이용해서 다시 iso를 만들고 설치테스트를 진행한다.
위의 과정에서 다루어지는 ufs 파일은 2개가 된다.
iso 에서 추출한 ufs 파일
rawdisk로 인식시킨다음 openstep 상에서 format 을 하고 tar 로 압축시킨 내용을 풀어낸 ufs 파일
두파일 모두 linux 에서 mount는 되지만... 두번째 파일을 실제로 iso 에서 사용했을때 openstep 부팅시 root mount 는 되지 않는다. 결과적으로 실패.
FreeBSD 에서 iso 에서 추출한 ufs 파일을 mount 해서 편집해보려는 삽질
안됨. 이런것따위 취급도 하지 않는다. 그냥 안됨. 어떤방법을 썼냐하면
iso 에서 추출한 ufs 파일을 선택한다.
sd 카드에 비슷한 용량의 파티션을 만든다
dd 를 이용해서 ufs 파일을 sd카드에 만든 파티션으로 밀어넣는다
FreeBSD 에 sd 카드 리더를 이용해서 sd 카드를 꼽는다
FreeBSD 에서 dmesg 를 이용해서 device name 을 확인한다.
mount 를 시도한다.
안된다......... 안된다.. 하지마라.. 안된다...
참고문서
OPENSTEP Boot CD 만들기
OPENSTEP Boot CD 만들기-t3RRa
linux에서 사용할 수 있는 diff에 관한 몇가지 tip
linux에서 사용할 수 있는 간단한 진수변환
linux의 VirtualBox에서 특정파일을 사용하는 vmdk만들기
FreeBSD 에서의 disk관리팁
|
그런데 테스트해보다보니
"offset 0x08 > 04 값을 01 로 바꿔준다"
01 로 바꾸는게 아니라 00 으로인듯 싶네요.
|
아차.. 맞습니다.. 00 입니다.....
이런이런...
내용수정해놨습니다. 감사합니다..(꾸벅)
|
드라이버만 교체하면 좋을텐데.. 설치 후 첫 시동시에 GUI 로 진입 전에 드라이버를 묻는 거였네요. (가상 머신에 미리 설치했던게 얼마 안되었어도 전혀 기억을 못하고 있었.....) 제대로된 raw 디스크 이미지를 만들고 수정한 후에 다시 원래 형식으로 매뉴얼로 변경하면 될런지, 아니면 이미 설치된 오픈스텝에 500메가 정도의 가상 하드 부착하고 시디의 컨텐츠 그대로 복사하고 그걸로 ufs 파일 참고해서 수정하면 될지....
|
뭐.. 여튼 저는 안돼요...하하하
차라리 fdd emulation 이 되는 usb 장비를 구하는게 빠를거같아요.
그렇게하면 fdd 교체없이 driver만 딱 한번 넣어주면 되니깐요...-.-;
도움이 안되는건 아닌데 반쪽짜리라 좀 속상할 뿐입니다 ㅎㅎㅎ
|
저는 삽푼김에 ps3에 FreeBSD 설치한거나 손본다고 하다가 날렸습니다 프비..(에잉)
뭐.. 다시해야겠..(쿨럭)
cd-rw 에 FreeBSD iso 굽는중이랍니다..므헤헤헤헤..(침울)
|
아.. ps3는.. 아마도 ps4 나오면. .희귀아이템이 될거같아서요...(덜덜)
메뉴얼로 하는거보다 usb 메모리가 쌀걸요....-.-;
이전에 한 3만원 줬던거같은데.........
부디 성공 잘 하시길.....(불끈!)
스크립트 어느부분을 손봤는지를 정확하게 알 수 있으면 좋을거같은데요.. 흐음
|
버철박스에서 오픈스텝 네트워킹은 어떻게 설정하셨나요? 네트워킹만 되면 어떻게든 파일을 옮겨와서 편하게 수정할텐데 말입니다 :)
|
일단 pcnet III 32 뭐시기...로 하기는 했습니다만.. 잘 안됐어요...........(하하하)
랜카드 잡히고 network 설정도 되는데 정작 바깥으로 안나감...-.-;
vmware에서는 intel 100 pro 여서 잘됐는데...(중얼중얼)
그래서 짜증나서 필요한 파일은 iso로 만들어서 Mount해서 썼습니다.....-.-;
|
반대로 파일을 공유하려면 편한 방법이 뭘까요. fat 파일시스템 마운트가 가능하다면 조그만 하드 디스크 이미지 하나 추가해서 활용할 수도 있을텐데.. 일단 아직 짬이 나질 않는군요;;
|
fat mount야 가능하죠....
아마도 mac용 하드를 인식해야하니 classic 에서 사용하는 저널링 이전의 HFS도 가능할걸요?
일반 BSD ufs정도는 가능할지 몰라요. 그렇게되면 뭐 방법이 많겠지만 :D
사실 제일 좋은건 network을 잡고나서 samba를 openstep에 올려서 쓰는거죠..(쿨럭)
http://www.nextcomputers.org/forums/viewtopic.php?t=2396
일단 openstep과 virtualbox에 대한 network설정은 여기서 hint를 찾아볼 수 있을거같습니다. 웬지는 모르겠습니다만.. bridge가 아니라 다들 nat로 테스트를 하네요..-.-;
ps. 브릿지로 지금해봤는데.. 브릿지 device까지도 ping이 안가네요 ㅋㅋㅋ
아무래도 vmware가 필요할지도...(덜덜)
|
일단 수정된 rc.cdrom 은 꺼내왔습니다. 하지만 EIDE PIIX (EIDE.config) 만 추가하기 때문에 약간의 수정이 필요하지 않을까 싶군요.
필요한 드라이버들이 뭐가 있을까요? 아니면 저걸로 충분할까요..
|
호오.. rc.cdrom 을 어디에 쓰는지 잘 모르겠습니다.
(지금의 상황에 그게 어떤역할을 하는건지를 잘 모르겠네요...하하하..-.-)
아마도 EIDE driver로 충분할겁니다. 그외 driver들은 adaptec등인데.. 딱히 쓸모는 없거든요..-.-;
|
rc.cdrom 이 넥스트스텝/오픈스텝 설치 스크립트에요. 싱글모드로 부팅한 후에 rc.cdrom 을 수동으로 실행해주면 된다는..
|
아 문제는 시디로 부팅하니 플로피 이미지 부분을 마운트 할 수가 없군요... 읽기 전용인데다가 플로피 이미지에 접근이.... OTL ...
|
......................
와우...-.-;
뭐.. 그렇기는 할건데.... 플로피는 fdd virtual device써서 image로 mount해야죠뭐...-.-;
|
넥스트스텝에서 2048 바이트 크기의 섹터로 포맷을 하는게 가능하지 않은건가요.. disktab 엔트리 맞는게 있음 사용해서 가능할런지...
|
흠.. 모르겠네요
disk 명령어의 help를 보면 나오지 않을까요?
저는 virtualbox에서 network 실패한이후로는 쳐다도보지 않고있...
(뭐 다른밀린일도 많아서 ㅋㅋㅋ)
|
여기저기 찾아보면 1k 섹터 크기 외엔 지원하지 않는다는 식의 글들만 있는 걸로 보이고 disk 명령어도 특별히 옵션주고 그러면 disk type 입력을 해야 하는지 오류 문구만 보여줘서요;; scsi 디스크용 서드파티 툴 중엔 1024 이외 블록 크기 지원한다는 툴이 있지만 버철박스에 scsi 컨트롤러 추가하고 디스크 설정해줘도 오픈스텝이 그냥 무시 때려줘서 말이죠-_- 아마도 시디 이미지를 만들려면 섹터 크기를 2048 로 고정해줘야 할듯 한데 그게 안되니;;;
|
문제는 오픈스텝에서 2048 바이트 블록 사이즈를 지원안하기 때문이죠;; "bad block size" 라고...
SCSI 디스크라면 sdformat 이라는 서드파티 유틸에서 1024 외 블록 사이즈 지원한다고는 하는데,
버철박스의 SCSI 에뮬레이션이 호환이 안되는지 안되서요;;;
|
....그러면 vmware를 쓰셔야할려나요...(덜덜)
|
vmware의 scsi도 딱히 인식이 된다는 얘기는 없네요...어헐헐...
고대 버전의 virtual PC 라도 동원을 해야할려나...-.-;
|
....virtualPC?
혹시나 몰라서 mac os 9 에서 돌아가는 virtual pc 5.0을 받았습니다.
그런데 요즘 하고싶은 삽질은 font삽질이라 ㅋㅋㅋ
|
아....................
..................................
별 의미는 없는데....
OPENSTEP 4.0 beta 버전을 받았어요... 의외로 구하기 쉽..(쿨럭)
|
|