Raspberry Pi의 부팅 시간을 개선하는 방법은 무엇입니까?


27

영구적으로 켜지지 않는 내장 가능 원격 응용 프로그램을 만들고 있습니다. 나는 다른 OS 배포판을 가지고 놀았 으며 더 빠른 읽기 속도로 더 나은 SD 카드 를 사용하여 부팅 시간을 크게 줄일 수 있습니다 . 특정 배포판에 고정되어 있지 않으므로 최소한의 Linux 배포판을 사용하는 데 필요한만큼 제거 할 수 있습니다.

(부팅 시간을 개선하기 위해 사람들이 실행 한 벤치 마크를 찾으려고했지만 어려운 수치를 찾지 못했습니다.)

빌드 루트를 사용할 수도 있습니다 (YouTube 비디오 Raspberry Pi-Super Fast Boot Time-Marshmallow Entertainment System 참조 ) ...


이 질문을 끝내려면 투표해야합니다. 그런 다음 사용자는 원래 질문으로 리디렉션되고 더 많은 답변을 추가합니다. 아직 답변으로 표시되지 않은 것입니다.
Piotr Kula

나는 이것에 많은 활동이 있다고 생각하고 있습니다 (시청은 하루가 넘지 않기 때문에 분명히 높지 않습니다). 여기에 대답을 옮길 수 있습니다. 그것은 내가 생각하는 편의상의 문제입니다. 사용자 1 명이 자신의 답변을 옮기는 것과 반대로 모든 투표, 대화 등을 잃어버린 것과 반대로 1 명의 사용자가 자신의 답변을 옮겼습니다. 우리가 어떤 식 으로든 다른 방향으로 가야하는 이유가 있습니까? 난 그냥 대답 다른 사람들이 이동할 수 없습니다 생각, 따라서 우리 잃게 내용 해요, 상관 없어
RPiAwesomeness

이 속는의 폐쇄에 관한 Meta.SE 게시물을 확인 @ppumkin 마십시오 삭제하지 좋은 중복이 SE의 블로그 게시물을 . 나는 그들이 내 이전 요점에 동의한다고 생각합니다. 중복이 아니라면 다른 하나, 또는 끔찍한 품질의 복사 - 붙여 넣기, 그리고 이 하나의 해답 / 활동을 많이 가지고 있기 때문에, 우리는 단지 그들에게 모두 열린 상태로해야한다.
RPiAwesomeness

1
@ppumkin이 점이 삭제되지 않는 한 좋은 점입니다. 필자는 원래 Leave Open을 검토했지만이를 복제본으로 표시하는 것이 올바른 방법이라고 생각합니다. 내가 생각할 수있는 유일한 것은 적어도 복제본보다 표시된 원본에 대해 고품질의 Q / A를 원한다는 것입니다. 확실히 여기에는 해당되지 않습니다.
RPiAwesomeness

1
네, 그렇습니다. 여기에 더 많은 답변이 있습니다. 더 많은 관심을 얻은 것 같습니다. 여기서해야 할 일을 더 잘 알 수 있기 때문에 중재자에게 맡겨야한다고 생각합니다. 어쨌든. 귀하의 답변에 대한 투표권을 확보하는 것이 좋습니다 :) OP가 귀하의 기여에 감사드립니다. +1
Piotr Kula 2016 년

답변:


13

Arch Linux를 Fred가 제안한 기능과 결합하면 일반적으로 빠른 부팅 OS를 가져와야합니다.

OS 부팅 시간을 늦추는 것은

  1. 읽기 / 쓰기 속도가 느립니다.

    당신이 빠른 SD 카드를 사용 그래서 수 있도록, 클래스 10 카드는 실질적으로 더 빨리 클래스 4 카드보다 것이다 . 나는 SD 카드 클래스가 어떻게 작동했는지 오해했으며, 그것은 나의 나쁜 점이라는 의견에서 분명하게 지적되었습니다. 실제로 HD 비디오 및 기타 등등과 같은 대용량 파일 전송의 경우 클래스 10 카드가 클래스 4 카드보다 빠릅니다 . 분명히 클래스 4는 작은 파일에서도 잘 작동합니다. 다시, 내 나쁜, 그러나 이봐, 우리 모두는 또 다시 배우고 있습니다.

  2. 쇠약 한 초기화 순서.

    부팅 단계에서 많은 소프트웨어가 작동하면 부팅 시간이 느려집니다. 더 많은 소프트웨어 시작 == 더 긴 부팅 시간.

    따라서 빠른 부팅이 필요한 경우 가능한 많은 소프트웨어를 초기화 순서에서 잘라내십시오. 기본 부팅 순서가 완료된 소프트웨어를 시작 하여로드를 조금 더 분산 시키는 간단한 스크립트를 만들거나 스크립트가있을 수 있습니다 .

