0%

本文记录了一些在Arch Linux环境下的安装、配置和使用方法,以备不时查阅。文中的常用工具仅对个人而言,请读者酌情使用。

系统的基本安装

系统安装的教程可以考虑阅读**官方文档**,这里仅做简述。

系统安装包括硬盘分区,基本的软件系统安装和配置,bootloader网络工具的安装。

分区时候应注意是否是双系统,如果都是EFI启动的话,注意不要设置独立的EFI分区,而是应该将Windows的EFI分区嵌入Linux的/boot分区下。如我的分区情况如下:

1
2
3
4
5
6
7
8
9
10
11
12
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
nvme1n1 259:0 0 953.9G 0 disk
├─nvme1n1p1 259:2 0 14.9G 0 part [SWAP]
├─nvme1n1p2 259:3 0 513M 0 part /boot
└─nvme1n1p3 259:4 0 938.5G 0 part /
nvme0n1 259:1 0 477G 0 disk
├─nvme0n1p1 259:5 0 499M 0 part
├─nvme0n1p2 259:6 0 100M 0 part /boot/EFI
├─nvme0n1p3 259:7 0 16M 0 part
├─nvme0n1p4 259:8 0 241.4G 0 part
├─nvme0n1p5 259:9 0 590M 0 part
└─nvme0n1p6 259:10 0 234.4G 0 part

当然,需要安装的os-prober应在重启后进入硬盘系统后再操作,才能正确识别Windows 10。

要安装的基本软件系统包括basebase-devellinuxlinux-firmware等。一般在使用pacstrap时,可以顺手讲vimemacs安装上,以替代不好用的nano。然后通过

1
$ genfstab -U /mnt >> /mnt/etc/fstab

生成系统启动时需要挂载的硬盘表。然后通过

1
$ arch-chroot /mnt

进入硬盘系统,并进行时区、语言、用户和网络等配置。最后一步是安装引导器,即bootloader,一般在PC桌面环境我选择grub。经过简单配置后关机,拔掉U盘并进入硬盘系统。

重启后,可以先连接网络,并安装图形界面,常见的有KDE、GNOME、XFCE和LXDE等。具体配置视个人情况而定,我的常用桌面环境是基于GNOME的,并使用networkmanager管理网络。

GNOME的常用插件

