mdev/ko

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Mdev and the translation is 100% complete.

Other languages:
English • ‎日本語 • ‎한국어 • ‎русский

이 페이지를 작성한 목적은 리눅스의 udev 를 mdev로 바꾸는 방법을 문서로 남겨, initramfs 없이도 별도의 /usr 분할 영역을 만들 수 있게 하는데 있습니다. 작성자는 IceWM을 창 관리자로 하는 젠투 리눅스 배포판을 사용합니다. 여기 나와있는 설명에는 설정 조정 방법과 다른 배포판에 적용하는 방법도 들어있습니다.

시스템에서 mdev가 동작할까요?

mdev 프로그램은 완전한 구색을 갖춘 데스크톱 환경을 사용하지 않는 시스템 같은 곳에 알맞습니다. 참고로 데스크톱 환경에서는 아비워드, 파이어폭스, 김프, 그뉴메릭, 등을 꼭 실행할 필요는 없습니다. 그러나 KMail 같은 KOffice 프로그램은 KDE에 붙어 나옵니다. 일반적으로 KDE나 그놈을 사용할 때 mdev는 적합하지 않습니다. 또한 LVM을 함께 사용하면 문제가 생길 수도 있습니다.

기본 젠투 프로파일을 활용하면 매우 잘 동작합니다:

  • default/linux/x86/13.0
  • default/linux/amd64/13.0

다음 명령으로 현재 사용하는 프로파일을 확인하십시오:

user $eselect profile list
Current /etc/portage/make.profile symlink:
  default/linux/amd64/13.0
참고
evdev 최근 버전(x11-drivers/xf86-input-evdev로 제공)과 www-client/chromium 에서 udev가 필요합니다. udev가 없으면 빌드할 수 없습니다.

젠투 사용자가 udev에 의존하여 시스템을 사용할 수 있는지 확인할 목적으로 한가지 이상의 무결성 검사 진행 사항이 있습니다.

무결성 검사

어떤 꾸러미가 udev에 의존하는지 대략적인 일반 정보를 확인하십시오. 출력 내용은 다음과 비슷해야합니다:

user $equery d udev
 * These packages depend on udev:
media-libs/mesa-9.0.1 (gbm ? virtual/udev)
sys-apps/hwids-20130329 (udev ? >=virtual/udev-197-r1)
sys-apps/util-linux-2.22.2 (udev ? virtual/udev)
virtual/dev-manager-0 (virtual/udev)
x11-base/xorg-server-1.13.4 (udev ? >=virtual/udev-150)
x11-drivers/xf86-video-intel-2.20.13 (udev ? virtual/udev)
x11-libs/cairo-1.10.2-r3 (drm ? >=virtual/udev-136)

다음 줄을 /etc/portage/package.mask/mdev(아직 없다면 만들 수 있음) 파일에 추가하십시오:

파일 /etc/portage/package.mask/mdevMask away udev
sys-fs/udev

/etc/portage/make.conf에서 udev USE 플래그를 전체적으로 비활성화하십시오:

root #euse -D udev

-udev USE 플래그를 넣어 모든 꾸러미를 다시 빌드하십시오.

root #emerge -uDNvp @world

virtual/dev-manager에서 요구하여 포티지에서 udev를 설치할 수 없는 오류만 뜬다면 다음 단계로 진행하십시오. 그렇지 않으면, 시스템에 설치한 하나 이상의 꾸러미에서 sys-fs/udev에 강 의존성이 걸려있을 수도 있습니다.

추가 과정이 필요한 프로그램

ATI/AMD 바이너리 블롭

일부 ATI/AMD 라데온 카드에는 바이너리 블롭이 필요합니다. 젠투 sys-firmware/radeon-ucode 꾸러미에서는 여러가지 각각의 모델을 지원하는 http://people.freedesktop.org/~ag5f/radeon_ucode/ 사이트에서 모든 바이너리 블롭을 끌어옵니다.

