说在前面:
这是我第五次编译内核,分别踩了很多坑。中途问过wz佬,佬让我用qemu。我还是最后换ubuntu虚拟机跑了。现在已经有点emo了。
这篇博客是我第五次的时候回滚快照重开的写的。
注意事项(必看):
4.10 Warty Warthog 2.6.8
5.04 Hoary Hedgehog 2.6.10
5.10 Breezy Badger 2.6.12
6.06 Dapper Drake 2.6.15
6.10 Edgy Eft 2.6.17
7.04 Feisty Fawn 2.6.20
7.10 Gutsy Gibbon 2.6.22
8.04 Hardy Heron 2.6.24
8.10 Intrepid Ibex 2.6.27
9.04 Jaunty Jackalope 2.6.28
9.10 Karmic Koala 2.6.31
10.04 Lucid Lynx 2.6.32
10.10 Maverick Meerkat 2.6.35
11.04 Natty Narwhal 2.6.38
11.10 Oneiric Ocelot 3.0
12.04 Precise Pangolin 3.2 or newer
12.10 Quantal Quetzal 3.5
13.04 Raring Ringtail 3.8
13.10 Saucy Salamander 3.11
14.04 Trusty Tahr 3.13 or newer
14.10 Utopic Unicorn 3.16
15.04 Vivid Vervet 3.19
15.10 Wily Werewolf 4.2
16.04 Xenial Xerus 4.4 or newer
16.10 Yakkety Yak 4.8
17.04 Zesty Zapus 4.10
17.10 Artful Aardvark 4.13
18.04 Bionic Beaver 4.15 or newer
18.10 Cosmic Cuttlefish 4.18
19.04 Disco Dingo 5.0
19.10 Eoan Ermine 5.3
Ubuntu18.04可以支持4.15及以上。
这里干脆更新自己的内核
https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.1.tar.gz
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.1.tar.gz
tar -xvf linux-5.4.1.tar.gz #解压
这时候可以打个快照了。因为我之前的文件还有用,怕之后出问题。
这个操作主要是为了之后如果还想额外加系统调用设置的。这个能把之前编译过的文件做缓存从而加快速度。所以单纯做一次也没必要。
摘自1
摘自2
1. 安装ccache sudo apt-get install ccache
2. 修改ccache环境变量
vim ~/.bashrc
添加如下语句:
# ccache
#user是用户目录,这个目录是用来保存编译信息,可以使用其它目录。
export CCACHE_DIR="/home/user/.ccache"
export CC="ccache gcc"
export CXX="ccache g++"
export PATH="/usr/lib/ccache:$PATH"
3. 更新环境变量使之立即生效
source ~/.bashrc
4. 修改ccache使用的缓存大小,根据你自己的需要配置
ccache -M 6G
5. 检查情况
使用which g++,若输出的为/usr/lib/ccache则成功
注意:
内核态和用户态下的ccache并不相通
用户态下看到的是/usr/lib/ccache/g++
内核态下看到的是/usr/bin/g++
6.使用方法:
编译普通c文件:输入ccache gcc xxx(gcc xxx为正常gcc编译命令)
编译内核: 切换到root,进入到你的Linux源码包
使用make语句时加上CC='ccache gcc'
即make CC='ccache gcc'
(末尾可以加上 -j4 以更快的速度编译,前提cpu为二核)
初次使用时编译时间还没有改变,但是以后再编译时时间就会快很多
(若更改了虚拟机的配置,可能会要重新配置ccache)
对于内存偏小的朋友需要谨慎使用ccache,否则可能会造成物理机无法正常使用。
6.查看ccache信息
ccache -s
修改syscall_64.tbl
cd arch/x86/entry/syscalls/
注意写在注释上面别写在最后!
修改arch/x86/include/asm/syscalls.h
。
vim kernel/sys.c
sudo apt-get install gcc make libncurses5-dev openssl libssl-dev
sudo apt-get install build-essential
sudo apt-get install pkg-config
sudo apt-get install libc6-dev
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install libelf-dev
需要的话可以考虑在这里来个快照了
make menuconfig
make menuconfig
之后选择save
并退出。
之后还要修改一些东西,不然编译途中会出错。
make CC='ccache gcc' -j8 (我开了4个核,所以*2=8) ,编译的时候就可以学其他东西去了。
如果没有ccahe的就直接make -j2,后面的数字取决你的核数*2.
实测4个核1小时跑完。编译完花了36G。
sudo make modules_install
sudo make install
reboot
重启虚拟机,按住shift
选择进入高级选项。看到linux-5.4.1说明内核。
这里我直接按住shift
就直接重启进来了。
#include
#include
#include
int main(){
syscall(335);
return 0;
}
yan@ubuntu:~$ vim test.c
yan@ubuntu:~$ gcc -o test test.c
yan@ubuntu:~$ ./test.out
yan@ubuntu:~$ dmesg
https://blog.csdn.net/weixin_43434136/article/details/117394874
https://blog.csdn.net/zyf2333/article/details/80043152
https://blog.csdn.net/fuyuande/article/details/90485882
https://blog.csdn.net/weixin_48299611/article/details/115563624