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

이 부분은 설명서의 다른 부분에 설명되어있는 ncurses 기반 메뉴 방식 설치 프로그램을 사용하지 않고 기존의 Unix · Linux 시스템에서 데비안 GNU/리눅스를 설치하는 방법을 설명합니다. 이 크로스 설치 HOWTO는 Red Hat, Mandriva, SUSE에서 데비안 GNU/리눅스로 이동하는 사용자의 요구로 작성되었습니다. 여기서는 *nix 명령의 입력에 대해 숙지하고 파일 시스템을 조작할 수 있는 것이 전제가 되고 있습니다. 여기서는 #가 데비안 chroot에 입력된 명령을 보여주고 $는 사용자의 기존 시스템에서 입력되는 명령을 나타냅니다.

일단 새로운 데비안 시스템에 맞게 설정하기만 하면, 기존 사용자 데이터를(있다면) 옮겨 와서 계속 사용할 수 있습니다. 따라서 이것은 다운 타임 없음에서 데비안 GNU/리눅스 설치됩니다. 또한 이것은 여러가지 부팅 설치 미디어와 잘되지 않는 하드웨어에서 좋은 설치 방법입니다.

참고

이것은 대부분을 수동으로해야 하므로, 시스템의 대부분을 기본 설정을 할 필요가 있습니다. 그것은 보통의 설치보다 데비안 및 Linux 일반적인 지식이 필요하다는 것을 기억하십시오. 또한 이 단계에서 일반적인 설치와 똑같은 시스템이 될 것으로 기대하지 마세요. 이것은 시스템을 설치하는 기본적인 단계에 지나지 않습니다. 추가로 설치 및 설정이 필요하게 될지도 모릅니다.

D.3.1. 시작하기

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

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

# mke2fs -j /dev/hda6

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

스왑을 다음과 같이 초기화하고 활성화하십시오(파티션 번호는 데비안 스왑 파티션에 파티션 번호로 바꾸십시오):

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

파티션 /mnt/debinst (설치 지점. 새로운 시스템의 root (/) 파일 시스템에 있습니다)에 마운트하고 하십시오. 엄밀히 말하면 마운트 위치 이름은 아무거나 상관 없습니다. 이후의 설명에서 이것을 사용합니다.

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

참고

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

D.3.2. debootstrap 설치

데비안 설치 프로그램에서 사용하는 유틸리티에서 데비안베이스 시스템을 설치하는 공식적인 방법으로 인정받고 있는 것은 debootstrap입니다. wgetar를 사용하지만 /bin/sh와 기본적인 Unix/Linux 도구 [26]에만 의존하고 있습니다. 기존 시스템에 아직 설치되어 있지 않으면 wgetar를 설치한 다음 debootstrap 다운로드 설치하십시오.

또한 수동으로 설치하려면 다음과 같습니다. 먼저, deb 파일을 풀 작업용 폴더를 다음과 같이 만들어주세요:

# mkdir work
# cd work

debootstrap 바이너리는 데비안 아카이브(아키텍쳐에 맞는 파일을 선택하도록하십시오)에 있습니다. pool에서 debootstrap. deb를 다운로드하여 작업 폴더에 패키지를 복사하여 파일을 추출하십시오. 파일을 설치할 때 root 권한을 가질 필요가있을 것이다.

# 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/mirror/list에 목록이 있습니다.

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

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

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

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

이제 디스크에 진정한 데비안 시스템을(많이 작지만) 손에 넣었습니다. 거기에 chroot하십시오:

# LANG=C.UTF-8 chroot /mnt/debinst /bin/bash

chroot 후, 데비안 기본 시스템과 호환되는 터미널 정의를 필요가 있을지도 모릅니다. 예를 들어 다음과 같이합니다.

# export TERM=xterm-color

TERM 값에 따라 ncurses-term 패키지를 설치해야 할 수도 있습니다.

D.3.4.1. 장치 파일 만들기

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

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

  • makedev 패키지를 설치하고, 다음 명령으로 기본적인 고정 장치 파일의 기본 모음을(chroot 상태에서) 만듭니다

    # apt-get install makedev
    # mount none /proc -t proc
    # 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

/etc/fstab에서 지정한 파일 시스템을 모두 마운트 mount-a라고 합니다. 또한 파일 시스템을 하나하나 마운트하려면 다음과 같이하십시오:

# mount /path   # e.g.: 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/adjtime 파일의 3번째 줄을 UTC로 설정하면 하드웨어 시계 값을 UTC로 해석하고, LOCAL로 설정하면 로컬 시각으로 해석합니다. 다음 명령어로 설정할 수 있습니다.

# editor /etc/adjtime

예를 들어 다음과 같이 합니다:

0.0 0 0.0
0
UTC

다음 명령으로 표준 시간대를 설정합니다.

# dpkg-reconfigure tzdata

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

"64-bit PC에서는 현재 실험 버전 네트워크 설정을하려면, /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

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

# 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
127.0.1.1 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 jessie main

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

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

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

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

# aptitude install locales
# dpkg-reconfigure locales

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

# aptitude install console-setup
# dpkg-reconfigure keyboard-configuration 

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

D.3.5. 커널 설치

이 시스템을 시작할 수 있도록 한다면, Linux 커널과 부트 로더가 필요합니다. 다음과 같이하여 패키지로 만든 커널을 확인하십시오:

# apt-cache search linux-image

다음 패키지 이름을 사용하려면 커널 패키지를 설치합니다.

# aptitude install linux-image-arch-etc

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

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

부트 로더 설정 방법은 info grub man lilo.conf를 확인하십시오. 데비안을 설치하는 데 사용하는 시스템을 유지하려면 기존의 grub2의 grub.cfg 아니면 lilo.conf 에 데비안 설치에 항목을 추가하십시오. lilo.conf에서 새로운 시스템으로 복사해 와서 편집하십시오. 편집을 마친 후 lilo를 호출하십시오(lilo를 호출 시스템과 관계있는 곳에의 lilo.conf가 사용된다는 것을 기억하십시오).

grub2 설정은 다음과 같이 쉽습니다:

# aptitude install grub-pc
# grub-install /dev/hda
# update-grub

두 번째 명령이 grub을 설치합니다. (이 경우에는 hda의 MBR에 설치합니다.) 마지막 명령은 올바르게 동작하는 /boot/grub/menu.lst 파일을 만듭니다.

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

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

boot=/dev/hda6
root=/dev/hda6
install=menu
delay=20
lba32
image=/vmlinuz
initrd=/initrd.img
label=Debian

D.3.7. Remote access: Installing SSH and setting up access

In case you can login to the system via console, you can skip this section. If the system should be accessible via the network later on, you need to install SSH and set up access.

# aptitude install ssh

Root login with password is disabled by default, so setting up access can be done by setting a password and re-enable root login with password:

# passwd
# editor /etc/ssh/sshd_config

This is the option to be enabled:

PermitRootLogin yes

Access can also be set up by adding an ssh key to the root account:

# mkdir /root/.ssh
# cat << EOF > /root/.ssh/authorized_keys
ssh-rsa ....
EOF

Lastly, access can be set up by adding a non-root user and setting a password:

# adduser joe
# passwd joe

D.3.8. 마지막 처리

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

# tasksel install standard

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

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

# aptitude clean



[26] 에는 sed, grep, tar, gzip 같은 GNU 핵심 유틸리티가 들어 있습니다.