리눅스에서 UltraDMA/66 하드 사용하기

배철수 / 리눅스월드 발행인

 

 

    <목차>
    ping 개요
    ping at Work

 

1. 글을 쓴 연유

    필자가 아는 업체 중 맥 출력기를 판매하는 회사가 있다. 리눅스 월드 필름 출력 관계로 알게 되었는데 그 회사 사장님이 리눅스를 맥킨토시의 파일 서버로 사용 가능한지를 내게 문의했다. 물론 가능하다고 대답했더니 리눅스로 맥 파일서버를 하나 만들어 달라고 요청해 왔다.

    리눅스 월드도 맥으로 편집하지만 맥은 하드웨어가 매우 비싸다. 구형 맥은 하드디스크를 SCSI 방식을 사용하므로 PC에서 사용하는 IDE 하드보다 배 이상 비싸고 랜카드나 CD 드라이브도 맥용은 무척 비싸다. 그래서 맥을 여러 대 사용하는 출력소의 경우 보통 NT를 맥 파일 서버로 사용한다. 그러나 NT는 구입비도 비싸고 안정성도 약해 맥 파일 서버로 사용하는 것은 리눅스가 훨씬 낫다. 리눅스에서 netatalk를 사용하면 간단히 리눅스를 맥의 파일 및 프린터 서버로 사용할 수 있다.

    리눅스 서버의 사양을 묻길래 셀레론에 ASUS 보드로 하라고 했더니 아래 사양의 피시를 가져왔다.

    * 하드웨어 사양

    1) CPU : 셀레론 600
    2) 마더보드 : ASUS CUBX
    3) 하드디스크 :
        - IBM Deskstar DTLA-307030 (30.7 기가) : 2 개
    4) 랜카드 : 3com 3c905b-txnm

    그런데 마더보드의 하드디스크 IDE 콘넥터가 4개이다. 처음 보는 형태라 다소 당황했다. 매뉴얼에 2개(primary, secondary)는 일반 IDE(DMA33)용이고 2개(third, forth)는 DMA66용으로 나와 있다. 예전 보드의 경우는 보통 primary IDE가 DMA66/33 겸용으로 나와 있는데 이 보드는 DMA66을 따로 분리했다.

 

2. 설치

    함께 온 IBM 하드가 DMA66을 지원하므로 매뉴얼대로 일단 세 번째 IDE에 연결했다.

    * DMA66용 케이블은 일반 IDE 케이블과 다르다. 그리고 콘넥터가 4개인 경우 CMOS 셋업
       에서 "Onboard PCI ATA 66 Chip Enabled"를 선택해야 한다.

    그러나 레드햇 6.2 CD를 넣고 설치를 시작했는데 fdisk 단계에서 하드를 찾을 수 없다고 나온다. 분명 부팅 과정에서는 하드가 연결된 것으로 나오는데도 말이다. (단 CMOS 셋업에서는 나타나지 않고 SCSI 처럼 별도의 드라이버 설치 메시지에 나타난다.)

    그래서 뉴스그룹에서 찾아보니 리눅스 설치 CD에는 아직 DMA66이 지원되지 않는다고 나온다. 방법은 DMA33으로 설치하고 커널을 패치한 후 DMA66으로 케이블을 옮기는 것이었다. (IDE 콘넥터가 4개 인 경우)

    콘넥터가 2개인 경우는 primary 가 DMA33/66 겸용이므로 여기에 DMA66을 연결하고 설치한 후 커널만 패치 하면 된다.(DMA66하드는 33을 지원한다.)

 

2.1  UDMA/66 하드를 일반 IDE 콘넥터 (PRIMARY)에 연결한다.

    케이블은 UDMA 케이블을 사용해도 된다. 하드의 점퍼는 master로 셋팅한다. 부팅 때 primary master 에 하드가 인식되어야 한다.

 

2.2  리눅스를 설치한다.

    설치에 다른 차이점은 없다. 일반 하드에서와 동일하게 설치한다. Lilo 도 MBR에 설치한다.

 

