RAM에서 rootfs로 Linux 부팅을하려면 어떻게합니까?


16

rootfs는 squashfs 이미지이며 부트 로더는 SDRAM의 일부 주소로 이미지를로드하고 있습니다. 커널에 전달해야 할 매개 변수는 무엇입니까? 거기서 rootfs를 마운트 할 수 있습니까? Squashfs 지원은 기본 제공되며 이미 작동합니다

root=/dev/mtdblock2 rootfstype=squashfs  

플래시에서 부팅합니다.

편집 : 이것은 사용자 정의 부트 로더를 사용하는 MIPS 기반 임베디드 장치입니다. 일반적으로 부트 로더는 압축 된 커널을 플래시에서 SDRAM으로 추출한 다음 / dev / mtdblock2를 rootfs로 마운트합니다. 부트 로더를 개선하여 이미지를 RAM에 다운로드하고 플래시에 쓰지 않고 부팅 할 수 있도록 노력하고 있습니다.

Linux에서 RAM에 파일 시스템 이미지를 rootfs로 마운트하는 방법을 알 수 없습니다.


squashfs 작동을 이미 알고 있다면 달성하려는 목표를 더 잘 설명하십시오. 그것이 작동한다는 것을 어떻게 알 수 있습니까? 무슨 일이야? 그리고 가장 중요한 것은 원하는 방식으로 작동 하지 않는 것입니다.
rozcietrzewiacz

1
또한 장치는 어떤 부트 로더를 사용합니까?
rozcietrzewiacz

커널로 memdisk (SYSLINUX의)를 사용하면 전체 이미지를 메모리에로드 한 다음 부팅합니다.
golimar

답변:


10

나는 initramfs를 사용할 것이다. ( http://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt )

많은 Linux 배포판은 부팅 프로세스 중에 initramfs (initrd와 혼동하지 말고 달라야 함)를 사용하며 대부분 부팅 프로세스 초기에 사용자 공간 프로그램을 시작할 수 있습니다. 그러나 원하는대로 사용할 수 있습니다.

initrd에 비해 initramfs의 장점은 initramfs가 tmpfs 파일 시스템을 사용하고 initrd가 ram 블록 장치를 사용한다는 것입니다. 여기서 중요한 차이점은 initrd의 경우, 해당 공간을 모두 사용하지 않더라도 파일 시스템의 모든 공간을 미리 할당해야한다는 것입니다. 따라서 파일 시스템 공간을 사용하지 않으면 임베디드 장치에서 종종 부족한 리소스 인 램을 낭비하게됩니다. Tmpfs는 램이 부족한 파일 시스템이지만 현재 파일 시스템에서 사용중인 램만 사용합니다. 따라서 tmpfs에서 파일을 삭제하면 해당 램이 즉시 해제됩니다.

일반적으로 initramfs는 임시적이며 부팅 프로세스 초기에 일부 프로그램을 실행하는 데만 사용됩니다. 해당 프로그램이 실행 된 후 제어는 실제 디스크에서 실행되는 실제 파일 시스템으로 넘어갑니다. 그러나 그렇게 할 필요는 없습니다. 무한대로 initramfs가 부족 해지는 것을 막을 수있는 것은 없습니다.


그래서 실제로 "initramfs에서 무한정 실행"되는 시스템을 설정하려고했습니다. 시스템이 대부분 작동하지만 몇 가지 문제가 있습니다. 약간의 빛을 비출 수 있을지 궁금합니다. 질문이 여기에 게시 됨
dtmland


0

내가 사용 phram이 목적을 위해 드라이버 : 당신이 나중에 실제 플래시에 구울려고하고있다 / 개발 테스트를 위해 정확히 같은 rootfs 이미지를 사용할 수 있습니다 의미, 실제 메모리를 사용하여 MTD 장치를 에뮬레이트합니다. 커널 커맨드 라인에서 필요한 마법은 다음과 같습니다.

phram.phram=rootfs,0x100000,9Mi root=/dev/mtdblock0 memmap=9M\$100000

memmap커널이 해당 메모리를 자체적으로 사용하지 않도록 하려면 인수가 필요합니다 . 9MB는 내 rootfs의 크기입니다. 내 부트 로더에서 \ before $가 필요합니다. 내가 선택한 주소는 장치에 물리적 메모리가 어떻게 배치되어 있는지 모르기 때문에 임의적입니다. 따라서 자신에게 맞는 주소를 선택하십시오. 이전에 tftp 또는 그 주소에서 rootfs를로드하기 위해 무언가를 사용했다고 가정합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.