모든 바이너리 블롭을 라이브러리 디렉터리에 넣고 나면, 커널에서 udev에 어떤 바이너리 블롭을 불러올 지 발견하도록 지시해야합니다. 바이너리 블롭 전체 중 하나라도 제거하면, 제대로 된 바이너리 블롭만 라이브러리 디렉터리에 남겨두고 바이너리 블롭을 자동으로 불러옵니다.

udev를 mdev로 바꾸기

경고
리눅스 시스템을 부팅하지 못하게 만들 수도 있는 치명적인 과정입니다. 위 방식을 통해 udev 추가 의존성이 나타나지 않을 때만 진행하십시오.

devtmpfs 커널 설정

devtmpfs 파일 시스템/dev에서 지원하고 자동으로 마운트하도록 설정하십시오:

커널 devtmpfs 활성화
Device Drivers --->
    Generic Driver Options --->
        [*] Maintain a devtmpfs filesystem to mount at /dev
        [*] Automount devtmpfs at /dev, after the kernel mounted the rootfs

설정을 바꾸고 나면 커널을 다시 빌드하십시오 아직 다시 부팅하지 마십시오.

busybox 이머지

sys-apps/busybox 꾸러미에 mdev USE 플래그를 설정했는지 확인하십시오. static USE 플래그를 설정하시는 것도 좋습니다. /etc/portage/package.use/mdev 파일에 다음 줄을 추가하십시오:

파일 /etc/portage/package.use/mdev
sys-apps/busybox static mdev

이제 busybox를 (다시)설치하십시오:

root #emerge --ask --oneshot busybox

devpts 마운트

devpts 파일 시스템은 비표준 동작을 막습니다. 부팅할 때 또는 mount -a 명령으로 자동 마운트를 진행하지 않습니다. 분명하게 mount devpts 명령을 실행해야 합니다. udev 기반 표준 해결책은 루트 권한으로 rc-update add udev-mount sysinit 명령을 실행하고 시스템 시동 시 udev-mount 스크립트에 마운트 동작을 진행하도록 하는 방법입니다. mdev 기반 시스템에서는 udev를 설치하지 않겠죠. 그래서 대신, /etc/local.d/에 셸 스크립트로 mount devpts 명령을 넣습니다. 이 예제에서는 /etc/local.d/000.start 파일을 활용합니다.

udev-mount를 사용하지 않아 발생하는 또다른 문제점은 /dev/shm을 루트 계정으로만 기록할 수 있다는 점입니다. 기본 동작을 복원하려면 chmod 1777 /dev/shm 명령을 내려야합니다. 이 명령은 시작 스크립트에서도 실행합니다.

파일 /etc/local.d/000.start부팅할 때 devpts 를 마운트하고 /dev/shm 권한 바꾸기
#!/bin/bash
mount devpts
chmod 1777 /dev/shm
참고
/etc/local.d/에서 활용하는 스크립트는
  • 실행 가능해야 하고
  • 시작 스크립트는 ".start" 확장자로 끝나야 하고
  • 시스템 종료시 실행할 스크립트는 ".stop" 확장자로 끝나야합니다

udev 서비스 교체

서비스 목록에서 udev를 제거하고 mdev로 바꾸십시오:

root #rc-update del udev sysinit
root #rc-update add mdev sysinit

재부팅

새 커널로 다시 부팅하십시오. 시스템은 mdev로 동작해야합니다.

정리

시스템에서 udev를 제거하십시오:

root #emerge --unmerge sys-fs/udev

/etc/portage/package.mask 파일(또는 이 디렉터리의 파일)에 sys-fs/udev를 추가하십시오.

이제 udev가 완전히 사라진 머신이 됐습니다.

CUPS에서 실행할 USB 프린터 설정

부팅 시간 초기에 '찾기' 동작 활성화

root #cd /bin
root #ln -s /bin/busybox find

커널 다시 빌드

