처음 부팅하는 동안 확장 파일 시스템을 일시적으로 비활성화


13

올바른 로케일, 시간대 등으로 이미 구성된 Raspbian Lite를 기반으로 사내 Raspberry Pi 이미지를 빌드하고 싶습니다. 불행히도 현재 Raspbian 이미지 릴리스는 파일 시스템의 크기를 자동으로 조정 한 다음 재부팅합니다.

크기 조정이 발생하지 않도록 파일 시스템 크기를 줄이는 번거 로움을 피하고 싶습니다 . 자동 파일 시스템 크기 조정을 일시적으로 비활성화하는 등 레코딩 후 이미지를 편집하려면 어떻게합니까?

효과를 명확히하기 위해 편집 된 내용은 가역적이어야합니다. 즉, 처음 부팅 할 때 사용자 정의 이미지가 확장되기를 원합니다.


이것은 이상적인 해결책은 아니지만 이러한 문제가 발생하지 않는 작은 카드 4gb를 사용하는 것을 고려했습니다.
Steve Robillard

2
재미있는 아이디어. 작은 크기의 카드로 굽기가 효과적으로 크기를 제한합니다. 직접 솔루션을 선호하지만 이것이 적절한 대안입니다. 감사합니다
patricktokeeffe 2016 년

2
꽤 성가신 일입니다. 나는 이것이 raspi-config처음 부팅 할 때 실행되는 간단한 자체 부팅 부팅 스크립트를 통해 수행되며 쉽게 비활성화 할 수 있다고 확신합니다. 모양은 있지만 새 이미지를 다운로드해야합니다. 마지막 이미지는 5 월입니다. 몇 시간 후에 다시 확인하십시오.
goldilocks

답변:


13

Raspbian에서이를 담당하는 두 가지 메커니즘이 있습니다. 가장 좋은 아이디어는 두 파트가 활성화 된 경우 두 파트를 모두 관리하는 것입니다.

첫 번째는 원본에 /boot/cmdline.txt다음이 포함되어 있다는 것입니다.

init=/usr/lib/raspi-config/init_resize.sh

루트 파티션에서 해당 경로가있는 스크립트를 참조 하며 부팅시 초기화 프로세스 로 사용됩니다 . 이 비트가 없으면 기본적으로 커널에 내장 된 값이되며 /sbin/init이는 Raspbian에서에 대한 심볼릭 링크 /lib/systemd/systemd입니다.

의 해당 부분을 제거 cmdline.txt하면 시스템이 정상적으로 부팅됩니다.

스크립트가 실제로하는 일은 SD 카드 의 파티션 크기를 조정하는 것 입니다. 이것은 크기 조정에서 별개의 과정입니다 파일 시스템 파티션에 다음에 일어날 것입니다.

발생하는 방식은 시스템이 즉시 정상적으로 재부팅되고 (systemd를 통해) init.d스크립트가 조기에 트리거되도록 설정되어 있으며 두 번째 파티션에서 제거되어야합니다.

/etc/init.d/resizefs_once

그리고 그것에 대한 상징적 인 링크는 제거되어야합니다.

/etc/rc3.d/S01resizefs_once

원하는 경우 나중에 사용할 수 있도록 사본을 보관할 수 있지만 raspi-config다시 작성할 수 있습니다 ( raspi-config쉘 스크립트에 포함되어 있음 ). 실제로 실행되면 자체 삭제되므로 다시 발생하지 않습니다.

또한 새로 크기가 조정 된 파티션에서 파일 시스템의 크기를 조정합니다.

하나 또는 다른 부분 만 발생해도 피해를 입지 않아야합니다. 첫 번째 경우에는 확대 된 파티션을 채우지 않는 파일 시스템으로 끝나고 두 번째 경우 파일 시스템이 이미 파티션을 채우므로 아무 일도 일어나지 않습니다.

나중에 raspi-config파일 시스템을 확대하는 데 사용 하는 경우 파티션 크기를 즉시 조정 한 다음 init 스크립트를 설정합니다 (이미 언급 한대로).

cmdline.txt첫 번째 파티션의 편집 은 VFAT 파티션이므로 모든 컴퓨터에서 간단합니다. init.d파일을 제거 하려면 ext4 파일 시스템에 액세스하고 편집 할 수있는 시스템이 필요합니다.

대신 카드를 굽기 전에 이미지 파일 자체에 대해 두 작업을 모두 수행 할 수 있습니다. GNU / Linux 시스템에서 Raspbian 이미지를 마운트하고 수정 하려면 여기를 참조하십시오 . 가 Windows 용 병렬 Q & A는 .

이것은 가역적이지만 첫 번째 메커니즘에는 두 번째 메커니즘을 자동으로 스테이징하는 것이 포함되지 않으므로 방금 설명한대로 메커니즘의 두 부분을 모두 다시 배치해야합니다.


  1. 해당 스크립트의 오류 메시지는 루트 파일 시스템의 크기를 조정하지 못했다고 주장함으로써 이러한 용어를 혼동 할 수 있지만, 실제로 실패한 것은 루트 파일 시스템이 있는 파티션의 크기를 조정하는 것 입니다. 하나를 수행해도 다른 하나는 자동으로 수행되지 않습니다.

1
의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 .
Ghanima

@ goldilock의는 사용 중지 init=/usr/lib/raspi-config/init_resize.sh에서 /boot/cmdline.txt우분투가 너무 짝을 모두 자체로 충분한 것 같다에서 작동합니다. 4GB 우분투 메이트 이미지가 32gb sdcard에 플래시되어 파티션 크기가 원래 이미지 크기로 유지됩니다. 또한 /etc/init.d/resizefs_once/etc/rc3.d/S01resizefs_once그나마 존재하는 첫 번째 부팅 후 우분투는 짝짓기에.
sith

확인하기 만하면 cmdline.txtand init.drc3.d파일과 링크를 모두 복원 하면 다음 부팅이 자체적으로 크기를 조정할 raspi-config수 있습니까? 아니면 수동으로 실행 하고 실행합니까?
Oxwivi 2019 년

@Oxwivi 그렇습니다. 나는이 전체 게시물을 명확히하고 끝에 그것에 대해 명시 적으로 언급했습니다.
goldilocks

네 감사합니다. 또한 IDK는 어떤 버전이지만 최소한 최신 버전이므로 외부에서 언급 한 크기 조정 스크립트 참조를 전달하지 않습니다 cmdline.txt. 그러나 Raspbian 이미지를 사용하여 부팅 systemd-nspawn했지만 여전히 cmdline.txt물건 을 제거한 후에 크기 조정을 시도하는 오류 로그가 나타납니다 .
Oxwivi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.