내가 만든 테스트 커널을 사용해 리눅스 커널을 업데이트하는 과정

내가 만든 테스트 커널을 사용해 리눅스 커널을 업데이트하는 과정

배경

제가 실험하고 있는 Star Five VisionFive 2 SBC에는 Debian Linux가 탑재되어 있습니다. VisionFive 2는 RISC-V SBC이며 Star Five는 코어를 구축하는 데 필요한 모든 자료가 포함된 Github 저장소를 제공합니다.

SD 카드에 적합한 이미지를 만드는 방법에 대한 지침은 다음을 참조하세요.StarFive Debian 이미지 빌드. 실제 소스 저장소는 다음 위치에 있습니다.Github - 스타 Five-tech/VisionFive2.

SD 카드용 이미지를 만들었고 모든 것이 기사에 설명된 대로 작동합니다.VisionFive 2 RISC-V - Linux 커널 구축, 제가 ​​몇 달 전에 쓴 글입니다. Apache2 웹 서버와 같은 다른 많은 부분을 추가했는데 제대로 작동하는 것 같습니다.

저는 Ubuntu를 빌드 환경으로 사용하여 Windows 10에서 WSL을 사용하고 있습니다.

VisionFive 2는 u-boot대신 로더를 사용합니다 GRUB. 구매한 VisionFive 2 번들과 함께 제공되는 USB/TTY 어댑터를 사용하여 VisionFive 2 콘솔에 액세스할 수 있습니다. 저는 OrangePi 5 Plus gtkterm에 연결된 /dev/ttyUSB0Linux에서 애플리케이션을 사용하여 gtkterm세션을 호스팅하고 있습니다 rsh.

명확하게 말하면 Windows 11 시스템에서 WSL을 사용하여 이미지를 빌드하고 전송하고, OrangePi 5에서 Linux를 사용하여 VisionFive 2의 콘솔 출력을 볼 수 있습니다. Windows 11은 USB/TTY를 지원하지 않기 때문입니다. 인식하고 싶은 어댑터가 있지만 Linux에서는 인식할 수 있습니다. gtkterm이 Stackoverflow 게시물에 명시된 대로 초기 문제에 직면했습니다 .Ubuntu 10.10(Maverick Meerkat)에서 터미널을 USB 장치에 직렬로 연결하는 방법은 무엇입니까?

질문: Linux 커널을 테스트하기 위한 다음 절차가 올바른가요?

이제 일부 변경 사항을 적용하여 현재 Linux 커널 버전의 소스 코드에서 구축한 테스트 커널로 Linux 커널을 업데이트하고 싶습니다. 다음과 같은 과정을 사용했는데 정말 좋은 과정인지는 잘 모르겠습니다.

  • Linux 커널을 편집하여 다음으로 변경 Makefile하십시오 .viSUBLEVEL=0SUBLEVEL=11
  • 파일을 생성한 커널을 다시 빌드합니다.linux-image-5.15.11-starfive_5.15.11-starfive-8_riscv64.deb
  • psftp유틸리티를 사용하여 VisionFive 2 SBC에 파일을 저장하세요.
  • PuTTY명령 셸을 열고 파일을 저장한 폴더로 이동 합니다 .deb.
  • 사용된sudo apt install ./linux-image-5.15.11-starfive_5.15.11-starfive-8_riscv64.deb
  • VisionFive 2를 다시 시작 sudo reboot하고 기도하세요.

이것은 잘 작동하는 것 같습니다.

후속 질문:Linux 커널을 업데이트하려면 버전 번호를 항상 변경해야 합니까?

결과

이제 이 작업을 수행하면 sudo ls -l /boot다음 파일 목록이 표시됩니다.

