D.3. 유닉스/리눅스 시스템에서 데비안 GNU/리눅스 설치하기

이 부분에서는 (이 안내서의 다른 부분에 설명한) ncurses 기반 메뉴 방식 설치 프로그램을 사용하지 않고, 기존 유닉스 혹은 리눅스 시스템을 이용해 데비안 GNU/리눅스 배포판을 설치하는 방법을 설명합니다. 이 “크로스 설치” 하우투는 Red Hat, Mandrake, SUSE에서 데비안 GNU/리눅스 배포판으로 바꾸려는 사용자에게 필요한 부분입니다. 여기서는 유닉스 계열의 명령어를 입력하는 방법이나 파일 시스템을 돌아다니는 데 익숙해져 있다고 가정합니다. 여기서 $ 표시는 사용자의 기존 시스템에서 입력하는 명령어이고, # 표시는 데비안 chroot에서 입력하는 명령어를 말합니다.

새로 설치한 데비안 시스템을 필요에 맞게 설정하기만 하면, 기존 사용자 데이터를 (있다면) 옮겨와서 계속 사용할 수 있습니다. 즉 “다운타임이 없는” 데비안 GNU/리눅스 설치입니다. 또 이 방법은 여러가지 부팅 미디어나 설치 미디어가 동작하지 않는 하드웨어에서 좋은 설치 방법입니다.

참고

이 과정은 대부분을 수동으로 해야 하므로, 시스템의 수많은 기초적인 설정을 직접 해야 합니다. 이렇게 하려면 보통 방법으로 설치할 때 필요한 것보다 데비안과 리눅스에 대한 지식이 훨씬 더 많이 필요합니다. 또 이렇게 설치한 시스템이 보통 방법으로 설치한 것과 완전히 동일할 거라고 기대해서도 안 됩니다. 또 이 과정은 시스템을 준비하는 기초 단계일 뿐이고, 추가로 설치 및 설정 과정이 더 필요할 수도 있습니다.

D.3.1. 시작하기

기존 유닉스용 파티션 도구를 이용해 하드 드라이브를 필요한 대로 다시 파티션하십시오. 최소한 파일 시스템 한 개를 스왑으로 만드십시오. 콘솔만 설치하는 경우는 약 350MB의 공간이 필요하고 X를 설치한다면 약 1GB가 (그놈이나 KDE같은 데스크탑 환경을 설치한다면 이보다 더) 필요합니다.

그리고 파티션에 파일 시스템을 만드십시오. 예를 들어 /dev/hda6 파티션에 ext3 파일 시스템을 만드는 경우라면 (여기 예제에서 루트 파티션입니다):

# mke2fs -j /dev/hda6

ext2 파일 시스템을 만드는 경우라면 -j 옵션을 빼십시오.

스왑을 초기화하고 활성화하십시오 (아래의 파티션 번호를 데비안 스왑 파티션에 맞게 바꾸십시오):

# mkswap /dev/hda5
# sync; sync; sync
# swapon /dev/hda5

한 파티션을 /mnt/debinst에 (루트 (/) 파일 시스템을 설치할 위치) 마운트하십시오. 마운트 위치 이름은 마음대로 정한 것이고, 아래에서 계속 사용합니다.

# mkdir /mnt/debinst
# mount /dev/hda6 /mnt/debinst

참고

파일 시스템의 일부를 (예를 들어 /usr) 별도의 파티션에 마운트하려면, 다음 단계로 넘어가기 전에 그 디렉토리를 수동으로 만들어서 마운트해야 합니다.

D.3.2. debootstrap 설치

데비안 베이스 시스템을 설치할 때 데비안 설치 프로그램이 사용하는 프로그램은, 공식적으로 debootstrap입니다. debootstrapwgetar을 사용하지만, 그 밖에는 /bin/sh와 기본 유닉스/리눅스 도구[22]만 있으면 됩니다. 기존 시스템에 wgetar이 없으면 설치하십시오. 그리고 debootstrap을 다운로드하고 설치하십시오.

