티스토리 뷰
728x90
1. 24.04에서는 빌드 안됨 - 아래의 에러를 내면서 빌드되지 않는다.
/home/pilseong/practice/kernel/linux/drivers/ata/libahci.c: In function ‘ahci_led_store’:
/home/pilseong/practice/kernel/linux/include/linux/compiler_types.h:334:45: error: call to ‘__compiletime_assert_358’ declared with attribute error: BUILD_BUG_ON failed: sizeof(_s) > sizeof(long)
334 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^
/home/pilseong/practice/kernel/linux/include/linux/compiler_types.h:315:25: note: in definition of macro ‘__compiletime_assert’
315 | prefix ## suffix(); \
| ^~~~~~
/home/pilseong/practice/kernel/linux/include/linux/compiler_types.h:334:9: note: in expansion of macro ‘_compiletime_assert’
334 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
/home/pilseong/practice/kernel/linux/include/linux/build_bug.h:39:37: note: in expansion of macro ‘compiletime_assert’
39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
| ^~~~~~~~~~~~~~~~~~
/home/pilseong/practice/kernel/linux/include/linux/build_bug.h:50:9: note: in expansion of macro ‘BUILD_BUG_ON_MSG’
50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
| ^~~~~~~~~~~~~~~~
/home/pilseong/practice/kernel/linux/include/linux/nospec.h:58:9: note: in expansion of macro ‘BUILD_BUG_ON’
58 | BUILD_BUG_ON(sizeof(_s) > sizeof(long)); \
| ^~~~~~~~~~~~
/home/pilseong/practice/kernel/linux/drivers/ata/libahci.c:1143:23: note: in expansion of macro ‘array_index_nospec’
1143 | pmp = array_index_nospec(pmp, EM_MAX_SLOTS);
| ^~~~~~~~~~~~~~~~~~
CC [M] drivers/w1/masters/ds1wm.o
make[3]: *** [/home/pilseong/practice/kernel/linux/scripts/Makefile.build:289: drivers/ata/libahci.o] Error 1
make[2]: *** [/home/pilseong/practice/kernel/linux/scripts/Makefile.build:552: drivers/ata] Error 2
2. 20.04를 설치해서 사용해야 가능함. 빌드할 커널과 유사한 버전의 리눅스에서 빌드해야 빌드 실패를 줄일 수 있다. 라이브러리 호환성 문제로 빌드가 되지 않는 경우가 아주 많다.
3. 최신 x86버전을 라즈베리 4에 설치했는데, 빌드를 보니 64비트가 설치되어 있는 황당한 경우가 있었다. 빌드 시에 아키텍처 확인이 필수
4. 20년 5월 빌드를 설치하면 wifi 가 붙었다가 떨어지는 문제가 있다. 2020년 12월 버전의 경우 문제가 발생하지 않은다(커널 5.15)
Index of /raspios_armhf/images/raspios_armhf-2020-12-04 (raspberrypi.com)
5. 커널을 install 할 때 빌드한 zImage 파일을 라즈베리 microSD에 복사해야 한다. 아래의 경우는 boot 파티션이 sda1으로 되어 있다. 커널을 빌드할 경우 zImage라는 이미지가 생성되는데 32비트의 경우 zImage, 64비트의 경우 Image를 생성한다.
pilseong@pilseong-Standard-PC-Q35-ICH9-2009:~/practice/kernel/out$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 4K 1 loop /snap/bare/5
loop1 7:1 0 63.3M 1 loop /snap/core20/1828
loop2 7:2 0 346.3M 1 loop /snap/gnome-3-38-2004/119
loop3 7:3 0 46M 1 loop /snap/snap-store/638
loop4 7:4 0 49.9M 1 loop /snap/snapd/18357
loop5 7:5 0 91.7M 1 loop /snap/gtk-common-themes/1535
loop6 7:6 0 38.8M 1 loop /snap/snapd/21759
loop7 7:7 0 64M 1 loop /snap/core20/2318
loop8 7:8 0 349.7M 1 loop /snap/gnome-3-38-2004/143
sda 8:0 1 29.7G 0 disk
├─sda1 8:1 1 256M 0 part /media/pilseong/boot
└─sda2 8:2 1 29.5G 0 part /media/pilseong/rootfs
sr0 11:0 1 1024M 0 rom
vda 252:0 0 100G 0 disk
├─vda1 252:1 0 512M 0 part /boot/efi
├─vda2 252:2 0 1K 0 part
└─vda5 252:5 0 99.5G 0 part /
5-1 하고 싶은 말은 boot 파티션에는 여러 버전의 kernel.img가 있을 경우가 많다. 라즈베리 4B 같은 경우 32비트의 확장인터페이스를 지원하므로 kernel7l.img 파일이 부팅시에 사용되므로 아래처럼 zImage를 kernel7l.img 로 복사해야 정상적인 커널이 사용된다.
pilseong@pilseong-Standard-PC-Q35-ICH9-2009:~/practice/kernel/out$ sudo cp mnt/boot/kernel7l.img mnt/boot/kernel7l-backup.img
pilseong@pilseong-Standard-PC-Q35-ICH9-2009:~/practice/kernel/out$ ll arch/arm/boot/
total 22580
drwxrwxr-x 4 pilseong pilseong 4096 6월 16 10:45 ./
drwxrwxr-x 15 pilseong pilseong 4096 6월 16 10:39 ../
drwxrwxr-x 2 pilseong pilseong 4096 6월 16 10:45 compressed/
drwxrwxr-x 3 pilseong pilseong 12288 6월 16 10:37 dts/
-rwxrwxr-x 1 pilseong pilseong 22360140 6월 16 10:45 Image*
-rw-rw-r-- 1 pilseong pilseong 109 6월 16 10:45 .Image.cmd
-rwxrwxr-x 1 pilseong pilseong 7070472 6월 16 10:45 zImage*
-rw-rw-r-- 1 pilseong pilseong 136 6월 16 10:45 .zImage.cmd
pilseong@pilseong-Standard-PC-Q35-ICH9-2009:~/practice/kernel/out$ sudo cp arch/arm/boot/zImage mnt/boot/kernel7l.img
pilseong@pilseong-Standard-PC-Q35-ICH9-2009:~/practice/kernel/out$ sudo umount mnt/boot
pilseong@pilseong-Standard-PC-Q35-ICH9-2009:~/practice/kernel/out$ sudo umount mnt/root
728x90
'기록' 카테고리의 다른 글
VMWare Workstation Pro 설치 (2) | 2024.11.04 |
---|---|
리눅스 gedit 문법 하이라이트 asm-intel.lang 설정 (0) | 2024.06.09 |
Old Linux : 우분투 7.04 Feisty Fawn VirtualBox7 부팅 안될 때 (0) | 2024.06.08 |
TypeScript Record와 keyof 설명 (0) | 2024.05.01 |
nginx : 도커 이미지 기본 forwarding (0) | 2024.04.04 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
TAG
- 상속
- Spring
- 로그인
- Validation
- RestTemplate
- form
- spring boot
- 매핑
- Rest
- Spring Security
- 스프링부트
- 스프링
- XML
- 외부파일
- crud
- one-to-one
- login
- hibernate
- MYSQL
- Angular
- Security
- 자바
- 설정
- Many-To-Many
- 설정하기
- WebMvc
- jsp
- 하이버네이트
- one-to-many
- mapping
250x250