2.3  커널을 패치 및 컴파일한다.

    1) 커널 2.2.17 을 다운받아 /usr/src 디렉토리에서 압축을 해제한다.

        Linux 라는 디렉토리가 만들어 지고 그 안에 커널 소스가 위치한다.

    2) http://www.kernel.org/pub/linux/kernel/people/hedrick/ide-2.2.17/ 에서 아래 파일을
        다운받는다.

        -rw-r--r-- 1 root root 933374 Oct 3 14:25 ide.2.2.17.all.20000904.patch.gz

    3) 위 파일을 /usr/src 디렉토리에 넣는다.
        (확장자는 gz이지만 gzip 파일이 아니므로 압축을 해제할 필요가 없다.)

    4) 커널을 패치한다.

      - cd /usr/src/linux
      - patch -p1 < ../ide.2.2.17.all.20000904.patch.gz

    5) 커널을 컴파일한다.

    ·  커널을 컴파일하기 위해서는 사전에 몇가지 링크가 필요하다. 리눅스 월드 2000년 6월호
        "ADSL 공유서버 만들기" 기사를 참조할 것.

      (1) make menuconfig

      다른 부분은 각자의 피시에 맞게 수정해야 한다. 아래는 하드디스크에 관련된 부분만 소개한다. 아래는 CUBX 모델에서의 설정이다. CUBX의 DMA 콘트롤러는 CMD 사의 것이다. 따라서 UDMA 콘트롤러가 다르면 달리 지정해야 한다.
       

      <*> Normal PC floppy disk support
      <*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
      --- Please see Documentation/ide.txt for help/info on IDE drives
      [ ] Use old disk-only driver on primary interface
      <*> Include IDE/ATA-2 DISK support
      [ ] Use multi-mode by default
      <*> Include IDE/ATAPI CDROM support
      < > Include IDE/ATAPI TAPE support
      < > Include IDE/ATAPI FLOPPY support
      < > SCSI emulation support
      [ ] TaskFile IOCTL Debugging
      [*] CMD640 chipset bugfix/support
      [*] CMD640 enhanced support
      [*] RZ1000 chipset bugfix/support
      [*] Generic PCI IDE chipset support
      [*] Sharing PCI IDE interrupts support
      [*] Generic PCI bus-master DMA support
      [*] Use DMA by default when available
      [ ] Good-Bad DMA Model-Firmware (EXPERIMENTAL)
      [ ] ATA Work(s) In Progress (EXPERIMENTAL)
      [*] Boot off-board chipsets first support
      [ ] AEC62XX chipset support
      [ ] ALI M15x3 chipset support
      [ ] AMD Viper support
      [*] CMD64X chipset support
      [ ] CY82C693 chipset support (EXPERIMENTAL)
      [ ] Cyrix CS5530 MediaGX chipset support
      [ ] HPT34X chipset support
      [ ] HPT366 chipset support
      [ ] Intel PIIXn chipsets support
      [ ] OPTi 82C621 chipset enhanced support (EXPERIMENTAL)
      [ ] PROMISE PDC20246/PDC20262 support
      [ ] SiS5513 chipset support
      [ ] Tekram TRM290 chipset support (EXPERIMENTAL)
      [ ] VIA82CXXX chipset support (EXPERIMENTAL)
      [*] Other IDE chipset support
      --- Note: most of these also require special kernel boot parameters
      [ ] Generic 4 drives/port support
      [ ] ALI M14xx support
      [ ] DTC-2278 support
      [ ] Holtek HT6560B support
      [ ] PROMISE DC4030 support (EXPERIMENTAL)
      [ ] QDI QD6580 support
      [ ] UMC-8672 support
      [ ] IGNORE word93 Validation BITS
      --- Additional Block Devices
      < > Loopback device support
      < > Network block device support
      [ ] Multiple devices driver support
      < > RAM disk support
      < > XT hard disk support
      < > Mylex DAC960/DAC1100 PCI RAID Controller support
      < > Parallel port IDE device support
      < > Compaq SMART2 support

       

      (2) make dep
      (3) make clean
      (4) make bzImage..
      (5) make modules
      (6) make modules_install

    6) 새 커널을 설치한다.

    새로 만들어진 커널을 /boot 디렉토리에 복사하고(cp arch/i386/boot/bzImage /boot/bzImage) lilo.conf를 수정 후 lilo 명령을 준다.

 

2.4  새 커널로 부팅한다.

    여기까지 진행했으면 커널에 DMA66 지원이 설치되었지만 아직 IDE 콘넥터는 DMA33(primary)에 연결되어 있다. 따라서 IDE 하드를 세 번째 콘넥터에 연결해야 DMA66이 지원된다. 아래는 콘넥터를 3번으로 옮기기 위해 필요하다.( primary 콘넥터가 DMA66과 33을 동시에 지원한다면 아래 절차는 필요 없다)

 

