2010-11-30 1 views
1

데몬 실행 및 커널 공간에 적합하지 않은 (너무 복잡하거나 정책 관련) 상호 작용 부분을 처리하는 것처럼 사용자 공간을 필요로하는 하드웨어 장치가 있습니다.initramfs에서 사용자 공간으로 자원을 원활하게 넘겨주기

사용자 공간에 도달하면 이러한 데몬을 쉽게 실행할 수 있습니다. hotplug 이벤트의 결과로 실행할 수 있으며 많은 걱정을하지 않아도됩니다.

initramfs가 그림과 함께 나오면 모든 것이 갑자기 분리됩니다. 데몬이 initramfs에서 실행되면 실행이 일반 rootfs로 전환 될 때 계속 실행해야합니다. 이는 보통 initramfs가 switch_root 또는 rootfs에서 실행하여 리소스와 상태를 다른 복사본으로 넘깁니다. 두 가지 솔루션 모두 멋지고 해킹 된 것처럼 보입니다.

내가 간과 한 이러한 장치 및 지원 데몬을 관리하는 확실한 방법이 있습니까?

답변

0

실제 루트 장치를 마운트하려면이 데몬이 필요합니까? 내 대답은 네라고 생각합니다. 그렇지 않으면 해결책은 당신의 진짜 뿌리를 기다리는 것입니다.

나는 장치가 너무 복잡하여 작업하기에 데몬이 필요하며 커널에서 작업의 일부를 수행하고 sysfs 속성을 통해 정책을 처리 할 수 ​​있습니까? 데몬이 작동해야하는 실제 루트를 탑재 할 때 하드웨어의 예가 보이지 않습니다. 장치 검색이 적용되지만 장치가 실제로 작동하려면 데몬이 필요하지 않습니다. 예를 들어 환영받을 것입니다.

또한 루트를 정말로 전환해야합니까? 당신은 initramfs를 유지할 수 있고,/usr/아래에 완벽하게 기능하는 시스템을 갖출 필요가있다면 그것은 내 임베디드 시스템의 일부입니다.

업데이트 : mdev는 두 가지 모드로 실행되는 udev에 내장 된 대안입니다. sysfs에서 장치를 추가하고 다른 하나는 hotplug 이벤트로 실행합니다. 따라서 모든 정보가 여전히 sysfs에서 사용 가능하기 때문에 hotplug 이벤트를 "저장할 필요가 없습니다"라고 생각합니다. 다시 initramfs에서

  • 실행 udev에
  • 실제 루트 및
  • 스캔 sysfs를 스위치 루트 (? udev를 시작시 그렇게 않음)
  • 정상 작동을 마운트 (핫 플러그에 대한 예 기다립니다 그래서 해결책은 같은입니다 이벤트)
+0

패키지 관리자가있는 세미 임베디드 장치이기는하지만 흥미로운 아이디어입니다. 따라서 initramfs에 보관되는 경우 ipkg을 통해 uclibc 및 busybox를 업그레이드 할 수있게하고 싶습니다. – dottedmag

+0

그래픽 프레임 버퍼를 구동하는 데몬이 필요합니다. 그래픽 프레임 버퍼는 스플래시 화면을 표시하는 데 필요하며 (몇 초 동안 지연 시키면 마케팅 POV의 옵션이 아닙니다.) 이 특별한 경우에는 데몬을 시작한 후 종료하고 실제 rootfs에서 다시 시작하는 방법이 있습니다. 공유되는 정보는 거의 없지만 일반적인 경우에는이를 처리하는 방법에 관심이 있습니다. 예 : initramfs가 저장 장치가 나타나기를 기다릴 수 있도록 hotplug 이벤트를 처리하는 방법과 rootfs는 initramfs 실행 중에 발생한 이벤트를 포함하여 관심있는 모든 이벤트를 수신 할 수 있습니다. – dottedmag

0

당신은 특별한 사건이 있습니까? 다른 배포판은 어떻게 처리 했습니까?

Fedora가 udev를 어떻게 사용하는지 살펴보면, initramfs에서 시작하여 실제로 루트 fs를 마운트 할 수있게하고, 전환하기 전에 다시 종료합니다.

+0

필자의 경우는 그래픽 프레임 버퍼 (특정 화면 - 여러 eInk 컨트롤러 중 하나)를 구동하는 데 필요한 작은 데몬입니다. udev에 관해서 - 흥미 롭습니다. 나는 그들이 어떻게 udev가 모두 필요한 이벤트를 얻는 지, 즉,이 이벤트가 initramfs udev에 전달 되었다면, "MMC card is here"와 같은 이벤트를 userpace 이벤트가 얻는 방법을 확신하는지 궁금합니다. – dottedmag