Hareware

Dual System

在win的基础下安装ubuntu

步骤一:假定硬盘上已有windows系统,在windows系统上进行磁盘空间的压缩,得到free space;若已有free space则可以直接跳过这个操作;win11下则需要先关闭bitlocker

步骤二:制作引导盘,并进行安装(需设置引导启动顺序,部分电脑需关闭安全模式)

步骤三:安装时分盘(一般都用ext4格式)

备注

分区时至少需要根目录和交换空间,其他可不用

拓展资料

从ubuntu卸载windows系统

Hareware

Backlight

设置内核参数解决无法调整亮度的问题

/etc/default/grub
可尝试如下参数
acpi_backlight=video    # use the ACPI video.ko driver
acpi_backlight=vendor   # prefer vendor-specific driver ( e.g.thinkpad_acpi, sony_acpi, etc.) instead of the ACPI video.ko driver.
acpi_backlight=native   # use the device's native backlight mode.
若无法通过echo的方式调整亮度,则尝试
acpi_backlight=none     # disable the ACPI backlight interface.

Battery

Energy Saving

image-20220606003351639

电脑开关机状态

pm-utils console tool
睡眠 suspend to ram / sleep
pm-suspend
休眠 suspend to disk
pm-hibernate
systemd console tool
sleep
systemctl suspend
kernel parameter
sleep
sudo bash -c "echo "mem" > /sys/power/state"

定义唤醒方式

配置休眠

判断是否支持休眠
cat /sys/power/state

Q&A

Bluetooth

hcitool

  • 查看当前蓝牙设备

hcitool dev
Devices:
  hci0 30:E3:7A:1C:FE:E3
  • 配置蓝牙连接

打开设备
sudo hciconfig hci0 up
关闭设备
sudo hciconfig hci0 down
查看附近的蓝牙设备
sudo hcitool lescan
连接某个蓝牙设备
sudo hcitool cc <mac address>

rfkill

用于管理无线设备(tool for enabling and disabling wireless devices)

rfkill

image-20211102120504265

bluetoothctl

bluetoothctl
显示已配对的蓝牙
paired-devices
移除相关的配对
remove <mac_address>
查看/关闭查看附近的蓝牙设备
scan on/off
进行配对
connect <mac_address>

CPU

更改CPU工作模式

安装cpufrequtils
sudo apt install cpufrequtils
设置CPU工作模式
cpufreq-set -g performance
查看本机CPU支持的模式:
sudo cpufreq-info

Device Bind

基于计算机设备端口号的绑定固定名称

步骤一:查看当前串口

ls /dev/ttyUSB*

步骤二:查看串口详细信息

udevadm info /dev/ttyUSB*
img

备注

图中红框处为端口对应的硬件上的USB口 ID

步骤三:创建文件

sudo touch /etc/udev/rules.d/com_port.rules

步骤四:添加内容

ACTION=="add",KERNELS=="{ID}",SUBSYSTEMS=="usb",MODE:="0777",SYMLINK+="{name}"
e.g.
ACTION=="add",KERNELS=="3-3:1.0",SUBSYSTEMS=="usb",MODE:="0777",SYMLINK+="{name}"

备注

其中{ID}为红框处的USB口ID,{name}为该端口别名

udev配置语法

相机端口绑定(/dev/video*)

步骤一:看属性

查看硬件设备生厂商和销售商id
dmesg

udevadm info -a <设备挂载点> | grep id
img img

步骤二:构建规则文档

KERNELS=="video*",  ATTRS{idVendor}=="2a0b", ATTRS{idProduct}=="00db", MODE:="0666", SYMLINK+="camera0"

pl2303无法识别

  • for 20.04 noetic 5.13 / 5.15,暂时智能回退到5.11的内核

Monitor

  • 显示屏的尺寸为对角线的长度,其以英寸为单位,其中1英寸为2.54m

  • 1920*1080这样的分辨率指的是,横、竖的方向上有多少个像素

  • 1920*1080的显示屏,其对角线上的像素为2203个像素,则17.3英寸的显示屏,其PPI(对角线上一个英寸单位的像素个数)为127PPI

英寸

分辨率/像素

PPI

17.3

1920*1080/2203

127

12.5

1920*1080/2203