USB 포트를 살펴볼 libusb(와 CUPS)를 활용하려면, 커널 설정에서 CONFIG_USB_DEVICE_CLASS=y 옵션과 CONFIG_USB_DEVICEFS=y 옵션을 설정하십시오. 또한 cups-1.5.2 이빌드에서 CONFIG_USB_PRINTER=y 옵션을 비활성화하라고 경고하더라도 활성화하십시오. make menuconfig 명령을 활용할 경우 아래 항목을 찾을 수 있습니다:

커널 부팅할 때 USB 장치 생성 활성화
Device Drivers --->
    [*] Support for Host-side USB
      [*] USB device filesystem [DEPRECATED]
      [*] USB device class-devices [DEPRECATED]
    [*] USB Printer support
참고
오래된 항목에 대한 경고에 걱정하지 마십시오.

부트로더에 새 커널을 설정하고 새 커널로 다시 부팅하십시오

새 장치 노드 출현 검증

장치 노드 계층은 /dev/bus/usb/에 나타나야합니다. 프린터를 켜면 프린터 노드가 /dev/lp0에 나타나야합니다. lsusb 명령은 제대로 동작해야 하며 프린터 세부 정보를 표시해야합니다.

CUPS에서 프린터 설정

일반적인 방식으로 CUPS를 설정하십시오. CUPS에서 프린터를 찾고 parallel:/dev/lp0과 같은 URI를 나타내야합니다.

문제 해결

부팅 과정에서 리눅스 모듈 빠짐

mdev로 옮겨간 후 리눅스 모듈이 필요한데 불러오지 않으면 다음 해결책 중 하나 이상을 실행해보십시오:

  • /etc/conf.d/modules에 리눅스 모듈을 추가하십시오
  • 리눅스 커널에 모듈을 넣어 컴파일 하시고 요청할 때 불러오지 않게 하십시오.
  • 개별 모듈 로더를 작성하십시오:
파일 /sbin/hotplug
#!/bin/sh
test -n "$MODALIAS" && modprobe "$MODALIAS";
exec /sbin/mdev

mdev 대신 hotplug 처리자로 설치하십시오. 참고로 hotplug를 실행하는게 좋습니다. /proc/sys/kernel/hotplug의 기본값이 /sbin/hotplug이므로, 이 스크립트 이름을 /sbin/hotplug로 붙이는걸 고려하십시오(또는 커널 설정에서 기본 값을 바꾸십시오).

기타

참고
이 절차 모음은 원래 Walter Dnes가 작성했고 개인 웹사이트에서 보여주던 내용입니다. 젠투 사용자 메일링 리스트에서 다루던 내용을 Michael Mol이 젠투 위키로 가져오면서 일부를 편집했습니다.
  • udev와는 달리 mdev는 자동 모듈 불러오기를 지원하지 않습니다. /etc/conf.d/modules 파일을 활용하시고 불러와야 할 모든 모듈 항목(nvidia, wl, 등)을 넣으십시오. 또한, /etc/modprobe.d를 지원하지 않으므로 /etc/conf.d/modules에 자체 _args 변수를 넣으십시오. 모듈 설정을 이 위치로 넣어야 할지도 모릅니다.
  • mdev -s 에서는 /dev/mapper 노드를 만들지 않습니다. 직접 만들든지, lvm2의 dmsetup mknodes 명령을 활용핫비시오. 초기화 스크립트에서 mdev -s 다음에 추가하는 방법도 좋습니다.
  • xorg 입력시 활용할 마우스 및 키보드 드라이버를 활용하십시오. evdev를 빌드하려면 udev가 필요합니다. mousedrv(마우스 드라이버용)는 시냅틱스 드라이버를 불러오면 불러오지 못하고 멈춥니다.
  • CONFIG_INPUT_EVDEV 커널 설정 옵션은 키보드 및 마우스를 입력 장치 이벤트로 제공할 뿐만 아니라, 랩톱 덮개와 단추 이벤트를 acpid로 전달하기도 합니다.

추가 참조

외부 자료