아니면 다음 방법을 이용해 수동으로 설치할 수도 있습니다. 먼저 .deb 파일을 풀 작업용 폴더를 만드십시오:

# mkdir work
# cd work

바이너리 파일은 데비안 아카이브에 있습니다. (아키텍처에 맞는 파일을 선택하도록 하십시오.) 패키지 풀에서 debootstrap .deb 파일을 다운로드하고, 패키지를 작업용 폴더에 복사하고, 파일을 풀어 내십시오. 이 파일을 설치하려면 루트 권한이 필요합니다.

# ar -x debootstrap_0.X.X_all.deb
# cd /
# zcat /full-path-to-work/work/data.tar.gz | tar xv

D.3.3. debootstrap 실행

debootstrap을 실행하면 필요한 파일을 아카이브에서 직접 다운로드합니다. 아래의 명령어 예제에서 ftp.kr.debian.org/debian을 아무 데비안 아카이브 미러로 바꿀 수 있습니다. 네트워크에서 가까이 있는 미러로 하는 게 좋습니다. 미러 목록은 http://www.debian.org/misc/README.mirrors에 있습니다.

lenny 데비안 GNU/리눅스 CD를 /cdrom에 마운트했다면 http URL 대신에 file URL을 쓸 수 있습니다: file:/cdrom/debian/

debootstrap 명령에서 ARCH를 다음 중의 하나로 바꾸십시오: alpha, amd64, arm, armel, hppa, i386, ia64, m68k, mips, mipsel, powerpc, s390, sparc.

# /usr/sbin/debootstrap --arch ARCH lenny \
     /mnt/debinst http://ftp.us.debian.org/debian

D.3.4. 베이스 시스템 설정

이렇게 하면 디스크 안에 임시 시스템이 아니라 완전한 데비안 시스템이 갖춰졌습니다. chroot로 그 안에 들어갑니다:

# LANG=C chroot /mnt/debinst /bin/bash

chroot로 들어간 다음에 터미널 정의를 데비안 베이스 시스템과 맞게 맞춰야 할 것입니다. 예를 들어:

# export TERM=xterm-color

D.3.4.1. 장치 파일 만들기

이렇게 하면 /dev/에는 아주 기초적인 장치 파일만 들어 있게 됩니다. 다음 단계로 진행하려면 장치 파일이 몇 개 더 필요합니다. 여러가지 방법이 있고, 이 중에 어떤 방법을 이용할 지는 설치에 사용하는 호스트 시스템이 무엇이냐에 따라, 그리고 모듈식 커널을 이용할 것인가 아닌가, 그리고 새 시스템에 동적인 (예를 들어 udev 사용) 장치 파일을 사용할 지 고정 장치 파일을 사용할 지에 따라 달라집니다.

사용할 수 있는 옵션 몇 가지를 설명하면:

  • 다음 명령으로 기본적인 고정 장치 파일을 만듭니다

    # cd /dev
    # MAKEDEV generic
    

  • MAKEDEV를 이용해 수동으로 장치 파일을 직접 지정해서 만듭니다

  • 호스트 시스템의 /dev를 대상 시스템의 /dev 디렉토리에 연결합니다. 어떤 패키지는 postinst 스크립트를 실행하면서 장치 파일을 만들 수도 있습니다. 그러므로 이 옵션은 주의해서 사용해야 합니다.

D.3.4.2. 파티션 마운트하기

/etc/fstab을 만들어야 합니다.

# editor /etc/fstab

여기에 있는 예제를 필요에 맞게 수정하면 됩니다:

# /etc/fstab: static file system information.
#
# file system    mount point   type    options                  dump pass
/dev/XXX         /             ext3    defaults                 0    1
/dev/XXX         /boot         ext3    ro,nosuid,nodev          0    2

/dev/XXX         none          swap    sw                       0    0
proc             /proc         proc    defaults                 0    0

/dev/fd0         /media/floppy auto    noauto,rw,sync,user,exec 0    0
/dev/cdrom       /media/cdrom  iso9660 noauto,ro,user,exec      0    0

