编译的内核 4.19 将无法启动:“内核恐慌不同步:系统在内存上死锁”

wjr*_*ber 5 compiling ubuntu kernel memory deadlock

我正在 Ubuntu 14.04 上编译内核 4.19,因为我有一个添加系统调用的任务,但是当我尝试启动这个内核时出现错误:

Kernel panic - not syncing: System is deadlocked on memory
Run Code Online (Sandbox Code Playgroud)

出现此消息后没有任何反应

启动顺序在死锁错误时停止

  1. 我已经多次编译内核并安装了模块。旧终端中没有显示错误。
  2. 我使用 GParted 来扩大我的/dev/sda1,我已经建立了一个交换区,一切都完成了。
  3. 库存 Ubuntu 14.04 内核启动良好。我可以顺利登录并使用。
  4. 我使用的命令:

    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
    
    Run Code Online (Sandbox Code Playgroud)
  5. 对于系统调用,我只是在以下文件中添加了一个非常简单的 helloworld sys.c

    asmlinkage int sys_mysyscall(int arg){printk("hello %d\n",arg);return 0;}
    
    Run Code Online (Sandbox Code Playgroud)

    我已将其添加到syscalls.hand 中syscall_64.tbl

wjr*_*ber 5

我把内存改成4G就解决了问题;

我下载了 Ubuntu 18.04,内核 4.20.1(稳定版),我没有更改任何内容并再次运行它,仍然出现相同的错误,所以我再次尝试扩大内存,它有效。

我没有意识到这一点,因为我之前已经将其从 1 G 更改为 2 G,但是没有用,现在一切正常。

用:

wjrforcyber@wjr:~$ uname -a
Run Code Online (Sandbox Code Playgroud)

表明:

Linux wjr 4.20.1 #1 SMP Fri Jan 11 20:57:27 CST 2019 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

成功!