2.5  /etc/fstab 파일을 수정한다.

    세 번째 콘넥터의 장치명은 /dev/hde이다. 따라서 hda 부분을 hde로 변경한다.
     

    [root@linux src]# cat /etc/fstab
    /dev/hde2 / ext2 defaults 1 1
    /dev/hde5 /pub ext2 defaults 0 2
    /dev/cdrom /mnt/cdrom so9660 noauto,owner,ro 0 0
    /dev/fd0 /mnt/floppy auto noauto,owner 0 0
    none /proc proc defaults 0 0
    none /dev/pts devpts gid=5,mode=620 0 0
    /dev/hde1 swap swap defaults 0 0

     

2.6  /etc/lilo.conf 파일을 수정한다.

    boot=/dev/hda
    map=/boot/map
    install=/boot/boot.b
    prompt
    timeout=50
    image=/boot/bzImage
    label=bz2
    read-only
    root=/dev/hde2

    위에서 "root = " 부분만 수정한다. 수정 후에는 lilo 명령을 주어야 한다.

    주의]  위에서 boot=/dev/hda 가 아니고 /dev/hde 여야 하지 않느냐고 의문을 줄 수도
              있는데 지금 이를 hde 로 변경하면 lilo 명령을 줄 때 에러가 난다.
              즉, boot=/dev/hde로 변경하면 hde의 마스터 부트 레코드에 lilo를 설치하려고 시도
              하나 hde에는 아직 하드가 연결되어 있지 않다.

 

2.7  하드 케이블을 옮기고 리부팅한다.

    하드디스크의 primary에 연결된 케이블을 청색의 세 번째의 UDMA66 콘넥터로 옮겨야 한다. 네 번째로 옮기면 부팅이 안된다. 이제 DMA66으로 부팅된다는 메시지를 볼 것이다. 그러나 아직 하나가 더 남았다.

 

