正题:分为以下几个步骤
1.下载VMware和utunbu压缩包,在虚拟机中打开压缩包并安装utunbu,并且在设置里分配好4G的内存,50G的硬盘,千万不要省空间,因为之后会遇到各种各样的问题,罪魁祸首就是这个内存。然后去google一下基本的Ubuntu操作快捷键
2.进入Linux后把界面分辨率调整一下(之后会遇到menuconfig显示要求多少行×多少列的界面空间,分辨率小的话会显示失败),具体分辨率调整:
进入终端输入xrandr弹出当前显示器的分辨率范围,有几个选项,我的默认是800X600,太小了,
输入 xrandr --size 1440x900(当然自己根据需要调整)
3.接下来就是安装包了:
更新代码 sudo apt-get install update
下载代码 sudo apt-get install libncurses5-dev libssl-dev
sudo apt-get install build-essential openssl
sudo apt-get install zlibc minizip
sudo apt-get install libidn11-dev libidn11
下载内核 我是通过https://www.kernel.org/下载的4.16.12版本的
然后把以root管理权限解压内核到 /usr/src/.
sudo cd /usr/src
sudo tar -xvf linux-4.16.12.tar.xz
4.添加编辑器
sudo apt-get install vim
5.用Vim打开/kernel/sys.c文件,加入linkage.h的头文件,在文件末尾加入要加入的系统调用函数.
拉到最后一行,我加了一个mysystemfunction简单函数,返回a+b*b+c*c*c+d*d*d*d;注意编辑后按esc输入 :wq 保存并退出,接下来的编辑也是如此
添加函数声明,添加系统调用号
注意权限转换,切换成管态才能进去
如图,这是333号,按照上面的函数格式依次输入
6.
编译内核和安装内核.
输入这三条语句
sudo make mrproper
sudo make clean
sudo make menuconfig 这条语句文头提到过,这里如果分辨率不够会报错!,而且要使终端窗口最大化!
5. 根据自己处理器的最大线程数目来编译.
sudo make -j4 (我的电脑是4核4线程),线程越多编译越快!我花了2个小时
7.
编译后安装内核到系统中.
sudo make modules_install
sudo make install
8.重新加载内核
将之前的工作保存后直接重启,重启后点击鼠标进入ubuntu并且迅速按住shift,长按!然后出现以下
稍等片刻,就OK了,但是我遇到了一点问题,就是卡在了
文头提到过,如果内存分配不够将会出问题!
光标运行到 Kernel panic - not syncing: Out of memory and no killable processes 下面一行,一直闪。这时候不要慌,淡定的关机,然后 把虚拟机的内存(安装的时候是默认1G)改成4G
重启之后就解决了。
9.测试
1+2X2+3X3X3+4X4X4X4=288
测试成功!
以上。