UBUNTU-16.04.07和PREEMPT_RT日志
UBUNTU-16.04.07和PREEMPT_RT日志
简单从头记录了在WIN10下安装UBUNTU-16.04.07系统,及安装PREEMPT_RT实时内核补丁的过程。
安装Ubuntu
- 下载上海交大镜像站的Ubuntu桌面版https://mirrors.sjtug.sjtu.edu.cn/ubuntu-cd/16.04/ubuntu-16.04.7-desktop-amd64.iso
- 百度、下载并安装UltraISO来制作U盘启动盘,安装后管理员身份运行。文件–>打开–>选择刚刚下载的.iso,然后在左下方选择插入的U盘,建议提前格式化,菜单栏点启动–>写入硬盘映像,写入方式为“USB-HDD+”(应该是默认的,我没改),点写入即可创建启动盘。
- 磁盘管理中我提前空出了30G的SSD和150G的机械硬盘空闲分区。
- 如果WINDOWS的硬盘模式是RAID而非AHCI,需要改动,这一部分的设置参考了Ubuntu官网论坛,步骤如下:
a. 在WINDOWS中管理员身份运行POWERSHELL,输入命令:bcdedit /set safeboot minimum
b. 重启按F2(不同机器可能不同)进入BIOS,更改为AHCI
c. 继续以WINDOWS安全模式启动,并管理员身份运行POWERSHELL,输入命令:bcdedit /deletevalue safeboot
d. 重启WINDOWS即可完成
- 重启WINDOWS,开机按F12(不同机器可能不同)选择启动项,选择USB启动,然后在跳出的界面选择安装Ubuntu,等待进入Ubuntu安装界面。
- 安装过程中第二步不建议联网,第三步建议都不勾选(下载更新和第三方软件)
- 第四步应该是分区,先前空出的分区会显示为freespace什么的,点击后点击左下角+号,可以选择挂载分区。
我的分区方案是:
\swap 8G (SSD,logic)
EFI 2G (SSD,logic)(也可以不分,和windows boot manager装在一个esp分区里)
\home 150G (机械盘,logic)
\ 30G (SSD,primary)
- 然后安装,等待安装完成。
- 连接无线网,并更新软件包:
sudo apt-get update
后续个人设置(可跳过)
- 设置了中文环境(详细可百度,不需要也可跳过),保留\Documents等文件夹英文名称。
- 配置了FCITX输入法(详细可百度,不需要也可跳过)。
- https://blog.csdn.net/weixin_42232392/article/details/104579687可配置中文环境:
sudo vim /etc/default/locale
LANG="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh"
- 安装了7zip、vim。(sudo apt-get install p7zip vim)
- 安装chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
- https://plumz.me/archives/3867/可取消鼠标加速度
sudo vim /usr/share/X11/xorg.conf.d/90-mouse.conf
Section "InputClass"
Identifier "mouse"
MatchIsPointer "on"
Option "AccelerationProfile" "-1"
Option "AccelerationScheme" "none"
EndSection
(VIM中的操作:i编辑,esc退出编辑,:底部命令行,:w保存,:q退出vim)
sudo vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
##在最后一行添加:
greeter-show-manual-login=true #手工输入登陆系统的用户名和密码
allow-guest=false #不允许guest登录
##若没有设置root:
sudo passwd root
##测试能否登陆root:
su root
##返回用户:
su [用户名]
sudo vim /root/.profile
修改最后一行为:
tty -s && mesg n || true
sudo vim /etc/profile
最后一行添加:
pulseaudio --start --log-target=syslog
sudo vim /etc/default/grub ##修改第一行,windows在第3个就写2
#修改完保存后:
sudo update-grub ##记得更新grub
PREEMPT内核补丁安装
PREEMPT相关资料链接
安装时主要参考的文献,内核补丁的介绍里面也有内链可参考,安装步骤有修改。https://blog.csdn.net/v6543210/article/details/80941906
下载linux内核
- 系统默认的内核为4.15.0-112-generic,这里要去下载有Preempt支持的4.19.25版本内核,地址为清华源,下载下来默认在~\Download中:https://mirror.tuna.tsinghua.edu.cn/kernel/v4.x/linux-4.19.25.tar.xz
- 下载4.19.25对于的补丁包,去官网下载即可:https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patch-4.19.25-rt16.patch.xz
- 在
~\Download
中,打开终端(或cd定位到这里也行),顺序运行以下命令来解压内核包,并安装补丁(操作方法来自PREEMPT官网):
xz -cd linux-4.19.25.tar.xz | tar xvf -
cd linux-4.19.25
xzcat ../patch-4.19.25-rt16.patch.xz | patch -p1
- 在终端中安装必须的软件包:
sudo apt-get install libncurses-dev
sudo apt-get install libssl-dev
sudo apt-get install libelf-dev
安装过程
- (这一步应该可以跳过,请忽略,其他教程说不这样会错,我觉得应该影响不大)
拷贝原内核的.config文件(/usr/src/原内核,需要ctrl+H显示隐藏文件)到linux-4.19.25文件夹中,然后在之前内核包的目录下执行:
make localmodconfig
其中preemption mode选择5,其他按住enter
- linux-4.19.25目录下执行:
make menuconfig
若提示缺少bison和flex,就执行以下命令来安装
sudo apt-get install bison flex
- 终端中出现图形界面,执行一下两部操作,注意图形界面的操作要靠上下左右按键:
进入
Processor type and feature
—>Preemption Model(or General Setup)
选择Fully Preemptible Kernel (RT)
进入Kernel hacking
–>Memory Debugging
—>Check for stack overflows
取消勾选!!
选择保存(save),出现界面默认点ok,然后退出(exit)
- 在linux-4.19.25目录下执行编译,根据自己的CPU核心数选择‘j’后面的数字,我是四核,选择了j8,顺序运行以下命令:
make -j8 ##编译,可能需要很久
sudo make INSTALL_MOD_STRIP=1 modules_install -j8 ##安装
sudo make install -j8 ##安装
sudo update-grub ##更新grub
重启系统
sudo reboot ##重启计算机,并按后面的步骤操作
这一步重启以后应该会跳出以下引导界面,选择第二个Ubuntu高级选项
,进入后找到刚刚安装好的内核Ubuntu,With Linux 4.19.25-rt16
(应该默认在第一行,如果在第一行以后选择UBUNTU就是默认启动这个内核了),Enter即可。
验证是否是启动了实时内核
终端输入uname -a
,得到以下结果,终于成功。
内核测试
下载rt-tests包(apt-get),用cyclictest进行测试,或者自行参考preempt官方示例:https://wiki.linuxfoundation.org/realtime/documentation/howto/applications/application_base。以及rt-tests源码