升级内核,使用CJKTTY内核等.
root # emerge --sync
root # emerge --ask --update --with-bdeps=y sys-kernel/gentoo-sources
root # eselect kernel list
root # eselect kernel set num
root # cd /usr/src/linux
#保持干净源码
root # make clean
root # make mrproper
root # make distclean
#使用旧内核配置,所有新的配置选项设置为推荐(即默认)值
root # make olddefconfig
#查看微调内核配置
root # make menuconfig
#重新安装外部内核模块
root # make modules_prepare
#编译
root # make -j6
root # make headers -j6
#可选择安装或者不安装header
root # make headers_install
#安装modules到/lib/modules下
root # make modules_install
#安装内核到/boot下
root # make install
#安装initramfs到/boot下,需先使用eselect kernel set num 选择相对应的内核
root # genkernel --lvm --mdadm --install initramfs
#使用grub2
root # grub-mkconfig -o /boot/grub/grub.cfg
root # emerge -av @module-rebuild
root # emerge -av @x11-module-rebuild
#我安装这个,编译内核时不使用make headers_install
root # emerge -av =sys-kernel/linux-headers-x.xx
make config - 纯文本界面 (最常用的选择)。
make menuconfig - 基于文本彩色菜单和单选列表。这个选项可以加快开发者开发速度。需要安装ncurses(ncurses-devel)。
make nconfig - 基于文本的彩色菜单。需要安装curses (libcdk5-dev)。
make xconfig - QT/X-windows 界面。需要安装QT。
make gconfig - Gtk/X-windows 界面。需要安装GTK。
make oldconfig - 纯文本界面,但是其默认的问题是基于已有的本地配置文件。
make silentoldconfig - 和oldconfig相似,但是不会显示配置文件中已有的问题的回答。
make olddefconfig -和silentoldconfig相似,但有些问题已经以它们的默认值选择。
make defconfig - 这个选项将会创建一份以当前系统架构为基础的默认设置文件。
make ${PLATFORM}defconfig - 创建一份使用arch/$ARCH/configs/${PLATFORM}defconfig中的值的配置文件。
make allyesconfig - 这个选项将会创建一份尽可能多的问题回答都为‘yes’的配置文件。
make allmodconfig - 这个选项将会创建一份将尽可能多的内核部分配置为模块的配置文件。
make allnoconfig - 这个选项只会生成内核所必要代码的配置文件。它对尽可能多的问题都回答no。这有时会导致内核无法工作在为编译该内核的硬件上。
make randconfig - 这个选项会对内核选项随机选择。 不知道做什么用途的 ^_^
make localmodconfig - 这个选项会根据当前已加载模块列表和系统配置来生成配置文件。
make localyesconfig - 将所有可装载模块(LKM)都编译进内核。
#我喜欢用精简的方式,用 localmodconfig 生成配置.config, 使用此方法前,请插上所有需要使用的设备,自 2.6.32 版本内核开始,可以使用 localmodconfig 命令创建 .config 文件。当前内核没有被使用的选项都会被禁用。也就是说,只会启用当前在使用的选项。虽然这个方法可以生成一个非常精简高效的内核,也是有缺点的,例如无法支持新硬件、外围设备或其它功能。
root # zcat /proc/config.gz > .config
root # make localmodconfig
或者
root # lsmod > /tmp/mylsmod
root # make LSMOD=/tmp/mylsmod localmodconfig
#对比内核配置
root # /usr/src/linux/scripts/diffconfig .config.working .config.default > .config.diff
#中文补丁内核
root # cd /usr/src
root # mkdir linux-patches
root # cd linux-patches/
root # git clone https://anongit.gentoo.org/git/proj/linux-patches.git ./linux-patches-4.19
root # cd linux-patches-4.19/
root # git checkout 4.19
root # cd ..
root # git clone https://anongit.gentoo.org/git/proj/linux-patches.git ./genpatches-misc
root # cd genpatches-misc/
root # git checkout genpatches-misc
root # ln -s /usr/src/linux-patches/genpatches-misc/scripts/* /usr/local/bin/
root # cd /usr/src
root # unzip linux-cjktty-4.19-utf8.zip -d /usr/src/
root # mv linux-cjktty-4.19-utf8 linux-4.19.86-cjktty-systemd
#补丁linux-patches不是全部都应用,比如不同gcc版本的只保留相应版本的补丁
root # patch -p1 -N -d /usr/src/linux-4.19.86-cjktty-systemd/ < /usr/src/linux-patches/linux-patches-4.19/*.patch >patch.log 2>&1
#以上命令如果出现“模糊的重定向”错误,可能与bash功能有关,可以切换到zsh下操作
root # find . -name "*.rej"
#以上命令如果没有发现有.rej,即可编译内核
#拉取远程仓库文件
root # git remote -v
root # git remote update
root # git checkout 4.19
root # git pull
本文作者是一位开源理念的坚定支持者,所以本文内容遵照开源的精神发布。
无担保:本文作者不保证此文内容准确无误,亦不承担任何由于使用此文档所导致的损失。
自由使用:任何人都可以自由的阅读/链接/打印此文档,无需任何附加条件。
名誉权:任何人都可以自由的转载/引用/再创作此文档,但必须保留作者署名并注明出处。
其他作品
本文作者十分愿意与他人分享劳动成果,如果你对我的其他作品有兴趣,可以在如下位置查看现有的作品集:
Tim 作品集 [ https://tiimmm.com/ ]
联系方式
由于作者水平有限,因此不能保证此文内容准确无误。如果你发现了此文中的错误(哪怕是错别字也好),请来信指出,任何提高此文质量的建议我都将虚心接纳。
Email: tiimmm dot chen at gmail dot com
网站制作者:Author:tiimmm dot chen at gmail dot com, Welcome to email for discussion!