176

  • 高分辨率/视网膜级别成像配置(details

  • 设置缩放比例

使配置生效
systemctl restart sddm
  • 基于图形化界面配置

sudo apt install arandr
arandr

img

备注

KDE可调用 Display Configuration

  • 基于命令行

令eDP-1屏幕位于HDMI-1屏幕的右边
xrandr --output eDP-1 --right-of HDMI-1

Graphics card

Install for nvidia

  • (recommend)方案一:基于GUI("Software & Updates" application)或者apt安装,会有更好的兼容性

An alternate method of installing the NVIDIA driver was detected. (This is usually a package provided by your distributor.) A driver installed via that method may integrate better with your system than a driver installed by nvidia-installer. Please review the message provided by the maintainer of this alternate installation method and decide how to proceed: The NVIDIA driver provided by Ubuntu can be installed by launching the "Software & Updates" application, and by selecting the NVIDIA driver from the "Additional Drivers" tab.

sudo apt update
查看能用的驱动版本
sudo ubuntu-drivers devices
如果返回空值,则这种方法无效,则需要到官网上进行下载
apt安装显卡驱动
sudo apt-get install nvidia-driver-515
验证(有时需要重启后才能生效)
nvidia-smi
  • 方案二:官网安装包下载

安装一些相关依赖,否则会有warning
sudo apt install pkg-config libglvnd-dev
切换至非图形化界面
sudo systemctl isolate multi-user.target
如显示nvidia-drm正在使用,则关闭该内核模块
sudo modprobe -r nvidia-drm
...其他问题,具体问题具体分析(如要关闭屏蔽nouveau)
nvidia-smi

Uninstall for nvidia

--- 方法一(适用于用安装包安装的)
nvidia-uninstall
--- 方法二(适用于用apt安装)
sudo apt purge nvidia-driver-*
sudo apt autoremove

nouveau

  • nouveau (开源,但功能非常少)和 nvidia driver 都是nvidia的显卡驱动。部分计算机默认使用 nouveau 作为驱动,那么在这些机子上装N卡官网驱动时,就有冲突的问题,需要先关闭nouveau模块(记得update);460+驱动可以在安装时,提供一个选项,替我们完成这一步(相关文件存放于/usr/lib/modprobe.d或者/etc/modprobe.d

  • 判断当前系统有无nouveau模块

可用该指定判断当前系统有无nouveau模块
lsmod | grep nou
  • 重新使用nouveau

删除屏蔽,即移除blacklist下的相关
e.g.
sudo rm /usr/lib/modprobe.d/nvidia-installer-disable-nouveau.conf
sudo rm /etc/modprobe.d/nvidia-installer-disable-nouveau.conf
更新内核配置
sudo update-initramfs -u

识别显卡驱动

sudo update-pciids
lspci | grep -i 'vga'
00:02.0 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
01:00.0 VGA compatible controller: NVIDIA Corporation GA106M [GeForce RTX 3060 Mobile / Max-Q] (rev a1)

安装显卡驱动

限制显卡功率

--persistence-mode= Set persistence mode: 0/DISABLED, 1/ENABLED
sudo nvidia-smi -pm 1
--power-limit= Specifies maximum power management limit in watts.
sudo nvidia-smi -pl 150

集显

  • 禁用集显

方法一:从内核加载层面(grub命令行部分)
nouveau.modeset=0
方法二:将其加入blacklists
blacklist nouveau
options nouveau modeset=0
sudo update-initramfs -u
  • 查看inter gpu使用情况

sudo intel_gpu_top
image-20211129013232309
sudo apt install radeontop
c means color
radeontop -c

切换显卡工作模式

如果是通过apt下载,可以在图形化界面nvidia-setting中进行选取
nvidia-setting
如果使用的是安装包下载的,则需要安装nvidia-prime
sudo apt install nvidia-prime
nvidia / on-demand
sudo prime-select intel
查看当前的工作模式
prime-select query

显式指定集显进行渲染

  • 主要是修改xorg即可(可以安装整个nvdia-driver)

Section "Device"
    Identifier     "Device0"
    Driver         "intel"
    VendorName     "Intel Corporation"
    BusID          "PCI:0:2:0
EndSection

显式指定程序使用独显

需要在混合模式下才生效
__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia <命令行>

显卡模块和显卡驱动版本不一致

二者不同步时:
nvidia-smi
Failed to initialize NVML: Driver/library version mismatch
显示显卡模块在内核中的版本
cat /proc/driver/nvidia/version
VRM version: NVIDIA UNIX x86_64 Kernel Module 510.60.02 Wed Mar 16 11:24:05 UTC 2022
显示驱动包的版本
dpkg -l | grep nvidia-driver
nvidia-driver-510 510.73.05-0ubuntu0.20.04.1 amd64 NVIDIA driver metapackage
一般可以选择重装,若有DKMS时可尝试重启
  • DKMS(Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later?)当内核更新时,显卡驱动也会进行更新,而不用自己再手动去升级了

Q&A

cd /usr/share/nvidia
e.g.
sudo cp nvidia-application-profiles-515.48.07-key-documentation nvidia-application-profiles-key-documentation

Hard disk

  • 文件系统的类型: xfsext4 ...

  • 分区是硬盘的一个存储划分单元,一个硬盘由多个分区组成

  • 分区被格式化,得到特定格式的文件系统后,才能正常使用/被读写

  • 传统应用中,一个 分区 对应一个 文件系统

查看磁盘相关信息

  • 查看文件系统的磁盘利用率

df
-h: human-readable 以可读性强的方式显示
-T: 显示文件系统类型
img
  • 获取存储设备信息

lsblk # ls block device
-f:看详细的信息
img

查看linux支持的文件系统

  • 查看当前linux支持的文件系统

ls -l /lib/modules/$(uname -r)/kernel/fs
  • 查看系统目前已加载到内存中支持的文件系统

cat /proc/filesystem

获取存储设备的分区表类型

sudo parted device_name print
img

备注

dpt对应gdisk命令;mbr对应fdisk命令

图形化分区工具

  • KDE partition manager (for kde)

img

注意

修改完后记得apply

命令行实现U盘挂载

查看设备名 p: (paths) print full device paths
lsblk -p
mount <device_name> <mount_point>

备注

挂载点需已创建(mkdir)

  • 无法粘贴数据到挂载盘

情况一:挂载盘或为只读属性,需修改读写属性和重新挂载

sudo mount -o remount rw <挂载点>
-o: option
--bind: mount --bind <olddir> <newdir> 重新挂载

情况二:文件名不兼容(for windows)

例如linux允许文件名带 : ,win不允许带 : ,因此不能进行粘贴操作

开机自启动挂载

修改 /etc/fstab 配置文档,详细说明可看使用文档 man fstab,查看UUID和type可使用命令行

sudo blkid
  • 有关相关的挂载选项可参考detail

设置硬盘可以执行里面的二值文件
exec: Permit execution of binaries.
defaults:use default options: rw, suid, dev, exec, auto, nouser, and async.

从windows访问linux的ext4文件系统

windows默认不支持ext4文件系统的读写,需要下载软件实现额外的支持

U盘格式化

  • (for KDE):Disks

image-20220104145417626

修复NTFS硬盘

e.g.
ntfsfix /dev/sdb1

NOTE

  • Windows is hibernated, refused to mount:关闭windows的开机快速启动


修复exfat硬盘

exfatfsck /dev/sdb1

dd命令

测试时,dd命令是在try ubuntu下进行的;两个硬盘的型号一致

  • 硬盘与分区

拷贝硬盘
if: src of: dst
dd if=/dev/sdb of=/dev/sdc
拷贝分区
dd if=/dev/sdbc of=/dev/sdcd status=progress
  • 追加压缩功能

dd if=/dev/sdb status=progress | gzip -c > /mnt/backup.img.gz
gunzip -c /mnt/backup.img.gz | dd of=/dev/sdb status=progress

备注

不进行压缩的话,原来硬盘分配多大,现在就是多大(不管有没有利用完)

Hareware info

lspci   # pci接口设备信息
lsusb   # usb设备信息
lshw -c <device_name>  # ls hardware
img
  • 显卡信息显示不完全

img
可先更新数据库
sudo update-pciids

img

  • (for KDE GUI)Info Center

IO device

显示输入设备
xinput
禁用/启动某个输入设备
xinput enable/disable <device_id>
img

Memory

清理缓存

可先将内存数据写入到硬盘中,再清缓存
sync
sudo bash -c "echo 3 > /proc/sys/vm/drop_caches"

Swap Space

查看当前交换空间
(option1) $ free -h
(option2) $ sudo swapon --show
分配空间和构建交换空间
sudo fallocate -l 32G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
触发永久生效
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r
  • 回收交换空间的数据

直接清除(需内存有足够的空间来处理swap的数据)
sudo swapoff -a; sudo swapon -a

Temperature

sudo apt install lm-sensors
watch -n 2 sensors
显示显卡温度
nvidia-smi --query-gpu=temperature.gpu --format=csv

img

Stress Test

  • 测试CPU的相关工具为stress, s-tui

sudo apt install s-tui stress

image-20210907110949467

  • 温度过高:可通过 dmesgjournalctl 查看日志信息(日志等级不一定为err)

mce: CPUx: Package temperature above threshold, cpu clock throttled

  • 测试GPU的相关工具

git clone https://github.com/wilicc/gpu-burn
cd gpu-burn
make
gpu_burn [TIME/s]
gpu_burn 3600

USB

  • 查看设备的usb版本号(2.0 or 3.0)

image-20211203140239039

备注

从外部看,四引脚为2.0,九引脚为USB3.0

image-20211203141044757
  • USB口示意图

preview

Kernel

当无法使用无法识别wifi,声卡模块,或无法调节亮度时,可能是当前的硬件缺乏适配的驱动。可以通过升级内核来升级硬件驱动。

Insatall

version="5.8.0-63-generic"
sudo apt install linux-image-${version} linux-headers-${version} linux-modules-${version} linux-modules-extra-${version}

Version

dpkg --get-selections | grep linux-image

升级内核以解决硬件驱动无法识别的问题

oem:
apt install linux-oem-20.04
hwe: 2022.3.23: 5.13
sudo apt install --install-recommends linux-generic-hwe-20.04

NOTE

前者提供更新的内核支持

  • 一般来说ubuntu的内核对新版的电脑适配较差(表现WIFI模块、显卡模块异常),因此一般都要安装OEM版本

sudo apt update
sudo apt install linux-oem-20.04
sudo apt upgrade

拓展资料

原地升级ubuntu版本

若当前系统没有重要的文件、应用程序保留,建议直接镜像+U盘从头安装,避免还要解决依赖问题,以下以18.04升级到20.04为例,描述涉及的解决方案。未尽事宜,看输出的日志信息而进行针对性的解决。另外原地升级需要较长的时间,若时间紧迫,建议直接重装。升级完后,有些第三方应用程序或驱动(application or driver )可能需要进行重装或升级。例如,重装显卡驱动。

  • 步骤一:删包

有ros时需卸载18版本的ros
sudo apt purge --autoremove ros-$ROS_DISTRO-*
  • 步骤二:删源

删除18用到的第三方源(否则升级系统而升级安装包时,会使用到18的第三方源,例如ppa),最佳实践是只保留ubuntu官方的仓库软件源

sudo rm -rf /etc/apt/sources.list.d
  • 步骤三:升级系统

sudo apt update
sudo apt upgrade
sudo do-release-upgrade

备注

do-release-upgrade 没找到可用的发行版,可以看看是不是 /etc/update-manager/release-upgrades 中禁用了更新;若从16.04升级到20.04,用这种方法,需要经过两次升级(16.04->18.04->20.04);20.04->22.04,也是需要经过两次升级(20.04->21.04->22.04)

拓展资料

image-20211101161245968

内核模块

  • .ko内核模块后缀,一般位于/lib/moudles/$(uname -r)/kernel

常用指令

lsmod       # 查看已加载的内核模块(可显示某个模块被调用的情况)
modinfo <module_name>      # 查看内核模块(包括.ko文件)的描述信息
modprobe <module_name>     # 加载内核模块(自动解决依赖问题)
modprobe -r <module_name>  # unload内核模块(自动解决依赖问题)

img

设置模块自启动

将相关模块放置于配置文档 /etc/modules

img

拓展资料

内核支持的硬件

ubuntu版本

支持的硬件

  • 5.15支持

Alder Lake-P Integrated Graphics Controller

各种网卡 e.g. AX211(5.14+)

构建实时内核

下载内核
mkdir ~/kernel
cd ~/kernel
https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.15.49.tar.gz
tar -xzf linux-5.15.49.tar.gz
wget -c https://cdn.kernel.org/pub/linux/kernel/projects/rt/5.15/patch-5.15.49-rt47.patch.gz
gunzip patch-5.4.78-rt44.patch.gz
打补丁
cd linux-5.15.49/
patch -p1 < ../patch-5.15.49-rt47.patch
获取基础的config文件
cp /boot/config-5.15.0-41-generic .config
安装相关依赖
sudo apt-get build-dep linux
sudo apt-get install libncurses-dev flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf fakeroot
使能ubuntu所有配置项
yes '' | make oldconfig
使能rt_preempt
make menuconfig
  • 配置相关配置文档

Enable CONFIG_PREEMPT_RT
 -> General Setup
  -> Preemption Model (Fully Preemptible Kernel (Real-Time))
   (X) Fully Preemptible Kernel (Real-Time)
Enable CONFIG_HIGH_RES_TIMERS
 -> General setup
  -> Timers subsystem
   [*] High Resolution Timer Support
Enable CONFIG_NO_HZ_FULL
 -> General setup
  -> Timers subsystem
   -> Timer tick handling (Full dynticks system (tickless))
    (X) Full dynticks system (tickless)
Set CONFIG_HZ_1000 (note: this is no longer in the General Setup menu, go back twice)
 -> Processor type and features
  -> Timer frequency (1000 HZ)
   (X) 1000 HZ
Set CPU_FREQ_DEFAULT_GOV_PERFORMANCE [=y]
 ->  Power management and ACPI options
  -> CPU Frequency scaling
   -> CPU Frequency scaling (CPU_FREQ [=y])
    -> Default CPUFreq governor (<choice> [=y])
     (X) performance

Limit User Resource

显示当前的限制状态

ulimit -a

img

修改用户ext磁盘资源

步骤一:修改配置文件 /etc/security/limits.conf ,并重新挂载

img

步骤二:创建quoto index

quotacheck -cum <相关路径>
quotaon -v <相关路径>

步骤三:限制用户配额(交互式)

edquota <user_name>

Monitor

进程

htop(进程)

一般查看当前用户下最占用cpu(P)和内存(M)的进程

  • 命令行

只查看当前用户的进程
htop -u $(whoami)
  • 交互式快捷键

image-20210904001431390

  • 配置项

image-20210904002516344

查看进程树

  • 图形化界面(for KDE)

image-20210910181315174

pstree [user]
-s:查看指定pid的父进程
-u:显示user
-p:显示pid号
-T:隐藏线程
-t:显示线程全称
-a:显示对应的命令行
-g:显示组ID

综合

zenith

  • 可从此处下载相应的deb包(e.g. zenith_0.12.0-1_amd64.deb)

cd ~/application
wget -c https://github.com/bvaisvil/zenith/releases/download/0.13.1/zenith_0.13.0-1_amd64.deb -O /tmp/zenith.deb
sudo dpkg -i /tmp/zenith.deb
  • 启动

zenith
image-20210904004618016

备注

该可执行文件/命令行能快速提供有价值的信息

Repair System

Chroot

  • chroot的作用相当于在系统B(引导盘)执行系统A(受损系统)的可执行文件,以下为使用chroot来修复镜像

挂载系统盘
mount <device_name> <mount_point>
device_name=/dev/sda1 && sudo mkdir -p /mnt/tmp && mount_point=/mnt/tmp
sudo mount ${device_name} ${mount_point} \
&& sudo mount --bind /dev ${mount_point}/dev \
&& sudo mount --bind /proc ${mount_point}/proc \
&& sudo mount --bind /sys ${mount_point}/sys
sudo mount <boot位置> ${mount_point}/boot
切换根目录
sudo chroot /mnt
todo ...
取消挂载
umount ${mount_point}/boot
umount ${mount_point}/sys \
&& umount ${mount_point}/proc \
&& umount ${mount_point}/dev \
&& umount ${mount_point}/

实战

  • apt安装时无法解析域名

修改/etc/resolv.conf,添加DNS
nameserver 223.5.5.5
nameserver 223.6.6.6
  • 只有grub命令行界面

检查是否丢失了ubuntu分区