GNU/Hurd 설치 남 상규
halite (at) kldp.org
v1.0 2002 남상규 이 문서는 GNU/Hurd를 설치하는 방법에 대해 간략하게 정리했다. 공식 사이트나 Debian GNU/Hurd 사이트에 있는 방법이 틀린 점이 있거나 제대로 동작하지 않아 여러 경로를 통해 알아낸 방법을 설명했다.
알야할 것 Hurd가 무엇인지 알지 못하는 사람이라면 우선 http://www.gnu.org/software/hurd 를 방문해 기본 적인 정보를 습득하기 바란다. Hurd는 아직가진 IA32 에서만 동작하므로 설치는 PC에 한다. Hurd의 공식 설치 방법은 http://www.gnu.org/software/hurd/install.html에 설명되어 있다. 이 페이지엔 pdf나 info document가 있으므로 이 문서를 받아서 먼저 읽어 보고나서 글을 읽어 보기 바란다. 현재 Hurd는 다른 배포본이 있지는 않다. 단지 Debian GNU/Hurd 만이 있을 뿐이다. 그러므로 설치는 Debian GNU/Hurd를 기본으로 한다. Debian의 설치에 익숙하지 않은 분이라면 처음 시도에 많은 어려움이 예상되므로 Debian의 i386 배포본을 이용해 리눅스 시스템을 구성해보는 작업을 먼저 하는 것을 추천한다. 그냥 설치 방법은 따라하면 되지만 설치 후의 dpkg를 사용해 나머지 설치를 하는 것이 난감할 수도 있다. 또 Hurd는 현재 ISO 이미지로된 CD-ROM을 배포하기도 한다. 물론 Debian GNU/Hurd 이다. ftp://ftp.gnu.org/iso에 있는 것을 받아 사용하면 된다. 이 사이트엔 몇 개의 디렉토리가 있는데 현재(2002년 7월)까진 hurd-H4가 최신 버전이다. 대부분의 경우엔 첫번째 CD면 될 것이다. 중요한 것은 아직까진 Hurd 자체로만 설치가 가능하거나 하지 않고 부팅하기 위해서도 GRUB이 필요하므로 되도록이면 리눅스가 깔린 시스템이 필요하다. 아니면 적어도 GRUB으로 command-line 모드로 부팅이 가능한 정도의 플로피 디스크 정도는 필요하다. 가장 좋은 환경이라면 GRUB으로 부팅하는 리눅스 시스템에 새로운 파티션을 만들고(혹은 새로운 하드디스크를 달고) 여기에 Hurd를 설치하는 것이다. Hurd의 설치는 여러 방법이 있겠지만 여기선 3가지에 대해 언급한다. 가장 좋은 방법으로 추천하는 것은 ISO 이미지의 CD-ROM을 사용해 설치하는 것이다. 설치 방법을 읽어 보고 선호 하는 방법에 따른 준비를 하기 바란다. 어느경우든 네트웍에 접속되어 있고 dpkg를 사용할 수 있는 환경이되야 설치가 제대로 될 수 있다. 물론 CD-ROM에 있는 것 만을 사용해 설치를 마칠 수도 있다. CD-ROM으로 설치하기 Debian GNU/Hurd는 아직 부트로더에 대한 지원이 없어서 설치 후에도 바로 부팅할 수 없다. 그러므로 이미 GRUB이 설치되서 GRUB으로 부팅 되는 시스템이라면 문제 없지만 그렇지 않다면 적어도 GRUB의 command-line 모드로 부팅되는 정도의 플로피 디스크를 만들어 놓고 설치를 진행해야 한다. GRUB 플로피는 우선 리눅스 시스템에 GRUB을 설치하고 GRUB이 설치된 디렉토리에 가서 다음과 같이 실행한다. 이에 대한 정보는 GNU GRUB 매뉴얼를 참조 바란다. # cd /usr/share/grub/i386-pc # dd if=stage1 of=/dev/fd0 bs=512 count=1 1+0 records in 1+0 records out # dd if=stage2 of=/dev/fd0 bs=512 seek=1 153+1 records in 153+1 records out # ISO 이미지를 받아 CD-ROM으로 만든후 이것으로 부팅한다. 처럼 부팅하는 모습을 볼수 있을 것이다.
Debian GNU/Hurd의 부팅
가 실제 설치하기 위해 표시되는 화면이다. Debian Linux와 비슷하지만 아직은 제대로 동작하지 않아 각 단계별로 수동으로 실행해 줘야한다.
Debian GNU/Hurd의 설치 메뉴 화면
은 키보드 선택이다. 보통은 QWERTY.
키보드 선택
는 fdisk를 할 하드디스크를 선택하는 화면이다. 원하는 하드디스크 선택하고 엔터를 누르면 cfdisk가 나온다.
파티션 나눌 하드디스크 선택
는 cfdisk의 화면이다. 화면엔 하드디스크하나에 Hurd를 설치하므로 다른 파티션은 없고 Hurd용 파티션과 swap 파티션 만을 만들었다. 각각 83, 82의 FS Type을 갖는다. 꼭 잊지 말고 Hurd 파티션을 부팅 가능하도록 만들어야한다. cfdisk는 커서 키로 원하는 명령을 선택하므로 쉽게 익숙해질 것이다. swap 파티션은 만든 후 [Type]을 사용해 타입을 82로 바꿔준다.
cfdisk
은 스왑 파티션을 초기화 하는 화면이다. 만약 다른 스왑파티션이 존재 한다면 여기에 여러개가 표시되므로 Hurd의 것을 잘 찾아서 초기화 한다. 다음 단계에서 물어보는 것은 잘 읽어 보고 진행하기 바란다(사실 그냥 yes를 선택하면 된다).
스왑 파티션 초기화
은 Hurd 파티션을 초기화 한다. 여기서도 Hurd 파티션을 잘 찾아 지정해준다. 다른 파티션을 지정하면 그 파티션의 내용을 모두 읽어 버리므로 조심해야한다. 바로 다음 단계에서 Hurd 파일 시스템을 사용할 것인지 물어본다. Yes를 선택해 Hurd 파일 시스템이 되도록 한다. 초기화가 끝나면 마운트할 것인지 물어본다. 당연히 Yes.
Hurd 파티션 초기화
은 Base System을 설치하는 것이다. CD-ROM을 선택하고 뒤에 나오는 몇 개의 물음을 한번씩 읽어 보고 그냥 Enter를 누른다.
Base System 설치
는 시스템을 재부팅할 때 나오는 화면이다. 제대로 부팅되게 하란 말로 GRUB이 부팅되는 플로피를 넣거나 한 상태로 Yes를 선택해 재부팅한다. 이제 에서 다음 절차를 시작한다.
재부팅
Debian GNU/Hurd 설치 하기 이 방법은 Debian GNU/Hurd 공식 사이트에 나와 있는 방법으로 리눅스 시스템 혹은 그에 상응하는 시스템에서 다음의 세 파일을 한 디렉토리에 받아 놓고 설치를 시작한다. cross-install - 리눅스로부터 한 묶음(bunch)의 패키지 설치 native-install - 새 시스템 설정 dpkg-hurd - 리눅스로부터 허드 파티션에서 dpkg를 사용한다 또 dpkg가 필요하므로 사용하는 시스템에서 실행되는 dpkg를 받아 설치해야한다. dpkg는 데비안 미러 사이트의 debian/project/dpkg 에 있다. 가장 먼저 할 일은 Hurd를 설치할 파티션을 초기화 하고 마운트 하는 것이다. 마운트는 /gnu에 한다고 가정한다. # mke2fs -o hurd /dev/sda1 mke2fs 1.27 (8-Mar-2002) Filesystem label= OS type: GNU/Hurd Block size=4096 (log=2) Fragment size=4096 (log=2) 109536 inodes, 218877 blocks 10943 blocks (5.00%) reserved for the super user First data block=0 7 block groups 32768 blocks per group, 32768 fragments per group 15648 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840 Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 29 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. # mount /dev/sda1 /gnu 마운트가 완료되면 위에서 받은 세 파일이 있는 디렉토리로 가서 cross-install을 실행한다. ./cross-install /gnu -download ftp://ftp.nuri.net/pub/debian -download 옵션은 기본 다운로드할 사이트를 원하는 곳으로 바꾼다. 문제는 이제 부터인데 아마도 cross-install 등이 만들어진 날짜가 오래되서 그런지 deb 패키지를 받지 못하는 것이 좀있다. 필자도 수동을 받아 설치하려고 찾아봤지만 없는 것이 있고 cross-install을 수정해야하는 부담도 있고해서 이 방법으로 설치하는 것은 포기하고 말았다. tar 아카이브 파일로 설치 이 방법은 에서의 방법과 같이 Debian GNU/Hurd 사이트에 올라와 있다. 아마도 CD-ROM으로 설치하는 것 다음으로 이 방법이 쉬울 것 같다. tar 아카이브 파일은 Hurd의 기본 설치 파일만을 모아 tar.gz으로 만든 것이다. 이 파일은 ftp://alpha.gnu.org/pub/gnu/hurd/contrib/marcus에 있고 가장 최신의 스냅 샷을 사용한다. YYYYMMDD와 같이 이름에 날짜가 적혀져 있으므로 최신의 것을 고른다. 설치는 에서 Hurd 파티션의 초기화와 마운트 까지는 같다. 마운트된 /gnu로 가서 다음 처럼 압축을 풀어준다. # cd /gnu # tar --same-owner -xpzf /???/gnu-YYYYMMDD.tar.gz 압축이 풀린 후 GRUB이 부팅 가능한 플로피 등으로 시스템을 재부팅 해준 후 에서 다음 절차를 계속 한다. 재부팅 후 설치 GRUB으로 부팅하고 command-line 모드로 나간다. 이미 GRUB으로 사용하던 시스템의 경우는 초기 메뉴에서 c를 누르면 되고 플로피로 부팅한 경우는 바로 command-line 모드로 가 있을 것이다. 은 GRUB에서 Hurd를 부팅하기 위해 실행한 명령을 보여준다. 공식 사이트 등에서 찾을 수 있는 문서엔 이렇게 기술되어 있지 않고 좀 복잡한 방법으로 되어있는데 이게 틀린 것 같다. 아무리 그 방법을 써서는 부팅을 할 수 없었다. 무척 고생 끝에 다른 사이트 들에서 찾은 내용을 바탕으로 부팅하게 됐다. 우선 시스템에 존재하는 파티션 중에서 Hurd 커널이 있는 파티션이 어느 것인지 찾는다(find). 그리고 그 파티션을 root로 사용하도록 만들고 커널을 지정한다. 이 때 -s는 싱글 모드로 부팅 하란 것이고 root=hd0s1이 나타내는 것은 루트가 hd0의 s1에 있다는 것으로 /dev/hda1으로 이해 하면 되겠다. 또 부팅을 위한 스크립트를 지정해 주고 마지막으로 boot 명령을 사용해 부팅한다.
GRUB
부팅할 때 문제가 생긴다면 아마도 IRQ가 공유되는 문제가 있어서 그럴 것이다(필자는 경험 하지 못했으나 문서엔 이럴 것이라고 나와있다). IRQ가 공유되지 않도록 조정해 주고 다시 해보시라. 부팅이 끝나면 루트 디렉토리에서 native-install을 실행한다. 모든 실행이 끝난 후 다시 부팅을 하고 의 방법으로 재부팅을 한다. 한번 더 native-install을 실행한다. 재부팅한다. 이제 Hurd를 사용할 수 있게 됐다. 위의 방법 대로 부팅한다. 그리고 dselect 등을 사용하기 위해 네트웍 카드를 설정한다. # settrans /servers/socket/2 --goaway # settrans -acpfg /servers/socket/2 /hurd/pfinet --interface=eth0 --address=x.x.x.x --gateway=y.y.y.y --netmask=z.z.z.z 나머진 dselect를 통해 패키지를 업데이트 하도록 한다. 위 절차까지 하면 DNS가 설정되어 있지 않으므로 apt의 소스를 적어 줄때 직접 IP 어드레스를 적어 줘야한다.