user@starfive:~$ sudo ls -l /boot
[sudo] password for user:
total 43672
-rwx------ 1 root root 4455561 Oct 30 05:12 System.map-5.15.0-starfive
-rwx------ 1 root root 4461300 Feb 19 14:00 System.map-5.15.11-starfive
-rwx------ 1 root root  213287 Oct 30 05:12 config-5.15.0-starfive
-rwx------ 1 root root  212806 Feb 19 14:00 config-5.15.11-starfive
drwx------ 4 root root    2048 Oct 30 06:33 dtbs
drwx------ 2 root root    2048 Feb 19 14:17 extlinux
-rwx------ 1 root root 9226555 Feb 19 13:50 initrd.img-5.15.0-starfive
-rwx------ 1 root root 9226555 Feb 19 14:17 initrd.img-5.15.11-starfive
-rwx------ 1 root root     406 Oct 30 01:21 uEnv.txt
-rwx------ 1 root root 8478959 Oct 30 05:12 vmlinuz-5.15.0-starfive
-rwx------ 1 root root 8428381 Feb 19 14:00 vmlinuz-5.15.11-starfive
user@starfive:~$

대신 명령 uname -a이 표시됩니다 .5.15.11-starfive5.15.0-starfive

user@starfive:~$ uname -a
Linux starfive 5.15.11-starfive #8 SMP Mon Feb 19 14:00:22 EST 2024 riscv64 GNU/Linux
user@starfive:~$

Makefile생성된 파일로 위 프로세스를 시도했을 때 linux-image-5.15.11-starfive_5.15.11-starfive-8_riscv64.debSBC에 나열된 내용에 /boot파일의 시간 날짜 스탬프가 vmlinuz-5.15.0-starfive변경되지 않은 것으로 나타났기 때문에 Linux 버전을 변경했습니다 . System.map-5.15.0-starfive설치 중에 파일이 교체되지 않는다는 설치 오류 도 표시됩니다 .

이제 내 디렉토리 /boot에 두 가지 버전의 Linux 커널이 있는 것 같습니다.

VisionFive 2를 다시 시작하고 콘솔에 표시된 로그를 관찰하면 기본 설정으로 계속하기 전에 이미지 목록이 표시되는 동안 몇 초 동안 일시 중지되는 u-boot것을 볼 수 있습니다 . u-boot기본값은 내 버전인 것처럼 보이지만 원래 버전을 선택할 수 있으며 그렇게 하면 장치가 완전히 부팅되고 원격 셸을 사용합니다 rsh -l user starfive(VisionFive 2의 호스트 이름이 starfive내 LAN에 표시됨). uname원본을 나타내는 이미지입니다.

user@starfive:~$ uname -a
Linux starfive 5.15.0-starfive #1 SMP Mon Oct 30 09:12:59 UTC 2023 riscv64 GNU/Linux
user@starfive:~$ 

부록 I: 테스트 Linux 버전 제거

제가 한 첫 번째 단계는 VisionFive 2를 다시 시작하고 gtkterm콘솔에 세션을 연결하는 것이었고 u-boot사용 가능한 이미지 목록이 표시되면 원본 이미지를 선택했습니다. 그런 다음 명령을 사용하여 확인하면 장치가 해당 이미지에서 부팅됩니다 uname.

다음에 언급된 절차를 사용하십시오.최근에 설치된 패키지를 제거하거나 삭제하는 방법설치된 테스트 버전을 제거했습니다. 먼저 apt list "*starfive*"Show Linux Image Installed Packages 명령을 사용하여 패키지 이름을 확인했습니다. 그런 다음 sudo apt remove테스트 버전의 패키지 이름을 지정했습니다 .

장치를 다시 시작하고 콘솔을 확인했는데 표시된 메뉴에 u-boot더 이상 내 테스트 빌드가 나열되지 않았습니다. 기본 시작을 허용하기 위해 어떤 입력도 입력하지 않았습니다. /boot으로 확인하면 sudo ls -l /boot테스트 빌드 이미지가 더 이상 존재하지 않습니다. 이 명령을 사용하면 uname-a원본 이미지 이름과 날짜가 10월 30일로 표시됩니다.

관련 정보