시스템 호출을 추가하는 작업이 있기 때문에 Ubuntu 14.04에서 커널 4.19를 컴파일하고 있지만 해당 커널을 시작하려고 하면 오류가 발생합니다.
Kernel panic - not syncing: System is deadlocked on memory
이 메시지가 나타난 후 아무 일도 일어나지 않습니다
- 커널을 여러 번 컴파일하고 모듈을 설치했습니다. 이전 터미널에는 오류가 표시되지 않습니다.
- GParted를 사용하여 광산을 확장
/dev/sda1
하고 스왑 영역을 설정했는데 모든 작업이 완료되었습니다. - 기본 Ubuntu 14.04 커널은 정상적으로 부팅할 수 있습니다. 문제없이 로그인해서 사용할 수 있어요.
내가 사용한 명령은 다음과 같습니다.
sudo cp /boot/config-**** .config sudo make menuconfig # I did not change anything here sudo make -j4 sudo make modules_install sudo make install reboot
시스템 호출의 경우 다음 위치에 매우 간단한 helloworld를 추가합니다
sys.c
.asmlinkage int sys_mysyscall(int arg){printk("hello %d\n",arg);return 0;}
syscalls.h
합계 에 추가했습니다syscall_64.tbl
.
답변1
메모리를 4G로 변경하고 이 문제를 해결했습니다.
Ubuntu 18.04, 커널 4.20.1(안정)을 다운로드했는데 아무것도 변경하지 않고 다시 실행했지만 여전히 동일한 오류가 발생하여 메모리 확장을 다시 시도했는데 작동했습니다.
이전에 1G에서 2G로 변경했는데 작동하지 않았기 때문에 이것을 깨닫지 못했습니다. 이제 모든 것이 정확합니다.
사용:
wjrforcyber@wjr:~$ uname -a
보여주다:
Linux wjr 4.20.1 #1 SMP Fri Jan 11 20:57:27 CST 2019 x86_64 x86_64 x86_64 GNU/Linux
성공!
답변2
Debian을 Proxmox VM으로 설치하려고 할 때도 이 문제가 발생했습니다...
그러나 문제는 단순히 잘못된 데비안 ISO를 다운로드했다는 것입니다. 실제로 amd64 버전이 필요할 때 i386 버전을 다운로드했습니다.
shell을 입력하면 uname -m
스키마 유형이 반환됩니다.