2011-02-17 4 views
3

루트 파일 시스템이 마운트 된 후 커널 스레드 을 시작해야하는 커널에 정적으로 링크 된 코드 (모듈 아님)가 있습니다. 문제는 prepare_namespace() 커널 함수를 수정하지 않고이 작업을 수행하는 방법을 모른다는 것입니다. 나는 initcall을 통해 할 수 있다고 생각했지만 커널이 rootfs를 돌 보시기 전에 실행됩니다. 누구나 최선의 방법을 알고 있습니까?루트 파일 시스템이 마운트 될 때까지 기다리는 방법이 있습니까?

UPDATE [1] : @BenVoigit 주석에 다음과 같은 솔루션을 제안 : 당신이 그것에/proc 디렉토리/마운트 및 poll_wait를 열어야합니다 같은 이 보인다.

UPDATE [2]`mounts_poll '의 소스보기 : 내가 RSBAC 패치에서보고를 RSBAC는 파일 시스템이 장착 후 어떤 조치를 할 prepare_namespace() 함수를 수정합니다. 가장 쉬운 방법 인 것 같습니다.

+0

플랫폼 및 부트 로더는 무엇입니까? –

+0

@Paulo amd64, grub –

+0

아마 * waiting *이라는 용어를 생각하지 않고, 시작할 때 몇 가지 작업을 수행하고 파일 시스템이 다시 마운트 될 때 더 많은 작업을 수행 할 수 있다고 생각할 수 있습니다. –

답변

0

현재 Linux 이미지는 너무 커서 PC 부트 섹터에 적합하지 않습니다. grub과 같은 최신 부트 로더는 RAM에 실제 파일보다 작은 파일 시스템을 마운트합니다.

후드에서 어떤 일이 일어나고 있는지 이해하려면/boot 아래에있는 디스크 이미지를 열 수 있습니다. 우분투에서 예를 들어 결국

mkdir test 
cd test 
zcat /boot/initrd.img-2.6.35-24-generic > image.cpio 
cpio -i < image.cpio 
vim init 

, 그것은 쉘 스크립트 단지 무리입니다 - 단순 거의 시적이다.

관련 문제