2.8  /etc/lilo.conf 파일을 다시 수정한다.

    boot = /dev/hda 를 boot=/dev/hde 로 수정한다. lilo 명령을 준다.

    이제는 모든 작업을 UDMA 하드(/dev/hde) 에서 실행할 수 있다.

    아래는 부팅 때의 메시지이다. hde, hdg 2개의 DMA66 하드를 연결했다.
    (시리얼콘솔에서 캡쳐 받았다.)
     

    LILO boot:
    Loading bz2..........
    Linux version 2.2.17 (root@linux) (gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)) 0
    Detected 601377 kHz processor.
    ide_setup: idebus=66
    Console: colour VGA+ 80x25
    Calibrating delay loop... 1199.31 BogoMIPS
    Memory: 63120k/65408k available (972k kernel code, 408k reserved, 864k data, 44k init)
    Dentry hash table entries: 8192 (order 4, 64k)
    Buffer cache hash table entries: 65536 (order 6, 256k)
    Page cache hash table entries: 16384 (order 4, 64k)
    Intel machine check architecture supported.
    Intel machine check reporting enabled on CPU#0.
    CPU: Intel Pentium III (Coppermine) stepping 03
    Checking 386/387 coupling... OK, FPU using exception 16 error reporting.
    Checking 'hlt' instruction... OK.
    POSIX conformance testing by UNIFIX
    PCI: PCI BIOS revision 2.10 entry at 0xf08c0
    PCI: Using configuration type 1
    PCI: Probing PCI hardware
    Linux NET4.0 for Linux 2.2
    Based upon Swansea University Computer Society NET3.039
    NET4: Unix domain sockets 1.0 for Linux NET4.0.
    NET4: Linux TCP/IP 1.0 for NET4.0
    IP Protocols: ICMP, UDP, TCP
    TCP: Hash tables configured (ehash 65536 bhash 65536)
    NET4: AppleTalk 0.18 for Linux NET4.0
    Starting kswapd v 1.5
    Detected PS/2 Mouse Port.
    Serial driver version 4.27 with<4>keyboard: Too many NACKs -- noisy kbd cable?
    keyboard: Too many NACKs -- noisy kbd cable?
    no serial options enabled
    ttyS00 at 0x03f8 (irq = 4) is a 16550A
    ttyS01 at 0x02f8 (irq = 3) is a 16550A
    pty: 256 Unix98 ptys configured
    apm: BIOS version 1.2 Flags 0x03 (Driver version 1.13)
    Uniform Multi-Platform E-IDE driver Revision: 6.30
    ide: Assuming 66MHz system bus speed for PIO modes
    PIIX4: IDE controller on PCI bus 00 dev 21
    PIIX4: chipset revision 1
    PIIX4: not 100% native mode: will probe irqs later
    ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:pio, hdb:DMA
    ide1: BM-DMA at 0xd808-0xd80f, BIOS settings: hdc:pio, hdd:pio
    CMD648: IDE controller on PCI bus 00 dev 38
    CMD648: chipset revision 1
    CMD648: not 100% native mode: will probe irqs later
    ide2: BM-DMA at 0xa800-0xa807, BIOS settings: hde:pio, hdf:pio
    ide3: BM-DMA at 0xa808-0xa80f, BIOS settings: hdg:pio, hdh:pio
    hdb: CRD-8400C, ATAPI CDROM drive
    hde: IBM-DTLA-307030, ATA DISK drive
    hdg: IBM-DTLA-307030, ATA DISK drive
    ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
    ide2 at 0xd000-0xd007,0xb802 on irq 10
    ide3 at 0xb400-0xb407,0xb002 on irq 10
    hde: IBM-DTLA-307030, 29314MB w/1916kB Cache, CHS=59560/16/63, UDMA(66)
    hdg: IBM-DTLA-307030, 29314MB w/1916kB Cache, CHS=59560/16/63, UDMA(66)
    hdb: ATAPI 40X CD-ROM drive, 128kB Cache, DMA
    Uniform CD-ROM driver Revision: 3.11
    Floppy drive(s): fd0 is 1.44M
    FDC 0 is a post-1991 82077
    3Com 3c90x Version 1.0.0d 1999 <linux_drivers@3com.com>
    ipddp.c:v0.01 8/28/97 Bradford W. Johnson <johns393@maroon.tc.umn.edu>
    ipddp0: Appletalk-IP Decap. mode by Jay Schulist <Jay.Schulist@spacs.k12.wi.us>
    Partition check:
    hde: [PTBL] [3737/255/63] hde1 hde2 hde3 < hde5 >
    hdg: [PTBL] [3737/255/63] hdg1 hdg2 < hdg5 hdg6 >
    VFS: Mounted root (ext2 filesystem) readonly.
    Freeing unused kernel memory: 44k freed
    INIT: version 2.78 booting
    Welcome to Red Hat Linux
    Press 'I' to enter interactive startup.
    Mounting proc filesystem [ OK ]
    Configuring kernel parameters [ OK ]
    Setting clock : Tue Oct 3 16:16:51 KST 2000 [ OK ]
    Loading default keymap[ OK ]
    Activating swap partitions [ OK ]
    Setting hostname linux [ OK ]
    Checking root filesystem
    /dev/hde2: clean, 37829/231360 files, 145361/461868 blocks
    [/sbin/fsck.ext2 -- /] fsck.ext2 -a /dev/hde2
    [ OK ]
    Remounting root filesystem in read-write mode [ OK ]
    Finding module dependencies [ OK ]
    Checking filesystems
    /dev/hde5: clean, 11/3506176 files, 110034/7010356 blocks
    Checking all file systems.
    [/sbin/fsck.ext2 -- /pub] fsck.ext2 -a /dev/hde5
    [ OK ]
    Mounting local filesystems [ OK ]
    Turning on user and group quotas for local filesystems [ OK ]
    Enabling swap space [ OK ]
    INIT: Entering runlevel: 3
    Entering non-interactive startup
    Checking for new hardware [ OK ]
    Setting network parameters [ OK ]
    Bringing up interface lo [ OK ]
    Bringing up interface eth0 [ OK ]
    Starting portmapper: [ OK ]
    Starting NFS file locking services:
    Starting NFS lockd: [ OK ]
    Starting NFS statd: [ OK ]
    Starting up APM daemon: apmd[348]: Charge: * * * (-1% unknown)
    [ OK ]
    Initializing random number generator [ OK ]
    Mounting other filesystems [ OK ]
    Starting system logger: [ OK ]
    Starting kernel logger: [ OK ]
    Starting identd: [ OK ]
    Starting at daemon: [ OK ]
    Starting cron daemon: [ OK ]
    Starting pcmcia [ OK ]
    Starting INET services: [ OK ]
    Starting lpd: [ OK ]
    Starting keytable [ OK ]
    Starting sendmail: [ OK ]
    Starting console mouse services: (no mouse is configured)
    Starting X Font Server: [ OK ]
    Starting AppleTalk services: (backgrounded)
    Starting linuxconf [ OK ]

    Red Hat Linux release 6.2 (Zoot)
    Kernel 2.2.17 on an i686

    linux login:




▲ top

home으로...