기본적으로 그렇습니다. 아치 리눅스는 아마도 앞서 언급했듯이 Fred가 언급 한 기능과 결합하여 갈 길입니다. 아치는 매우 작은 OS이며 초보자가 사용하기에 가장 좋지 않을 수도 있지만 Linux에 경험이 있다면 사용하십시오. 설치하는 데 필요한 최소값이 제공되므로 설정이 약간 필요 합니다 .

프로젝트가 잘되기를 바랍니다!


3
SD 카드 "클래스"는 임베디드 시스템의 성능을 나타내는 매우 나쁜 지표입니다. "클래스"등급은 시작 스크립트와 같은 작은 파일이 아닌 대량의 연속 파일 전송 (예 : 수백만 화소 디지털 카메라)에 대한 것입니다. 클래스 4 카드는 4K 읽기 및 쓰기 작업에서 100 배 이상 대부분의 클래스 10 카드보다 정기적으로 성능이 우수합니다. IOPS가 좋은 Class 10 카드가 있지만 그 모델은 거의 없습니다.
Ben Voigt

나는 @BenVoigt에 동의합니다-클래스 4를 사용할 때 작은 쓰기와 업데이트는 빠르지 만 클래스 10에서의 큰 전송은 훨씬 좋습니다. 즉각적인 성능을 위해 배터리로 구동되는 RAM 카드를 사용할 수 있기를 바랍니다.
Piotr Kula

죄송합니다. 몰랐습니다. 즉시 해결하겠습니다. 수업이 높을수록 속도가 높다는 것을 이해했습니다. :) 너무 upvotes을위한 D 감사 : 그 밖을 가리키는 주셔서 감사합니다, 나는 뭔가를 배웠다
RPiAwesomeness

내 답변이 다운 보트 된 이유가 궁금합니다. 나는 담당자의 상실을 전적으로 신경 쓰지 않으며, 공감대가 무엇인지를 알고 싶어서 대답을 향상시킬 수 있습니다.
RPiAwesomeness

7

Arch Linux를 사용하는 것이 좋습니다.

정상적인 부팅 시간 5 초 (커널) + 5 초 (사용자 공간까지)가 있으며 systemdinit에 사용 하기 때문에 많은 노력이 필요하지 않습니다 .


2
@goldilocks, raspbian에서도 systemd를 사용할 수 있습니다. 부팅 시간이 절반으로 줄었습니다.
John La Rooy

@JohnLaRooy 알고 싶습니다. 필자는 systemd가 병렬화 할 수 있기 때문에 성능 차이와 기존 init를 비교한다고 가정했지만 쉘 스크립트를 포크하고 해석하지 않아도 시간을 절약 할 수 있습니다.
goldilocks

@goldilocks 나는 동의하지 않고 시도했지만 systemd에 비해 많은 차이를 만듭니다 sysvinit. 내 답변을 참조하십시오 .
Basj

@Basj 더 잘 알고 있습니다. "단일 코어이기 때문에 부팅 시간 측면에서 많은 차이를 만들지 않을 것"이라는 의견을 삭제했습니다. 나는 주로 systemd를 사용하지만 TBH는 부팅 시간에별로주의를 기울이지 않습니다.
goldilocks

7

여기 에 기사를 썼습니다 .

한마디로 :을 사용하십시오 systemd.

전원 코드를 꽂은 후 8 초 이내에 또는 Linux 부팅이 시작된 후 3 초 이내에 RaspberryPi 앱을 쉽게 실행할 수 있습니다 .

