본문 바로가기

Embedded

루트 파일 시스템 빌드시 fakeroot 에러

buildroot를 사용하여 루트 파일 시스템을 만들면 fakeroot를 사용하게 된다.

fedora 18 까지는 아무 문제 없이 잘 되던 빌드 시스템이 fedora 20으로 넘어오면서 문제가 발생했다.

fakeroot에서 라이브러리를 로딩하다 에러가 난 것인데 구글링을 해 봤으나 해결책은 못 찾음.

결국 fakeroot를 사용하지 않아도 어차피 루트 권한으로 빌드하는 것이기 때문에 fakeroot를 사용하지 않도록 Makefile을 수정.

rootfs.cpio:

        rm -rf $(ROOT_PATH)/dev/*

        chown -R 0:0 $(ROOT_PATH)

        cat device_table.txt device_table_dev.txt > $(DEVICE_TABLE)

        makedevs -d $(DEVICE_TABLE) $(ROOT_PATH)

        cd $(ROOT_PATH);find . | grep -v .svn | cpio --quiet -o -H newc > ../rootfs.cpio

        rm -f $(DEVICE_TABLE)


rootfs.cpio.gz: rootfs.cpio

        gzip -9 -c rootfs.cpio > rootfs.cpio.gz

        rm -f rootfs.cpio


위에서 조심해야 할 부분이 하나 있는데, $(ROOT_PATH)로 이동하는 부분과 cpio 명령으로 이미지를 만드는 줄을 분리하면 안된다는 것. 

그렇다고 해서 디렉토리를 이동 하지 않고 find $(ROOT_PATH)를 하게 되면 출력되는 파일 경로에 문제가 생겨서 부팅이 안되고 커널 패닉이 발생하게 된다.


끝.

'Embedded' 카테고리의 다른 글

SDL에서 마우스를 요구하는 경우  (0) 2016.12.07