저는 우분투 배포판용 PREEMPT_RT 커널을 설치하려고 합니다. 이것이 제가 개발 중인 로봇의 요구 사항이기 때문입니다. 하지만 무엇을 하든 커널을 컴파일할 때 오류가 발생합니다. 질문에 오류 메시지를 포함하고 전체 터미널 출력에 대한 링크를 제공했습니다. 저는 Linux에 익숙하지 않기 때문에 다음과 같은 제조업체의 설정 가이드를 따랐습니다.
curl -SLO https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.6.19.tar.xz
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/5.6/older/patch-5.6.19-rt12.patch.xz
xz -d linux-5.6.19.tar.xz
xz -d patch-5.6.19-rt12.patch.xz
tar xf linux-5.6.19.tar
cd linux-5.6.19
patch -p1 < ../patch-5.6.19-rt12.patch
make oldconfig
구성에서는 완전 선점형 코어(RT)(PREEMPT_RT_FULL)를 선점 모델로 선택하고 다른 모든 설정은 그대로 둡니다.기본.
fakeroot make -j4 deb-pkg
dpkg-buildpackage: 오류: fakeroot -u debian/rules clean 하위 프로세스가 종료 상태 1 make를 반환했습니다.2: *** [scripts/Makefile.package:77: deb-pkg] 오류 1 make: *** [Makefile:1429: deb-pkg] 오류 2
모든 단자 출력여기
내가 사용하려고 하면
sudo make -j4 deb-pkg
만들다삼: *** [debian/rules:6: build] 오류 2 dpkg-buildpackage: 오류: debian/rules build 하위 프로세스가 종료 상태 2 make를 반환했습니다.2: *** [scripts/Makefile.package:77: deb-pkg] 오류 2 make: *** [Makefile:1429: deb-pkg] 오류 2
모든 터미널 출력여기
이것이 작동하지 않을 때 답변에 제공된 단계를 따라해 보았습니다.이것질문
curl -SLO https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.6.19.tar.gz
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/5.6/older/patch-5.6.19-rt12.patch.gz
tar xvzf linux-5.6.19.tar.gz
cd linux-5.6.19
gzip -cd ../patch-5.6.19-rt12.patch.gz | patch -p1 --verbose
make menuconfig
make -j4
sudo make modules_install -j4
sudo make module_install -j4 sed: 모듈을 읽을 수 없습니다. 순서: 해당 파일이나 디렉터리가 없습니다. make: *** [Makefile:1316:현대의] 오류 2
sudo make modules -j4
sudo make modules_install -j4
makemodules 명령을 사용하면 오랜 시간 동안 컴파일되고 성공적으로 종료되지만, module_install을 다시 실행하면 오류 메시지가 나타납니다.
cp: 'modules.buildin'을 stat할 수 없습니다: 해당 파일이나 디렉터리가 없습니다 make: *** [Makefile:1317:현대의] 오류 1
다음에 무엇을 시도해야할지 모르겠습니다. 다른 커널 버전과 다른 운영 체제(Ubuntu 18.04 및 20.04)를 시도했지만 모두 동일한 오류가 발생했습니다. 제가 받은 지침은 매우 명확하고 간단해 보였습니다. 그래서 제가 뭔가 잘못하고 있는 것인지, 아니면 하드웨어 비호환성 또는 그와 같은 특성이 있는 것인지 궁금합니다. 참고로 저는 현재 Ubuntu 20.04.02, 커널 5.8.0-53-generic을 실행하고 있습니다.하드웨어. 이 문제의 원인이 무엇인지 아는 사람이 있습니까?
추신: 이것은 이 사이트의 첫 번째 질문입니다. 질문 형식에 대한 피드백을 주시면 감사하겠습니다(정보가 너무 많음/정보가 너무 적음/관련성 등). 방금 터미널에서 제공한 모든 정보를 추가했는데 무엇이 도움이 될지 쓸모가 있을지 잘 모르겠습니다.
답변1
나는 주로 다음을 기반으로 Ubuntu 20.04에서 PREEMPT-RT 커널을 구축할 수 있었습니다.이 가이드다음과 같이:
sudo apt install build-essential git libssl-dev libelf-dev flex bison
이 버전의 커널 소스 코드와 패치를 다운로드하세요:
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.143.tar.xz
wget https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.4/patch-5.4.143-rt64-rc2.patch.xz
압축을 풀고 패치를 적용합니다.
tar -xf linux-5.4.143.tar.xz
cd linux-5.4.143
xzcat ../patch-5.4.143-rt64-rc2.patch.xz | patch -p1
구성 및 요청 시선점 모델선택하다완전 선점형 커널. 나머지는 기본값을 수락합니다.
cp /boot/config-5.4.0-81-generic .config
make oldconfig
.config
파일을 편집 하고 CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"
다음으로 변경하십시오.CONFIG_SYSTEM_TRUSTED_KEYS=""
커널을 빌드합니다:
make -j8 deb-pkg
생성된 패키지를 설치한 후 시스템을 다시 시작합니다.
sudo dpkg -i ../linux-headers-5.4.143-rt64-rc2_5.4.143-rt64-rc2-1_amd64.deb ../linux-image-5.4.143-rt64-rc2_5.4.143-rt64-rc2-1_amd64.deb ../linux-libc-dev_5.4.143-rt64-rc2-1_amd64.deb
다시 시작하면 다음과 같은 내용을 볼 수 있습니다.
# uname -a
Linux vod 5.4.143-rt64-rc2 #1 SMP PREEMPT_RT Tue Sep 7 20:19:55 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
이것가이드몇 가지 다른 단계가 제안되었지만 아직 테스트하지는 않았습니다.