예를 들어, 내 서비스는 samplerbox.service다음과 같습니다.

여기에 이미지 설명을 입력하십시오

참고 : 사용자 공간 시간을 필요로하지 않기 때문에 사용자 공간 시간을 최적화하려고하지 않았습니다. 어쨌든 앱이 일찍 시작되므로 앱을 시작한 후 네트워킹 DHCP / IP 기여가 8 초가 걸리더라도 신경 쓰지 않습니다.


4

최적의 솔루션은 부팅시 원하는 대로만 배포하는 배포본을 작성하는 것입니다. 이런 방식으로 최소 시간 보장 ( sinit 과 같은 미니멀 한 init 시스템 사용 ). 또는 Linux 커널 의 suspend to disk ( 최대 절전 모드 ) 기능 사용을 고려할 수 있습니다 . 일단 부팅되면 나중에 일시 중단 및 재개 작업이 매우 빠르며 그 동안 시스템은 완전히 꺼집니다.


3

modprobing 드라이버 대신 정적으로 링크 된 커널을 사용하면 성능이 크게 향상 될 수 있습니다. 커널을 신중하게 구성하고 다시 컴파일하여 다른 최적화를 수행 할 수 있습니다.


1
오랜 세월의 대답에 부딪쳐서 죄송합니다. 그러나 "정적으로 링크 된 커널 사용"에 대한 정보를 더 제공 할 수 있습니까?
Caesar


또한 정적으로 링크 된 커널을 컴파일하려면 'make menuconfig'또는 'make xconfig'를 거쳐 모듈로 선택하는 대신 커널에 필요한 드라이버를 포함시키기 만하면됩니다. 이렇게하면 vmlinuz로 쿠킹되며 부팅시 modprobe 시퀀스를 건너 뛸 수 있습니다. 필요한 경우 커널 모듈을 감지하고로드하는 데 상당한 시간이 걸립니다.
Drunken Code Monkey

답변 주셔서 감사합니다. 유용하게 작동하려면 몇 가지 재현 가능한 단계를 포함시킬 수 있습니까? (같은 것 1) Do this in command line, 2) Do this and this 3) Modify this and this in config.txt 4) Boot, it will take 3.2 seconds! 5) Here is the result of my benchmarks: ...)
Basj

실제로 커널을 다시 컴파일하는 것은 5 단계의 간단한 프로세스가 아닙니다. 웹에서 리눅스 커널을 설정하고 컴파일하는 방법을 보여줄 수있는 방법이 많이 있습니다 ...
Drunken Code Monkey

1

TinyCoreLinux를 사용하십시오 . 빠른 로딩과 정전에도 견딜 수 있도록 만들어졌습니다.


답변 주셔서 감사합니다. 작동하도록 몇 가지 재현 가능한 단계를 포함시킬 수 있습니까? (같은 것 1) Download an image here: +link 2) Flash it on your microSD 3) Modify this and this in config.txt 4) Boot, it will take 3.2 seconds!)
Basj

0

eINIT를 사용하여 부팅 프로세스 속도를 높일 수 있습니다. : http://sourceforge.net/projects/einit/

불행히도 현재 (2016 년 10 월) eINIT 홈페이지는 다음과 같이 말합니다.

eINIT는 Linux 및 FreeBSD 용 / sbin / init 프로그램의 대체 구현이었습니다. 글쎄, 나는 그것이 여전히 있다고 생각하지만, 프로젝트는 수년 동안 보류되었습니다.


우리는하고 informationless과 관련하여 새 정책을 시도하는 링크 전용 여기에 응답 . 이 게시물이 최소한의 답변으로 볼 수있는 정보를 포함하도록 편집되지 않은 경우 48 시간 내에 커뮤니티 위키로 변환되어 커뮤니티에서 수정하는 것을 단순화합니다.
Ghanima

-3

사용하지 않을 커널 모듈을 제거하십시오.


4
이 사이트에 대한 답변에는 제안 된 작업을 수행하는 데 필요한 단계 (로드 된 모듈, 필요한 모듈 및 제거 방법을 결정하는 방법) 및 추가 정보에 대한 참조 및 링크가 포함되어야합니다.
Steve Robillard
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.