通过Tweaks可以极大程度上地定制自己喜欢的GNOME界面并添加提高生产力的插件。

  • gnome-shell-extension-gsconnect 局域网内连接Android设备的插件,共享消息、文件、文件夹和互控,很便捷,可以多设备间互传,不只局限于两设备。
  • gnome-shell-extension-appindicator-git 收集各种常驻程序在顶栏。
  • kimpanel 给fcitx5暂时接锅的插件,因为fcitx5在基于wayland的软件如Libreoffice上不显示预选栏`,通过这个插件可以缓解。
  • refresh-wifi 提供在顶栏选择Wi-Fi时的刷新按钮。

GNOME的主题

主题这里选择的是Arc-Darker,图标选择的是Numix-Circle

生产力工具

  • shell:zshohmyzsh的配置。
  • 文本编辑:vimamix/vimrc的配置。
  • 输入法:fcitx5 新一代的fcitx,丝滑体验。缺陷是一些界面(比如Steam)没有预选框。
  • 浏览器:chromium 开源的chrome,当然也可以选择使用chrome
  • 网盘:rclone 可以挂载各类网盘(包括谷歌网盘和微软OneDrive等),并通过脚本自启动。
  • 截图:flameshot 非常好用的截图工具,常驻即可。
  • 写作:typoraMarkdown使用的工具,比如这篇就是用typora写的……
  • 电子书:calibre 管理电子书的软件,支持很多格式,包括azw3、epub、pdf和txt等,但我只用来转换格式。
  • 下载软件:ugetdeluge,分别支持普通链接下载和种子下载。
  • 听歌:spotify 好用的全平台听歌软件。
  • 编码:vscodium 开源版本的vscode ,当然也可以选择使用vscode
  • 设计电路板:KiCAD 开源的电路板设计工具,支持三大主流桌面系统。除此之外我还装了eagle,因为我有正版的license。
  • P图:gimp 开源的Photoshop替代软件。
  • 科学计算:octave 开源的MATLAB替代软件。
  • 功耗控制:slimbookbattery 可以快速改变CPU功耗的软件,提高续航保护电池寿命。
  • 文档/表格/幻灯片处理:libreoffice 开源的微软Office替代软件,但兼容性并不好,所以我还安装了一个ms-office-online,可以通过在线的方式处理微软的Office文件。
  • 模型渲染:blender 一个开源的建模和渲染工具。mayaAutodesk公司出品的建模和渲染工具,也是因为有正版license。
  • 文档生产:texlive-mosttexstudio,前者是安装LaTeX所有的包,后者是IDE。
  • 游戏:steam 需要注意的是在运行游戏前配置属性,增加使用独显加速的选项。
  • 多机协同:由于我使用的是Android设备,故这里使用的多机协同软件是scrpy,可以通过adb tcp模式无线连接设备,并且支持投屏操作,这与只有文本和文件交流的kdeconnect系列形成了互补关系(前文提到的GNOME插件gsconnectkdeconnect在GNOME环境的变体,属同宗)。
  • PDF文件编辑:pdftk有拆页,分页,合并,加密和解密等功能,一两行命令即可完成操作。pdfquirk图像转PDF格式的工具。

双显卡的支持问题

由于笔记本的CPU拥有集成显卡,所以图形界面默认使用的Intel集成显卡显示,可以通过安装mesa-demos来获取glxinfo工具,并通过glxinfo | grep “OpenGL vender string"来查看。

所以当我玩游戏的时候,最好的办法是像Windows那样切换到独显以加速,Linux为我们提供了解决方案,即通过bumblebee

首先,需要安装bumblebeeprimus,并通过systemctl enable bumblebeed.service设置开启自启服务,然后重启。

当需要使用独显计算时,通过在程序前添加optirunprimusrun即可。比如通过optirun glxgears -infoglxgears -info可以了解到分别使用了什么设备计算了齿轮图像。在steam中,通过在游戏属性里的SET LAUNCH OPTIONS里添加vblank_mode=0 primusrun %command%便可以使用独显运行游戏。查看是否使用了独显可以通过nvidia-smi了解,不过这是NVIDIA独显的指令,AMD的或者Intel的我就不知道了,也没用过。

增加emoji的支持

日常观看网页时经常遇到莫名其妙的方框,后来发现是emoji没有正常显示。emoji的包有很多,这里选择了noto-fonts-emoji。安装了这个包之后,再在/etc/fonts/conf.d/目录下建立99-notosans.conf 并在其中添加下述内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>sans-serif</family>
<prefer>
<family>Noto Sans</family>
<family>Noto Color Emoji</family>
<family>Noto Emoji</family>
<family>DejaVu Sans</family>
</prefer>
</alias>

<alias>
<family>serif</family>
<prefer>
<family>Noto Serif</family>
<family>Noto Color Emoji</family>
<family>Noto Emoji</family>
<family>DejaVu Serif</family>
</prefer>
</alias>

<alias>
<family>monospace</family>
<prefer>
<family>Noto Mono</family>
<family>Noto Color Emoji</family>
<family>Noto Emoji</family>
<family>DejaVu Sans Mono</family>
</prefer>
</alias>
</fontconfig>

再执行刷新字体缓存指令即可。

1
$ fc-cache

以下内容对应Arch Linux, Debian/Ubuntu系发行版系统的教程,如果是其他系统请酌情按照自己的环境修改。另外,对于Arch Linux,还可参考 ROS - Arch Linux Wiki,我有经常维护该页面。

本安装教程对应ros2.repos,链接版本是Galactic。虽然发行时社区声称Galactic不默认支持Ubuntu 18.04,但经过一番探索,还是可以支持的,只在一些软件的版本上(比如PyQt等)有些许差别,均可通过下述方法修复。

修改字符格式(一般情况不用执行,除非你的locale是其他语言)

1
2
3
4
5
6
locale  # check for UTF-8
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
locale # verify settings

更新Ubuntu源(只有Ubuntu发行版需要)

注意,这里需要分辨自己的版本。

Ubuntu 18.04:

1
sudo apt install curl gnupg2 lsb-release 
1
2
3
4
5
6
sudo vim /etc/apt/sources.list

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
1
2
3
sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo apt update

Ubuntu 20.04:

1
sudo apt install curl gnupg2 lsb-release 
1
2
3
4
5
6
sudo vim /etc/apt/sources.list

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
1
2
3
sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo apt update

安装编译所需依赖

对于Arch Linux:
安装ROS 2的相关依赖:
1
yay -S --noconfirm ros-arch-deps

建立Sip所需链接

1
2
3
sudo mkdir -p /usr/share/sip
sudo ln -s /usr/lib/python3.9/site-packages/PyQt5 /usr/share/sip/.
sudo ln -s /usr/lib/python3.9/site-packages/PyQt5/bindings/* /usr/share/sip/PyQt5/.
安装其他依赖:
1
yay -S --noconfirm ompl vtk pcl ceres-solver gazebo
对于Ubuntu系的发行版:
安装ROS 2的依赖

这部分如果全复制可能会失败,如果哪个失败就单独安装哪个,或者一条一条安装。Ubuntu的APT的软件包依赖关系并不够严谨,所以有时候会处理不了这些逻辑。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
sudo apt update && sudo apt install -y \
build-essential \
cmake \
git \
libbullet-dev \
python3-colcon-common-extensions \
python3-flake8 \
python3-pip \
python3-pytest-cov \
python3-rosdep \
python3-setuptools \
python3-vcstool \
python3-lark
python3-lark-parser \
python3-sip \
python3-numpy \
libfreetype-dev \
pyqt5-dev \
wget \
libasio-dev \
libtinyxml2-dev \
libeigen3-dev \
libpcl-dev \
libxrandr-dev \
libxaw7-dev \
liblog4cxx-dev \
libassimp-dev \
libopencv-dev \
python3-testresources \
libgraphicsmagick++1-dev \
libgflags-dev \
libgoogle-glog-dev \
libsuitesparse-dev \
libgles2-mesa-dev \
libxt-dev \
libasio-dev \
libsdl2-dev \
doxygen \
libcurl4-openssl-dev \
libsqlite3-dev \
libbison-dev \
libncurses-dev \
libacl1-dev


//install some pip packages needed for testing
python3 -m pip install -U \
argcomplete \
flake8 \
flake8-blind-except \
flake8-builtins \
flake8-class-newline \
flake8-comprehensions \
flake8-deprecated \
flake8-docstrings \
flake8-import-order \
flake8-quotes \
pytest-repeat \
pytest-rerunfailures \
pytest \
pytest-cov \
pytest-runner \
setuptools \
importlib-metadata \
importlib-resources

安装SIP和PyQT5相关的包

这里提供的是4.19.25版本的sip,由于qt_gui_cpp的限制,只能使用sip4(虽然已经更新到6)。

Arch Linux用户可以直接安装sip4,无需此步骤。

Ubuntu相关用户:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
wget https://www.riverbankcomputing.com/static/Downloads/sip/4.19.25/sip-4.19.25.tar.gz
tar -xvf sip-4.19.25.tar.gz
cd sip-4.19.25
python3 configure.py
make
sudo make install

python3 -m pip install PyQt5
python3 -m pip install PyQt5-sip

# For Ubuntu 18.04
sudo mkdir /usr/share/sip
sudo ln -s ~/.local/lib/python3.6/site-packages/PyQt5 /usr/share/sip/.
sudo ln -s ~/.local/lib/python3.6/site-packages/PyQt5/bindings/* /usr/share/sip/PyQt5/.

# For Ubuntu 20.04
sudo mkdir /usr/share/sip
sudo ln -s ~/.local/lib/python3.8/site-packages/PyQt5 /usr/share/sip/.
sudo ln -s ~/.local/lib/python3.8/site-packages/PyQt5/bindings/* /usr/share/sip/PyQt5/.

编译ROS2源码

1
2
3
sudo mkdir /opt/ros2
sudo chown $USER /opt/ros2
colcon build --merge-install --install-base /opt/ros2/galactic --parallel-workers 20

期间如果发生warning,忽略即可,所以一般需要运行两次。

添加脚本

如果你使用的是zsh,则添加如下脚本到~/.zshrc。

1
2
3
4
5
6
7
ros2_on(){
export ROS_DOMAIN_ID=42
export ROS_VERSION=2
export ROS_PYTHON_VERSION=3
export ROS_DISTRO=galactic
source /opt/ros2/galactic/setup.zsh
}

如果你使用的是bash,则添加如下脚本到~/.bashrc。

1
2
3
4
5
6
7
ros2_on(){
export ROS_DOMAIN_ID=42
export ROS_VERSION=2
export ROS_PYTHON_VERSION=3
export ROS_DISTRO=galactic
source /opt/ros2/galactic/setup.bash
}

对于ROS_DOMAIN_ID的值,可以按照自己的需求去修改。

使用方法

更新环境变量后,运行ros2_on即可部署ROS 2环境