/dev/XXX         /tmp          ext3    rw,nosuid,nodev          0    2
/dev/XXX         /var          ext3    rw,nosuid,nodev          0    2
/dev/XXX         /usr          ext3    rw,nodev                 0    2
/dev/XXX         /home         ext3    rw,nosuid,nodev          0    2

mount -a 명령으로 /etc/fstab에 지정한 파일 시스템을 모두 마운트하십시오. 아니면 다음 명령으로 파일 시스템을 하나하나 마운트하십시오:

# mount /path   # 예를 들어: mount /usr

현재 데비안 시스템은 /media 아래에 이동식 미디어의 마운트 위치가 들어 있지만, /에 호환성 유지를 위해 심볼릭 링크를 만들어 놓았습니다. 필요하면 이 심볼릭 링크를 만드십시오. 예를 들어:

# cd /media
# mkdir cdrom0
# ln -s cdrom0 cdrom
# cd /
# ln -s media/cdrom

proc 파일 시스템은 여러번 어느 위치에서든 마운트할 수 있습니다. (하지만 /proc을 관행적으로 사용합니다.) mount -a 명령을 사용하지 않았다면, 계속하시기 전에 꼭 proc을 마운트하십시오.

# mount -t proc proc /proc

ls /proc 명령을 실행하면 여러 파일이 들어 있는 디렉토리 내용을 표시합니다. 이 명령이 실패하면 chroot 바깥에서 proc을 마운트할 수 있습니다:

# mount -t proc proc /mnt/debinst/proc

D.3.4.3. 시간대 설정하기

/etc/default/rcS에 파일에 들어 있는 옵션입니다. 하드웨어 시계를 UTC로 설정할 지, 지역별 시간으로 설정할 지 판단합니다. 다음 명령으로 이 부분을 설정하고, 해당 지역의 시간대를 설정합니다.

# editor /etc/default/rcS
# tzconfig

D.3.4.4. 네트워크 설정하기

네트워크를 설정하려면, /etc/network/interfaces, /etc/resolv.conf, /etc/hostname/etc/hosts 파일을 편집하십시오.

# editor /etc/network/interfaces 

다음은 /usr/share/doc/ifupdown/examples에 들어 있는 예제입니다:

######################################################################
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
# See the interfaces(5) manpage for information on what options are
# available.
######################################################################

# We always want the loopback interface.
#
auto lo
iface lo inet loopback

# To use dhcp:
#
# auto eth0
# iface eth0 inet dhcp

# An example static IP setup: (broadcast and gateway are optional)
#
# auto eth0
# iface eth0 inet static
#     address 192.168.0.42
#     network 192.168.0.0
#     netmask 255.255.255.0
#     broadcast 192.168.0.255
#     gateway 192.168.0.1

네임서버와 search 명령을 /etc/resolv.conf에 입력하십시오:

# editor /etc/resolv.conf

간단한 예제 /etc/resolv.conf:

search hqdom.local
nameserver 10.1.1.36
nameserver 192.168.9.100

시스템의 호스트이름을 입력하십시오 (2글자에서 63글자까지):

# echo DebianHostName > /etc/hostname

그리고 IPv6를 지원하는 기본적인 /etc/hosts 파일은:

127.0.0.1 localhost DebianHostName

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

네트워크 카드가 여러개라면, /etc/modules에 드라이버 모듈 이름을 적당한 순서로 맞춰야 합니다. 그래야 부팅할 때 각 카드가 의도한 해당 인터페이스 이름으로 (eth0, eth1 등) 연결됩니다.

D.3.4.5. APT 설정하기

debootstrap은 아주 기본적인 /etc/apt/sources.list 파일을 만드므로 추가 패키지를 설치할 수 있습니다. 하지만 이 외에 소스를 추가해야 할 경우가 있습니다. 예를 들어 보안 업데이트의 소스 패키지를 설정할 수 있습니다:

deb-src http://ftp.us.debian.org/debian lenny main

deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main

sources.list 파일을 고친 다음에 꼭 aptitude update를 실행하십시오.

D.3.4.6. 로캘 및 키보드 설정하기

