PC 구축 · 15 min read · Jan 11, 2026

일반 용도를 위한 PC 엔진 랩 시스템 구축

키워드: PC 엔진 랩 랩 보드 랩 플랫폼 리눅스 데비안 SBC SoC 리눅스 온 랩 저전력 소형 조용한 서버

저자: Nathan L. Cutler
날짜: 2006년 6월 18일

면책 조항

이 문서는 누군가에게 유용할 수 있기를 바라는 마음으로 제공됩니다. 그러나 이 문서에 설명된 절차를 따를 경우, 전적으로 귀하의 책임 하에 진행됩니다. 저자는 이 문서의 내용을 읽거나 다른 방식으로 사용하는 사람에게 발생하는 모든 일에 대해 책임을 지지 않습니다.

배경

저는 10년 이상 리눅스를 사용자로서 사용해왔습니다. 그동안 몇 년 동안은 별로 사용하지 않았습니다. 2006년 5월, 제 친구 Chip Coldwell (http://frank.harvard.edu/~coldwell)이 ARM 기반의 단일 보드 컴퓨터(SBC)에 대해 이야기해주었고, 그는 이를 자동 응답기로 변환하고 있었습니다. 그는 커널의 직렬 드라이버에서 DMA 전송을 활성화하는 것과 같은 멋진 작업을 하고 있었습니다. 저는 “임베디드 컴퓨팅”이라는 용어를 들어본 적이 있었지만 그 의미를 깨닫지 못했습니다. Chip의 SBC(Atmel “시스템 온 칩” (SoC) 칩 기반)의 사진을 보고, 이러한 작고 간소화된 컴퓨터에서 리눅스를 실행하는 사람들에 대한 정보를 읽으면서 10W 미만의 전력을 소비하고 회전하는 팬과 디스크가 없는 리눅스 시스템을 갖는 아이디어에 매료되었습니다. 결국 회전하는 팬이 없는 시스템을 작동시키는 데 성공했지만, 결국 회전하는 디스크를 구입해야 했습니다.

저는 다양한 옵션을 살펴보는 데 약 일주일을 보냈지만, 기본적으로 세 가지로 요약되었습니다:

  • 스위스에 본사를 둔 PC Engines의 WRAP 플랫폼 (http://www.pcengines.ch)
  • C3 Eden 칩 기반의 VIA EPIA 보드 (Mini-ITX 폼 팩터)
  • 오래된 펜티엄 90 보드를 부활시키고 USB 어댑터를 설치하여 하드 디스크 대신 플래시 드라이브로 실행하기

이들은 제가 고려한 순서대로 나열되어 있습니다. 처음에는 WRAP에 대해 매우 열정적이었지만, 곧 MP3를 재생하고 X를 실행하는 등의 작업을 위해 제 필요에 비해 성능이 부족할 것이라는 걱정을 하게 되었습니다. WRAP은 사운드나 VGA 기능이 없고 이를 추가할 방법이 없었습니다. 그래서 VIA의 EPIA 보드 라인에 관심을 가지게 되었고, 그 중 하나는 온보드 DC-DC 변환기가 있어 “벽면 전원”에서 작동할 수 있습니다. 다시 며칠간의 연구 후, 저는 부품을 구입하고 시스템을 구축할 준비가 되었습니다. 그러나 제 아내가 그런 투자 전에 기다리는 것이 좋을 것이라고 제안했고, 저는 주저하게 되어 저렴한 대안을 고려하기 시작했습니다(위의 세 번째 목록). 그러나 이를 위해서는 새로운 팬 없는 스위칭 전원 공급 장치와 USB 어댑터를 구입해야 하며, 이는 상당한 비용을 추가하게 되며, 저는 그러한 시스템이 WRAP이나 VIA EPIA보다 훨씬 더 많은 전력을 소비할 것이라는 것을 알고 있었습니다.

나중에 저는 고체 상태 메모리 카드와 플래시 드라이브가 일반 용도 시스템을 실행하는 데 적합하지 않다는 것을 깨달았습니다. 이들은 라우터 및 읽기 전용 드라이브 + 작은 램디스크로 처리할 수 있는 기타 임베디드 애플리케이션에 적합할 수 있지만, 일상적인 리눅스 컴퓨팅 요구를 위해서는 회전하는 하드 드라이브가 필요합니다. 다행히도 WRAP의 CF 슬롯에 바로 꽂을 수 있는 저렴한 마이크로드라이브가 있습니다. 이 슬롯은 Type I 및 Type II CF 카드를 모두 수용합니다.

결단을 내리다

저는 결국 WRAP을 선택하기로 결정했습니다. 그 이유는 다음과 같습니다:

  • 세 가지 옵션 중에서 가장 낮은 전력 소비
  • 극단적인 소형화 - 더 멋져 보입니다
  • 소규모 비즈니스 지원 - 이 보드는 대기업이 아닌 스위스의 한 사람이 설계했습니다
  • USB를 지원하도록 수정할 수 있어 프린터와 CDMA 모뎀을 연결할 수 있습니다.
  • 오래된 펜티엄 90 보드보다 더 많은 메모리(128MB)를 가지고 있어 메모리 모듈을 찾기 어려울 것입니다
  • 오디오 및 비디오 기능이 없어도 괜찮습니다. 왜냐하면 저는 항상 제 일반 리눅스 박스에서 A/V 작업을 할 수 있기 때문입니다.

그래서 저는 WRAP 보드를 구입했습니다. USB 기능이 필요하기 때문에 그에 대한 듀얼 USB 어댑터가 준비되어 있다는 소식을 듣고 기쁘게도 그것도 구입했습니다. USB 옵션 추가에 대한 내용은 나중에 다루겠습니다. 또한 CF 카드를 일반 IDE 인터페이스에 연결하여 하드 디스크처럼 보이게 해주는 Compact Flash-IDE 어댑터를 구입했습니다.

집에 돌아온 후, 두 가지 중요한 구성 요소가 여전히 부족하다는 것을 깨달았습니다: (1) 루트 파일 시스템을 위한 CF 카드, (2) 부팅 메시지를 볼 수 없게 하는 NULL 모뎀 케이블. 전원으로는 보관 중에 있던 “유니버설” AC/DC 전원 어댑터를 사용하기로 결정했습니다. 이를 꺼내어 보드에 맞는 커넥터를 찾고 멀티미터를 사용하여 출력을 테스트했습니다. 12V에서 정확하게 나왔고, 제가 가정하기로는 6VA가 WRAP 보드를 구동하기에 충분할 것입니다.

필요한 NULL 모뎀 케이블은 양쪽 끝에 9핀 여성 커넥터가 있습니다. WRAP 보드에는 VGA 기능이 없기 때문에 BIOS 설정에 들어가고 부팅 메시지를 보려면 직렬 포트를 통해(따라서 NULL 모뎀 케이블을 사용하여) 두 번째 컴퓨터에서 터미널 에뮬레이터를 사용해야 합니다.

CF 카드 또는 마이크로드라이브?

처음에는 루트 파일 시스템을 512MB CF 카드에 두고 나머지 데이터를 USB 1.1을 통해 연결된 1GB 플래시 드라이브에 두겠다는 잘못된 생각을 가지고 있었습니다(WRAP은 USB 2.0을 지원하지 않습니다). 다행히도 플래시 드라이브는 구입하지 않았지만 CF 카드는 구입했습니다. 여전히 저렴했으며(400 CZK 미만) WRAP을 전용 라우터로 사용할 경우 Voyage Linux 설치를 유지할 수 있습니다.

CF 카드에 데비안 시스템을 설치하려고 시도했지만 특정 미션 크리티컬 파일과 디렉토리만 tmpfs(램 디스크) 파일 시스템에서 읽기 전용으로 작동하도록 하려다 실패하고 포기하고 Voyage Linux 0.2를 설치했습니다. 이는 비교적 고통 없이 진행되었고, 제 작은 WRAP 보드가 부팅되어 리눅스 프롬프트를 제공하는 것을 보니 기뻤지만, 점차적으로 시스템을 일상적으로 사용하고 루트 파일 시스템이 항상 읽기-쓰기 가능해야 한다는 것을 깨닫게 되었습니다. 몇 가지 연구 후, WRAP에 HDD를 추가하기 위한 세 가지 옵션에 도달했습니다:

  • 나만의 CF-IDE 어댑터를 만들기(즉, IDE 드라이브를 WRAP 보드의 CF 슬롯에 연결할 수 있도록 하는 것)
  • NASD(네트워크 연결 저장 장치)를 구입하고, 이를 리눅스에서 실행되도록 펌웨어를 다시 플래시하고 WRAP에 NFS 공유를 내보내기
  • 마이크로드라이브를 구입하여 WRAP의 CF 슬롯에 연결하기

이들은 제가 생각한 순서대로 나열했습니다. 첫 번째 옵션이 가장 흥미로웠습니다. 왜냐하면 3.5인치 드라이브가 세 개 또는 네 개 정도 남아있기 때문에 그 중 하나를 사용할 수 있을 것이라고 생각했기 때문입니다. 그러나 믿기 힘들겠지만, CF 슬롯을 IDE 포트로 변환할 수 있는 어댑터는 쉽게 구할 수 없습니다. CF 슬롯은 “진정한 IDE” 모드로 작동하지만, 문제의 일부는 전압입니다. WRAP 보드는 CF에 3.3V만 공급하고 IDE 드라이브는 5V가 필요합니다. 이는 44개의 와이어를 납땜해야 하는 하드웨어 해킹 유형의 제안이 됩니다. 표준 IDE 커넥터로는 어렵겠지만, CF 커넥터는 훨씬 작기 때문에 거의 불가능할 것입니다.

어제까지 NAS라는 것이 존재한다는 것을 전혀 몰랐습니다. IDE 드라이브를 RJ45 이더넷 포트에 연결하는 어댑터가 있을까 생각하다가 알게 되었습니다. 여분의 LAN 인터페이스가 사용되지 않고 있으므로 HDD를 그에 연결할 수 있을 것이라고 생각했습니다. 확실히 하드 드라이브가 들어 있는 작은 박스들이 많이 있다는 것을 발견했습니다. 이들을 LAN에 연결하면 됩니다. 문제는 이러한 박스들이 3.5인치 HDD보다 상당히 비싸다는 것입니다. 왜냐하면 내부에 SBC(단일 보드 컴퓨터)가 들어 있기 때문입니다. 하지만, 저는 여기서 SBC를 만들려고 하고 있으므로 두 개를 갖는 것은 그다지 의미가 없습니다. 그럼에도 불구하고 Linksys LSLU2 네트워크 스토리지 링크를 구입하고 싶었는데, 그 이유는 해킹 작업을 하는 열정적인 커뮤니티가 있다는 것을 알게 되었기 때문입니다. 그들은 심지어 새로운 펌웨어의 여러 버전을 가지고 있어서, 이를 완전히 다시 플래시하고 리눅스 박스로 변환할 수 있습니다. 이 솔루션은 흥미롭게 보였지만, 결국은 우회적인 방법이라는 것을 인정해야 했습니다.

Pascal Dornier와의 서신을 통해 WRAP 보드의 설계자는 마이크로드라이브를 WRAP에 꽂으면 작동한다고 알려주었습니다. 저는 이 가능성을 고려하지 않았습니다. 왜냐하면 (1) “마이크로드라이브”가 무엇인지에 대한 막연한 개념만 가지고 있었고, (2) WRAP 보드의 전원 공급 장치에 너무 많은 전력이 필요할 것이라고 생각했으며, (3) WRAP이 CF Type I 카드만 지원한다고 생각했기 때문입니다. 마이크로드라이브는 이상적인 솔루션이라는 것이 밝혀졌습니다. Pascal은 그것이 작동할 것이라고 확신했으므로 저는 하나를 구입하러 나갔습니다. 이 장애물이 극복되면서 제 작은 WRAP 보드를 일반 용도의 리눅스 박스로 변환할 수 있는 길이 열렸습니다.

기술 사양에 따르면, IBM/Hitachi 4GB 마이크로드라이브는 쓰기 시 3.3V에서 395mA를 소비하며, 이는 1.3와트입니다.

루트 파일 시스템 설정

주말 동안 시간이 있었기 때문에 인터넷을 뒤지다가 Jan Willem (http://www.lextreme.nl)의 WRAP 보드에 일반 데비안 시스템을 설치하는 방법에 대한 HOWTO(사실 블로그 글)를 찾았습니다. 이는 WRAP을 명시적으로 지원하는 Voyage Linux와 같은 대안들이 무선 라우팅 애플리케이션에 맞춰져 있고 CF 카드에서 루트 파일 시스템을 실행하는 것과는 달리, 더 일반적인 솔루션을 찾고 있었기 때문에 저에게 매력적이었습니다. 설치는 간단합니다. Microdrive를 이미 리눅스를 실행 중인 컴퓨터에 연결할 수 있도록 CF-IDE 어댑터가 필요합니다. 본질적으로 다음 기본 단계로 요약됩니다. 이는 Jan Willem의 절차를 약간 수정한 버전입니다:

  • fdisk를 사용하여 Microdrive에 두 개의 파티션, 스왑 및 루트를 생성합니다.
  • mkfs.ext3(저널링 파일 시스템을 사용할 것입니다) 및 mkswap을 사용하여 Microdrive를 포맷합니다.
  • Microdrive를 /mnt 아래에 마운트합니다.
  • debootstrap을 사용하여 /mnt에 최소한의 데비안 시스템을 다운로드하고 설치합니다.
  • Voyage Linux 0.2에서 2.6.15 커널을 설치하고 모듈을 설정합니다.
  • lilo -r /mnt를 실행하여 lilo 부트로더를 설치합니다.
  • Microdisk를 WRAP으로 이동합니다.
  • WRAP을 부팅합니다.

이는 단계의 일반화된 목록일 뿐입니다. 세부 사항은 다음과 같습니다.

fdisk

제 CF-IDE 카드를 리눅스 박스의 IDE1 포트에 연결하고, Microdrive를 CF 슬롯에 삽입한 후, 리눅스 박스를 켜면 dmesg가 Microdrive를 /dev/hdc로 인식합니다:

hdc: HMS360404D5CF00, CFA DISK drive
...
hdc: max request size: 128KiB
hdc: 7999488 sectors (4095 MB) w/128KiB Cache, CHS=7936/16/63, UDMA(33)
hdc: cache flushes supported
  hdc: hdc1

그래서 저는 root로 “fdisk /dev/hdc”를 실행합니다. Microdrive는 FAT32 파일 시스템으로 미리 포맷되어 있습니다.

Disk /dev/hdc: 4095 MB, 4095737856 bytes
128 heads, 63 sectors/track, 992 cylinders
Units = cylinders of 8064 * 512 = 4128768 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/hdc1   *           1         992     3999712+   b  W95 FAT32

따라서 첫 번째 단계는 그 아기를 깊이 파묻고 그 자리에 스왑 파티션과 루트 파티션을 만드는 것입니다.

Disk /dev/hdc: 4095 MB, 4095737856 bytes
128 heads, 63 sectors/track, 992 cylinders
Units = cylinders of 8064 * 512 = 4128768 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1          32      128992+  82  Linux swap / Solaris
/dev/hda2              33         992     3870720   83  Linux

보시다시피, 스왑 파티션을 디스크의 시작 부분에 두었습니다. 아마도 스왑 없이도 괜찮겠지만, 뭐 어때요? 128MB는 디스크의 약 3%에 불과합니다. 단일 디스크 시스템에서는 스왑 파티션이 디스크의 중앙에 있어야 한다고 “예상”되지만, 이전에 해본 적이 있기 때문에 두 개에 걸쳐 데이터를 분산시키기보다는 단일 파일 시스템에 모든 데이터를 두는 것이 더 좋습니다.

파티션 초기화 및 마운트

어쨌든 다음 명령은 새 파티션을 초기화하는 것입니다:

mkswap /dev/hdc1  
mkfs.ext3 /dev/hdc2

이 두 가지는 문제 없이 진행되었으므로 /dev/hdc2를 /mnt로 마운트했습니다:

mount -t ext3 /dev/hdc2 /mnt

debootstrap을 사용하여 최소한의 데비안 시스템 설치

그런 다음 ext3 지원이 커널에 컴파일되어야 하거나, initramfs를 사용하여 부팅 시 ext3 모듈을 로드해야 한다는 생각이 들었습니다. 이는 Voyage Linux 커널과 관련하여 문제가 될 수 있습니다. 왜냐하면 이는 단일 모듈로 되어 있으며, ext3가 컴파일되어 있지 않다면 문제가 될 수 있습니다. 그러나 “voyage-0.2/boot/config-2.6.15-486-voyage”를 빠르게 살펴보니 ext3가 포함되어 있었습니다. 계속 진행할 수 있습니다.

debootstrap sid /mnt ftp://ftp.cz.debian.org/debian/

저는 더 최신 버전인 “sid”를 설치하고 싶었지만, “base-config” 구문을 다운로드하려고 할 때 실패했습니다. 이유는 sid 패키지 목록에 “base-config”가 포함되어 있지만, sid 저장소에는 해당 패키지가 없기 때문입니다. 그러나 나중에 알게 된 것은, 제 시스템과 같은 sarge 시스템에서 sid를 설치하려면 sid 버전의 debootstrap으로 업그레이드해야 한다는 것입니다. 이는 실제로 많은 의미가 있습니다. 그렇게 하니 오류 없이 작동했습니다.

다음은 무엇일까요?

WRAP에서 데비안을 실행하려는 이전 시도에서, 이 시점에서 즉시 /mnt로 chroot하고 설치 기계에 CF 카드가 여전히 있는 동안 시스템을 구성하려고 했습니다. 이는 잘 작동하지 않았습니다. 특히 “base-config”를 실행할 때 문제가 발생했습니다. 문제는 로케일이었습니다. chroot 감옥에서는 base-config가 로케일 지원을 보지 못했지만, 제 로케일 환경 변수를 볼 수 있었습니다. 그래서 많은 경고가 발생했습니다. 이를 피하고 싶었기 때문에 초기 구성을 생략하고 바로 커널을 설치하고 lilo를 실행하겠습니다.

Voyage Linux 2.6.15 커널 설치

WRAP을 위한 커널 패키지를 컴파일하려는 미약한 시도 후, 저는 Voyage Linux 0.2를 다운로드했습니다. 이 버전에는 WRAP과 잘 작동하도록 패치된 미리 컴파일된 커널이 포함되어 있습니다. 이 커널의 한 가지 좋은 기능(위에서 언급한 ext3 지원 외에도)은 모든 것이 모듈로 포함되어 있다는 것입니다. 따라서 재컴파일할 필요가 없습니다. 커널 기능을 활성화해야 하는 경우, 모듈 이름을 /etc/modules에 추가하기만 하면 됩니다.

먼저 voyage-0.2 tarball을 압축 해제하고 그 안을 살펴보았습니다. 다음 명령을 실행하여 Voyage 커널을 CF 루트 파일 시스템으로 가져왔습니다:

cd voyage-0.2  
cp -a boot/* /mnt/boot  
cp -a lib/modules/* /mnt/lib/modules

기본 설정 (부팅 전)

커널 모듈

제가 다룬 첫 번째 구성 파일은 /etc/modules였습니다. 다음은 WRAP 보드를 위한 Voyage Linux 배포 설정 스크립트에 의해 생성된 /etc/modules입니다. WLAN 드라이버는 이 문서에서 다루지 않습니다:

# LAN 인터페이스  
natsemi   
# Geode `SC1100` 프로세서에 포함된 감시 타이머  
# 감시 데몬을 실행하는 경우 다음 줄의 주석을 제거하십시오.  
# wd1100 sysctl_wd_graceful=0 sysctl_wd_timeout=30   
# 열 모니터 하드웨어  
lm77  
# National Semiconductor SCx200 ACCESS.bus (온도 읽기에 필요)  
scx200_acb base=0x820,0   

또한 “depmod”를 수행해야겠다고 생각했지만, /mnt/lib/modules/2.6.15-486-voyage에 modules.dep 파일이 이미 존재한다는 것을 깨달았습니다. 따라서 필요가 없습니다.

/etc/inittab

다음으로 편집할 구성 파일은 /etc/inittab입니다. 이것은 매우 중요합니다. 그렇지 않으면 직렬 콘솔을 얻을 수 없습니다. 명백한 이유로, 표준 데비안 설치는 리눅스 콘솔에 키보드와 VGA가 있을 것이라고 가정합니다. 그러나 WRAP은 직렬 콘솔이 필요합니다. 즉, /etc/inittab을 편집하여 가상 콘솔을 제거하고 직렬 콘솔을 활성화해야 합니다. 이는 매우 간단하지만, 전송 속도에 주의해야 합니다. WRAP BIOS가 기대하는 속도와 일치하지 않으면 부팅 시 터미널 에뮬레이터에서 아무것도 볼 수 없습니다. WRAP이 설정된 속도를 확인하려면 WRAP이 초기 메모리 테스트를 수행하는 동안 “s” 키를 누릅니다. 그러면 BIOS 메뉴로 이동하여 9600, 38400 또는 더 높은 전송 속도로 설정할 수 있습니다. 저는 38400을 선택했습니다. 전체 /etc/inittab 파일은 다음과 같습니다:

# /etc/inittab: init(8) 구성.  
# $Id: index.html,v 1.2 2006/06/19 08:52:38 livingston Exp $  
  
# 기본 실행 수준.  
id:2:initdefault:  
  
# 부팅 시 시스템 구성/초기화 스크립트.  
# 이는 비상 모드(-b)로 부팅할 때를 제외하고 가장 먼저 실행됩니다.  
si::sysinit:/etc/init.d/rcS  
  
# 단일 사용자 모드에서 수행할 작업.  
~~:S:wait:/sbin/sulogin  
  
# /etc/init.d는 실행 수준이 변경될 때 S 및 K 스크립트를 실행합니다.  
#  
# 실행 수준 0은 정지입니다.  
# 실행 수준 1은 단일 사용자입니다.  
# 실행 수준 2-5는 다중 사용자입니다.  
# 실행 수준 6은 재부팅입니다.  
  
l0:0:wait:/etc/init.d/rc 0  
l1:1:wait:/etc/init.d/rc 1  
l2:2:wait:/etc/init.d/rc 2  
l3:3:wait:/etc/init.d/rc 3  
l4:4:wait:/etc/init.d/rc 4  
l5:5:wait:/etc/init.d/rc 5  
l6:6:wait:/etc/init.d/rc 6  
# 일반적으로 도달하지 않지만 비상 상황에서 넘어갑니다.  
z6:6:respawn:/sbin/sulogin  
  
# 전원이 실패하거나 복구될 때 수행할 작업.  
pf::powerwait:/etc/init.d/powerfail start  
pn::powerfailnow:/etc/init.d/powerfail now  
po::powerokwait:/etc/init.d/powerfail stop  
  
# WRAP의 직렬 콘솔  
T0:23:respawn:/sbin/getty -L ttyS0 38400 vt100

마지막 줄은 직렬 포트에서 getty를 실행하여 root로 로그인할 수 있게 해줍니다.

/etc/fstab

여기서는 KISS 전략(Keep It Simple, Stupid)을 따릅니다. 마이크로드라이브가 있으므로 루트 파일 시스템에 대한 쓰기 수를 최소화할 필요가 없습니다.

# WRAP과 마이크로드라이브  
/dev/hda1 swap swap defaults, 1 1  
/dev/hda2 / ext3 defaults, 0 0  
proc /proc proc defaults

/etc/apt/sources.list

이 파일은 “apt-get”이 deb 패키지의 저장소를 찾는 데 사용됩니다. 현재로서는 하나의 항목만 필요합니다:

deb http://ftp.debian.cz/debian/ sid main

이 파일을 /mnt 트리에 생성한 후, chroot하여 추가 패키지를 설치합니다. “less”와 같은 일부는 편의성을 위한 것이지만, “lilo”와 같은 다른 것은 필수적이며, 이를 사용하지 않으면 WRAP을 부팅할 수 없습니다.

chroot /mnt /bin/bash  
mount /proc  
apt-get update  
apt-get install watchdog # wd1100 모듈과 함께 사용  
apt-get install less  
apt-get install lilo # 필수! 반드시 필요!  
apt-get install udev # 필수! 반드시 필요!  
apt-get install [당신이 없이는 살 수 없는 좋아하는 패키지]

제가 아는 한, grub은 WRAP에서 작동하지 않으며, LILO를 사용해야 합니다. 저는 다른 곳에서 읽은 내용을 반복하고 있을 뿐이며, 경험에서 우러나오는 것이 아닙니다.

/etc/lilo.conf

다음 단계는 lilo를 설치하는 것입니다(정말 이만큼 왔나요?!). 다음은 제가 구성 파일을 작성한 방법입니다. 해킹하고 RTFM을 한 후, 다음과 같은 구성을 만들었습니다:

boot = /dev/hdc # 마이크로드라이브는 제 시스템에서 /dev/hdc로 표시됩니다  
disk = /dev/hdc # 마이크로드라이브  
bios = 0x80 # WRAP의 BIOS는 이를 기본 마스터로 인식합니다  
#compact  
lba32 # WRAP BIOS 설정에서 LBA를 설정합니다 - 하지만 CHS로도 시도해봤고 잘 작동합니다  
install=text  
map=/boot/map  
vga=normal  
delay=1  
timeout=50  
prompt  
serial=0,38400n8 # 이중으로 문자가 출력되므로 이중으로 설정할 수 있는 방법이 없습니다. 한숨.  
default=Linux  
  
image=/vmlinuz  
# initrd=/initrd.img # Voyage Linux는 initramfs를 사용하지 않습니다(감사합니다!)  
root=/dev/hda2 # WRAP에서 마이크로드라이브가 나타나는 방식입니다  
label=Linux  
append="console=ttyS0,38400n8 reboot=bios"  
read-only  
# restricted  
# alias=1

“sid”를 사용하는 경우, 문제가 있습니다. “sid”의 chroot는 “sarge”의 chroot와 다르게 작동합니다. chroot 환경에서는 /dev/hda 또는 /dev/hdc가 전혀 없습니다. “df”를 실행하면 다음과 같은 결과가 나옵니다:

Filesystem 1K-blocks Used Available Use% Mounted on  
sysfs 3809936 220184 3396216 7% /sys

이는 마이크로드라이브이지만, /dev/hdc로 표시되지 않습니다. /dev 디렉토리를 살펴보면, 최소한의 장치 파일 세트만 존재하며 /dev/hdc는 포함되어 있지 않습니다. 따라서 “lilo -t”는 /dev/hdc를 찾을 수 없다는 오류를 발생시킵니다. 또한 루트 디렉토리의 심볼릭 링크 “vmlinuz”를 생성해야 합니다. 이를 해결하기 위해, 이미 /mnt로 chroot된 상태에서 다음을 수행했습니다:

cd /  
ln -si boot/vmlinuz-2.6.15-486-voyage vmlinuz  
cd dev  
./MAKEDEV hda  
./MAKEDEV hdc  
lilo -t

제 시스템에서는 이로 인해 오류 없이 lilo -t를 통과할 수 있었습니다.
다음으로 저는:

lilo -v # 오류 없이 진행되었습니다  
umount /proc # 이게 필요한지 모르겠습니다  
exit # chroot를 종료합니다  
umount /dev/hdc2 # 마이크로드라이브를 마운트 해제합니다  
shutdown -h now

진실의 순간

남은 것은 마이크로드라이브를 WRAP 보드에 꽂고 전원을 켜는 것입니다. 그러나 부팅하는 모습을 보고 싶다면(확실히 보고 싶으실 것입니다), WRAP 보드의 직렬 포트를 다른 컴퓨터에 DB9(여성)-DB9(여성) NULL 모뎀 케이블(일명 Laplink 케이블)을 사용하여 연결해야 합니다. 이러한 케이블은 여전히 구매할 수 있지만, 일반적으로 특별 주문 품목입니다. NULL 모뎀 케이블을 양쪽 끝에 연결한 후, TuTTY(윈도우에서 Hyperterminal보다 훨씬 좋습니다) 또는 리눅스에서 minicom과 같은 터미널 에뮬레이터 프로그램을 실행합니다. 올바른 설정은 다음과 같습니다:

전송 속도: 38400 (또는 WRAP 보드가 설정된 속도)  
데이터 비트: 8  
패리티: 없음  
정지 비트: 1  
흐름 제어: XON/XOFF

이것은 우리가 기다려온 순간입니다! 제 경우에는 바로 부팅되어 로그인 프롬프트를 제공했습니다:

Debian GNU/Linux testing/unstable wrap ttyS0  
  
wrap login:

처음 로그인할 때는 루트 비밀번호가 없으므로 “root”를 입력하기만 하면 루트 프롬프트를 얻을 수 있습니다.

구성 (부팅 후)

마이크로드라이브에서 WRAP을 부팅하는 것은 시작에 불과합니다. 구성할 것이 많이 남아 있습니다.

감시 데몬

여기서 염두에 두어야 할 몇 가지 사항이 있습니다. 첫째, /etc/modules에 wd1100 라인을 추가하면 반드시 감시 데몬을 실행해야 합니다. 그렇지 않으면 wd1100 모듈이 30초 이내에 시스템을 재부팅합니다! 따라서 wd1100 커널 모듈을 활성화할 때 주의해야 합니다.

활성화하는 경우(위에서 제공된 매개변수를 사용하여), 마이크로드라이브가 설치 기계에 있는 동안 “apt-get install watchdog”만 수행하면 문제가 없습니다. 감시 데몬은 10초마다 /dev/watchdog에 자동으로 기록하도록 설정되어 있으며, wd1100 모듈은 30초 이상 /dev/watchdog에 기록되지 않은 경우에만 재부팅합니다. 따라서 안전합니다. 원하신다면 /etc/watchdog.conf에서 “interval”을 15초로 조정할 수 있습니다.

또한 부팅 중 감시 데몬이 시작되는 시점을 확인하는 것이 좋습니다. 제 시스템에서는 가장 마지막에 시작됩니다. 이는 다른 시작 항목이 지연되거나 시간 초과될 경우 wd1100 모듈이 실행되지만 감시 데몬이 제때 시작되지 않아 시스템이 재부팅될 수 있다는 것을 의미합니다. 따라서 제 시스템에서는 감시 데몬의 시작을 부팅 프로세스의 더 이른 시점으로 이동했습니다. ntpdate보다 먼저 시작되도록 하여, 이는 인터넷 서버에 연결하여 현재 시간을 가져오기 때문에 지연될 수 있습니다.

네트워크

네트워크 구성은 이 문서의 범위를 넘어섭니다. 최소한 필요한 것은 /etc/network/interfaces에서 고정 IP 인터페이스를 설정하고 /etc/resolv.conf에서 이름 서버에 대한 포인터를 설정하는 것입니다. 또한 /etc/hostname 및 /etc/hosts를 설정하는 것이 좋습니다(네트워크에 고정 IP 머신이 있는 경우, 해당 IP 주소를 /etc/hosts에 넣고 “daisy” 또는 “patty”와 같은 사람 읽을 수 있는 이름에 매핑할 수 있습니다).

텔넷/ssh

WRAP과 통신하기 위해 Hyperterminal을 사용하고 있다면 곧 PuTTY를 사용하고 싶어질 것입니다. 이를 위해서는 텔넷(보안 경고: 텔넷은 안전하지 않습니다 - 비밀번호가 암호화되지 않으며, 이론적으로 누군가가 텔넷 포트를 감청하여 비밀번호를 캡처할 수 있습니다) 또는 ssh를 설정해야 합니다. 저는 빠르고 간단한 솔루션이 필요했기 때문에 텔넷을 사용했습니다. 먼저 /etc/inetd.conf에 다음 줄을 추가합니다:

#:표준: 이들은 표준 서비스입니다.  
telnet stream tcp nowait telnetd.telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd

그런 다음 “apt-get install telnetd”를 사용하여 telnetd 패키지를 설치하고 inetd 슈퍼서버를 실행합니다(“/etc/init.d/openbsd-inetd start”는 데비안 “sid”에서). sid에서 ssh를 설정하는 것은 논란의 여지가 있지만 훨씬 더 쉽습니다. 해야 할 일은:

apt-get install openssh-server

이는 2MB의 디스크 공간을 차지하지만, 외부에서 누군가가 귀하의 머신의 텔넷 포트에 연결할 가능성이 조금이라도 있다면, 어떤 것이 더 나은지 결정하는 것은 여러분에게 맡기겠습니다.

그러나 텔넷이나 ssh를 사용하기 전에 “adduser”를 통해 사용자 계정을 설정해야 합니다. 또한 “passwd”를 통해 루트 비밀번호를 설정하는 것이 좋습니다.

여기서부터는 PuTTY를 실행하고 텔넷 또는 SSH를 선택하는 것뿐입니다. 물론 WRAP을 Winblows 박스에서 볼 수 있어야 합니다. TCP/IP가 활성화되어 있고 WRAP과 Winblows 박스가 동일한 서브넷에 있다면(저는 192.168.0.0/24를 사용하며, WRAP은 192.168.0.7이고 Winblows 박스는 192.168.0.5입니다 - 모두 고정 IP 주소이며 DHCP는 사용하지 않습니다), WRAP의 IP 주소를 입력하면 작동해야 합니다.

exim4

“dpkg-reconfigure exim4-config” 명령을 사용하여 설정합니다.

ntpdate

WRAP에는 배터리가 없기 때문에 재부팅할 때마다 시간 설정이 사라집니다. WRAP이 시간을 알 수 있도록 하려면, 항상 켜져 있는 인터넷 연결이 있다고 가정하고 ntpdate 패키지를 설치하면 됩니다. 이는 부팅 시 자동으로 시간 서버에 문의하여 시스템 시계를 설정합니다.

NFS 클라이언트

초기에는 WRAP에서 리눅스 박스의 파일에 접근할 필요가 있었습니다. 리눅스 박스는 NFS 커널 서버 버전 2를 실행하고 있습니다. WRAP이 이를 접근할 수 있도록 하기 위해, 다음을 수행했습니다:

apt-get install portmap  
apt-get install nfs-common

서버 측에서는 다음과 같이 /etc/exports 파일을 설정했습니다:

/home/livingston wrap(rw)

(wrap은 /etc/hosts에서 WRAP 박스를 가리키도록 설정되어 있습니다)
WRAP에서는 다음을 수행했습니다:

mount -o nfsvers=2,rw f216:/home/livingston /mnt

(f216은 서버입니다.) 더 자세한 정보는 NFS-HOWTO를 참조하십시오.

멋진 WRAP 트릭

현재 시스템 온도를 확인하려면:

cat /sys/bus/i2c/devices/0-0048/temp1_input

(결과에 1000을 곱하여 섭씨로 변환합니다). 다음은 더 사용자 친화적인 출력을 제공하는 작은 bash 스크립트입니다( “bc”가 필요하므로 먼저 “apt-get install bc”를 수행하십시오):

#!/bin/sh  
t=`cat /sys/bus/i2c/devices/0-0048/temp1_input`  
t2=`echo scale=1",$t/1000|bc -l`  
echo "시스템 온도: "$t2" 섭씨도"  
Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.