영어가 아닌 언어를 사용할 때 로캘을 설정하려면 locales 지원 패키지를 설치하고 그 패키지를 설정하십시오. 지금은 UTF-8 로캘 사용을 권장합니다:

# aptitude install locales
# dpkg-reconfigure locales

키보드를 설정하려면 (키보드 설정이 필요한 경우):

# aptitude install console-data
# dpkg-reconfigure console-data

chroot 안에서는 키보드를 설정할 수 없으니 유의하십시오. 다시 시작한 다음에 설정합니다.

D.3.5. 커널 설치

이 시스템을 부팅하려면, 리눅스 커널과 부트로더가 있어야 합니다. 패키지로 만들어져 있는 커널은 다음 명령으로 찾아 보십시오:

# apt-cache search linux-image

패키지로 만든 커널을 사용하려면, /etc/kernel-img.conf 설정 파일을 미리 만드십시오. 예제 파일은 다음과 같습니다:

# Kernel image management overrides
# See kernel-img.conf(5) for details
do_symlinks = yes
relative_links = yes
do_bootloader = yes
do_bootfloppy = no
do_initrd = yes
link_in_boot = no

이 파일 및 여러가지 옵션에 대한 자세한 정보는, kernel-package 패키지를 설치하면 생기는 해당 맨페이지를 참고하십시오. 해당 옵션 값을 시스템에 맞추시기를 권장합니다.

그리고 설치하려는 커널 패키지를 패키지 이름을 이용해 설치하십시오.

# aptitude install linux-image-2.6.26-arch-etc

패키지로 만든 커널을 설치하기 전에 /etc/kernel-img.conf 파일을 만들어 두지 않았다면, 설치하면서 몇 가지 질문을 받게 될 수 있습니다.

D.3.6. 부트로더 설정하기

데비안 GNU/리눅스 시스템을 부팅 가능하게 하려면, 부트로더를 설정해서 루트 파티션에서 설치한 커널을 읽어들이도록 하십시오. debootstrap은 부트로더를 설치하지 않는다는 점에 주의하십시오. 하지만 aptitude을 데비안 chroot 안에서 사용하면 부트로더를 설치할 수 있습니다.

앞서 /dev/hda 장치 파일을 만들었다고 가정합니다. grub을 설치하는 다른 방법도 있지만, 이 부록이 다룰 범위를 벗어나는 내용입니다.

man yaboot.conf 명령으로 부트로더 설정 방법을 미리 알아보십시오. 데비안을 설치할 때 사용한 기존 시스템을 유지하는 경우라면, 기존의 yaboot.conf에 데비안에 해당하는 항목을 추가하십시오. 파일을 새로운 시스템으로 복사해 와서 편집할 수도 있습니다. 편집을 마친 다음에는 ybin을 실행하십시오. (ybin을 실행하면 실행하는 시스템에 상대적인 yaboot.conf 파일을 사용하게 됩니다.)

다음은 기초적인 /etc/yaboot.conf 예제입니다:

boot=/dev/hda2
device=hd:
partition=6
root=/dev/hda6
magicboot=/usr/lib/yaboot/ofboot
timeout=50
image=/vmlinux
label=Debian

일부 컴퓨터에서는, hd:가 아니라 ide0:을 써야 할 수도 있습니다.

D.3.7. 마지막 처리

앞에서 말한 것처럼, 설치한 시스템은 아주 기초적인 시스템입니다. 시스템을 좀 더 괜찮게 만드려면, 쉬운 방법으로 “standard” 우선 순위의 모든 패키지를 설치하면 됩니다:

# tasksel install standard

물론 aptitude를 이용해 패키지를 하나하나 선택해서 설치할 수도 있습니다.

설치한 다음에 /var/cache/apt/archives/ 밑에 다운로드한 패키지가 많이 들어 있게 됩니다. 다음 명령을 실행하면 디스크 공간을 좀 더 확보할 수 있습니다:

# aptitude clean



[22] 여기엔 GNU 기본 유틸리티와 sed, grep, targzip같은 명령을 포함합니다.