跳转到内容

Linux 安装和使用

卸载 Ubuntu

因为我的版本是 Ubuntu 20.04 ,防止可能产生的问题,于是我在双系统下卸载 Ubuntu 。

步骤一:调整开机启动项位置

s300

  1. 开机进入 BIOS 设置:在电脑还未亮之前,狂按 F2 (不同电脑可能不同),然后进入 BIOS 系统设置。
  2. 找到启动项,找到 Windows 启动项,将其调整到第一启动项。(我这里按 F6 )

步骤二:删除 Ubuntu 分区

我选择方法 2 ,打开系统的“磁盘管理”,确定 Ubuntu 所在的分区,右键删除卷。主要的判别方法是:

  1. 之前安装时分配的磁盘和空间大小
  2. 没有写着 C、D、E、F 盘符的分区
  3. 右键删除卷时,弹出的提示(如图)

s300

步骤三:删除 Ubuntu EFI 文件

win + r,输入cmd进入命令窗口。

Terminal window
diskpart

在弹出的窗口(如果有)中输入:

Terminal window
list disk

找到 Windows 的 EFI 分区所在的磁盘(大概率是磁盘 0),输入:

Terminal window
select disk 0
list partition

找到一个大小约 260M 的分区然后选择它,我这里是分区0,所以输入:

Terminal window
select partition 0

分配盘符,不要和你已有的盘符重复,如C、D、E、F,我这里选择 P :

Terminal window
assign letter=P

系统(win11下面有个搜索框)里找到记事本,用管理员权限打开,上面“文件->打开”,找到 P 盘,找到 Ubuntu 文件夹,右键删除它。

s300

最后,输入下面命令行,恢复回去。

Terminal window
remove letter=P

安装 Ubuntu 22.04

下载镜像和镜像安装工具

下载镜像:官网地址

下载的镜像后缀为.iso,我下载的为ubuntu-22.04.5-desktop-amd64.iso

我们可以趁下载镜像的功夫,再去下载一个制作启动盘的工具:rufus,它是开源的。当然也有不同的教程采用不同的工具,例如 win32diskimagerVentory等。

磁盘分区

两种方案: 方案一包含四个分区:

  • efi:500M Ubuntu 引导区
  • swap:交换区,休眠和数据溢出时存储的地方,依据物理内存分配(系统中查看),8G-10G,16G-16G,32G及以上-24G
  • ext4:根目录,存放系统文件(理解为 C 盘),尝鲜级(不安装 CUDA 之类的)20G,一般 100G 以上。
  • ext4:home目录,存放用户文件(理解为 D 盘),重装系统时可以只覆盖其他分区,本分区内容能保存下来,我这里也计划 100G 以上。

(重度需求,跑神经网络数据集等的 500 + 500G)

方案二仅有三个分区,将后两个分区合并,适合空间紧张的朋友。

打开“磁盘管理”,选择一个磁盘右键点压缩卷,设置所需要的大小,压缩得到未分配的空间。

s300

这时顺便看一下磁盘分区类型:右键刚刚压缩卷的那个磁盘(那一行最左侧的灰色区域),选择“属性”,点击“卷”,就能确定是 MBR 分区还是 GPT 分区。

s300

制作启动盘

准备一个内存够大(8G以上)的 U 盘,注意备份,因为制作系统盘会清除里面的内容。如果 U 盘上有物理的写保护滑块,请将它滑到 unlock 状态。

打开 Rufus,选择下载好的镜像文件,选择 U 盘作为启动盘。

  • 在"分区方案和目标系统类型"选项中,选择刚刚我们查看的分区形式。我这里是 GPT 。
  • 在"文件系统"和"簇大小"选项中,保持默认设置通常就可以。
  • 在"新卷标"中,你可以自定义U盘的卷标名称,也可以保持默认。
  • 勾选"快速格式化"和"创建一个启动盘使用ISO镜像"选项,这也是默认的。

点击“开始”,它可能会弹出好几个警告,下面这个窗口如图选择第一个,之后的警告都是说会使你磁盘内容丢失、多分区磁盘其他分区也会丢失等等,注意好备份,一直“OK”“是”“确定”就行。

s300

时间有点长,保持电脑有电。

安装系统

关机,开机时按 Fn + F2 进入 BIOS 选择 UEFI 引导模式(我这里原本就是 UEFI 模式,所以跳过此步)。

插上刚刚制作的系统启动盘,关机,开机时按 F12 (不同电脑可能不同,见下图,图来自B站机器人工匠阿杰)进入启动方式选择 U 盘启动。

s450

s400

等待一会儿,进入 Ubuntu 系统开始安装流程。

  1. 欢迎界面选择 EnglishInstall Ubuntu

  2. Keyboard Layout: 键盘布局左边和右边都选择 English (US)English (US)Continue

  3. Wireless: 选择I don't want to connect to a Wi-Fi network right now,先跳过 Wi-Fi 设置,Continue

  4. Updates and other software: 选择Normal installation,确认下面 Other options 什么都没选,Continue

  5. Installation type: 选择Something else,表示我们将自定义磁盘分配给 Ubuntu,就是前面磁盘分区的两种方案,Continue

  6. Installation type: 找到你刚刚在 Windows 磁盘管理中压缩出来的卷(通过空间大小、写着 free space 来判断),点击它,再点下面 + 来创建分区,每次创建分区都要确保选中的是那块 free space,我这里采用方案一,需要创建四个分区:

    • EFI 分区:500 MB,类型选择 EFI System Partition,点击 OK,如下图所示(中间两个选项不用动,创建其他分区也默认如此,不再赘述)

    s400

    • SWAP 分区:根据我们前面计划的大小设置,我这里输入 16000 MB,类型选择 Linux swap,点击 OK
    • EXT4 分区:根据我们前面计划的大小设置,我这里输入 200000 MB,,类型选择 Ext4 journaling file system,Mount point(挂载点)选择 /,点击 OK
    • EXT4 分区: 将free space 剩余空间全用上输入进去,类型选择 Ext4 journaling file system,Mount point(挂载点)选择 /home,点击 OK

    Device for boot loader installation: 选择刚刚 EFI 分区,注意看下图,我的 efi 是 /dev/nvme0n1p3,下面也要选择相同的名称,点击 Install Now

    s450

    弹出窗口,再确认一下四个分区(ESP、swap、ext4、ext4),点击 Continue

  7. Where are you?: 点击中国,下面就会显示 ShanghaiContinue

  8. Who are you?:

    • Your name,建议短一点纯英文,我叫tky
    • Your computer's name,我用的WP
    • choose a password,因为 Ubuntu 不放什么隐私,简短一点方便登录,tky,同时下面选择Log in automatically自动登录

    Continue

  9. 等待安装系统完成,约 5 分钟,弹出窗口Installation Complete,点击Restart Now重启系统。

  10. 到下面的界面提示你要拔出 U 盘,并按下键盘上 Enter 键。

    s400

    你会看到这样的界面,这就是以后你选择进入哪个系统的开机界面了。

    s400

    可以看到默认是 Ubuntu ,如果 10s 内不用 ↑、↓ 选择会自动进入(后续我们会修改,让它默认进入 Windows)。记住 Windows 从上往下标序号是几,如图从 0 开始,我这里 Windows 是 2。记住就行,按下 Enter 进入 Ubuntu 系统。

  11. 弹出一个 Ubuntu Pro 的窗口,一路 Skip for nowNo, don't send system info 就可以了。安装完成!

Ubuntu 基本配置

默认启动项

现在重启开机默认的是 Ubuntu 系统,但如果我们主要工作在 Windows 系统,每次要按 ↓ 选择到 Windows 会非常麻烦,请按照下面步骤配置。

打开终端窗口(点击桌面左下角有九个点,第一行有一个软件叫Terminal,点击),输入:

Terminal window
sudo gedit /etc/default/grub

s450

在弹出的文本编辑窗口更改第六行GRUB_DEFAULT=0,还记得上面安装系统第 10 步我们记住的数字是几吗?我的是2!把 0 改为 2。右上角有Save,保存一下,关闭窗口,再在命令窗口输入下面命令,搞定!

Terminal window
sudo update-grub

Wi-Fi 连接

桌面右上角点击,弹出的菜单选择Wi-Fi Not Connected,连接网络即可。

换源

Ubuntu 系统安装各类包、软件有它自己默认设置的路径,很显然是国外的网址,下载非常不方便。于是我们需要进行换源

  1. 选择镜像源,我这里选择清华源镜像,搜索框输入 ubuntu 回车,如图所示,点击 Ubuntu 旁边的问号

    s400

  2. Ubuntu 软件仓库: 下面选择 Ubuntu 版本为 Ubuntu 22.04 LTS (jammy),复制下面灰色区域的全部文本(源列表)。

  3. 打开终端窗口,输入下面代码备份原有的源列表。

    Terminal window
    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

    再输入下面代码打开源列表。

    Terminal window
    sudo gedit /etc/apt/sources.list
  4. 全选删除原有源列表内容,把刚刚清华源复制的源列表粘贴进去,Save保存,关闭,完成!

时间同步

双系统存在一个问题就是时间不同步。

解决方法如下

  1. 安装时间同步工具
    Terminal window
    sudo apt intall ntpdate
  2. 使用工具同步到互联网时间
    Terminal window
    sudo ntpdate time.windows.com
  3. 把时间机制从UTC改成localTime,并同步BIOS硬件时间
    Terminal window
    sudo hwclock --localtime --systohc

中文输入法安装

中文输入法有ibus、fcitx、搜狗拼音输入法等,这里介绍 fcitx5 安装方法。

  1. 打开设置,桌面右上角菜单下有齿轮,左侧找Region & Language,右侧点击Manage Installed Languages。这时可能提示你语言包没安装完成,等待它安装完。

  2. 这时 Language support 里面有汉语了,读一下上面些什么,告诉你系统语言在上面 Region formats 里面修改,点一下去修改回英文。

    s400

  3. 为使用 Fcitx 5,需要安装三部分基本内容:Fcitx 5 主程序、中文输入法引擎、图形界面相关。使用下面语句:

    Terminal window
    sudo apt install fcitx5 \
    fcitx5-chinese-addons \
    fcitx5-frontend-gtk4 fcitx5-frontend-gtk3 fcitx5-frontend-gtk2 \
    fcitx5-frontend-qt5
  4. 安装中文词库,到维基中文拼音词库Github的Releases找一个后缀为.dist的下载。由于可能存在更新,可以看该 Github 仓库的 README.md,看操作方法。

  5. 点击桌面左侧栏,打开文件夹,打开下面 Others ,双击计算机,你就进入到根目录(存放系统文件的地方了),按照下面顺序依次进入usr/share/fcitx5/pinyin文件夹,右键选择打开 terminal,输入如下命令行在该文件内创建一个dictionaries文件夹。

    Terminal window
    sudo mkdir -p /usr/share/fcitx5/pinyin/dictionaries

    把刚刚下载的.dict拷贝进去,用下面命令(其中.dict的名称需自己修改):

    Terminal window
    sudo mv ~/Downloads/zhwiki-20240909.dict /usr/share/fcitx5/pinyin/dictionaries
  6. 打开终端,用下面代码打开系统文件:

    Terminal window
    sudo gedit /etc/profile

    在文件最下面加入如下三行代码:

    export XMODIFIERS=@im=fcitx
    export GTK_IM_MODULE=fcitx
    export QT_IM_MODULE=fcitx

    s400

  7. 安装 Fcitx 5 后并没有自动添加到开机自启动中,每次开机后需要手动在应用程序中找到并启动,非常繁琐。因此安装工具 Tweaks 来配置它自启动,用sudo apt install gnome-tweaks安装。你可以在左下角九个点,里面找 Tweaks 打开它,自启动添加进 fcitx5。

    s400

  8. 在你的应用(左下角九个点打开)有三只企鹅,打开 Fcitx 5 configuration,取消勾选Only Show Current Language,右侧选择Pinyin点击<添加进去。右上角有个键盘可以切换输入法。终于搞定了!

  9. 在你的应用(左下角九个点打开)有三只企鹅,打开 Fcitx 5 configuration,取消勾选Only Show Current Language,右侧选择Pinyin点击<添加进去。右上角有个键盘可以切换输入法。终于搞定了!

常用软件安装

安装 Clash

下面是简略版,详细看上面链接。

  1. 根据自己 Linux 系统的版本来确定安装的命令。

    Terminal window
    uname -a

    如果输出包含 x86_64 使用下面命令安装:

    Terminal window
    wget https://github.com/clashdownload/Clash_for_Windows/releases/download/0.20.39/Clash.for.Windows-0.20.39-x64-linux.tar.gz

    如果输出包含 aarch64 使用下面命令安装:

    Terminal window
    wget https://github.com/clashdownload/Clash_for_Windows/releases/download/0.20.39/Clash.for.Windows-0.20.39-arm64-linux.tar.gz
  2. 找到它,解压,打开文件夹,双击 cfw 文件即可运行 clash ,使用方法和你在 Windows 一样。

  3. 别忘了,在右上角网络配置选择手动,如图所示。

    s400

下面是简略版,详细看上面链接。

  1. 根据自己 Linux 系统的版本来确定安装的命令。

    Terminal window
    uname -a

    如果输出包含 x86_64 使用下面命令安装:

    Terminal window
    wget https://github.com/clashdownload/Clash_for_Windows/releases/download/0.20.39/Clash.for.Windows-0.20.39-x64-linux.tar.gz

    如果输出包含 aarch64 使用下面命令安装:

    Terminal window
    wget https://github.com/clashdownload/Clash_for_Windows/releases/download/0.20.39/Clash.for.Windows-0.20.39-arm64-linux.tar.gz
  2. 找到它,解压,打开文件夹,双击 cfw 文件即可运行 clash ,使用方法和你在 Windows 一样。

  3. 别忘了,在右上角网络配置选择手动,如图所示。

    s400

安装 VSCode

  1. VScode官网下载.deb
  2. 到下载文件的地方右键,选择打开方式为软件安装,在弹出的窗口快速按下install并输入密码。
  3. 不妨顺便设置一下 VScode 的自动保存,点击左下角齿轮,搜索auto save,选择after delay,相当于实时保存。

安装 Terminator 终端

Terminal window
sudo apt install terminator

这是一个更好用的终端

  • ctrl+shift+o上下分窗口
  • ctrl+shift+e左右分窗口
  • ctrl+shift+w关闭当前窗口
  • Alt+上下左右来切换窗口

详细快捷键,右键选择Preferences里面查看。

安装 npm、node、pnpm

大部分教程sudo apt install npm会导致下载的版本是老的,请参考这篇文章安装最新的npm和node。

Terminal window
sudo apt-get install -y curl
curl -fsSL https://deb.nodesource.com/setup_23.x -o nodesource_setup.sh
sudo -E bash nodesource_setup.sh
sudo apt-get install -y nodejs

验证安装版本:

Terminal window
node -v
npm -v

pnpm 安装:

Terminal window
sudo npm install -g pnpm
  1. VScode官网下载.deb
  2. 到下载文件的地方右键,选择打开方式为软件安装,在弹出的窗口快速按下install并输入密码。
  3. 不妨顺便设置一下 VScode 的自动保存,点击左下角齿轮,搜索auto save,选择after delay,相当于实时保存。

安装 Terminator 终端

Terminal window
sudo apt install terminator

这是一个更好用的终端

  • ctrl+shift+o上下分窗口
  • ctrl+shift+e左右分窗口
  • ctrl+shift+w关闭当前窗口
  • Alt+上下左右来切换窗口

详细快捷键,右键选择Preferences里面查看。

安装 npm、node、pnpm

大部分教程sudo apt install npm会导致下载的版本是老的,请参考这篇文章安装最新的npm和node。

Terminal window
sudo apt-get install -y curl
curl -fsSL https://deb.nodesource.com/setup_23.x -o nodesource_setup.sh
sudo -E bash nodesource_setup.sh
sudo apt-get install -y nodejs

验证安装版本:

Terminal window
node -v
npm -v

pnpm 安装:

Terminal window
sudo npm install -g pnpm

安装 ROS2

官网 我们选择 Humble 这个 LTS (长期维护)的版本。

按照这个页面步骤进行安装:

你未来搞 ROS2 很可能需要用到 colcon (colcon是ros2的包构建工具,相当于ros1中的catkin工具一样),建议先安装一下:

Terminal window
sudo apt install python3-colcon-common-extensions
  1. 打开终端,把以下代码粘贴进去运行:
Terminal window
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
  1. 设置 Universe 的源:
Terminal window
sudo apt install software-properties-common
sudo add-apt-repository universe

有个[Enter]的提示,按回车继续。

  1. 添加 ROS 2 GPG key:
Terminal window
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
  1. 然后将存储库添加到您的源列表中。:
Terminal window
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
  1. 常规更新操作:
Terminal window
sudo apt update
sudo apt upgrade
  1. 安装 ROS2 桌面(必装),包含(ROS, RViz, demos, tutorials):
Terminal window
sudo apt install ros-humble-desktop

中间问yes or no,输入Y

ROS-Base 安装:通信库、消息包、命令行工具。没有 GUI 工具。

Terminal window
sudo apt install ros-humble-ros-base

开发工具:用于构建 ROS 包的编译器和其他工具

Terminal window
sudo apt install ros-dev-tools
  1. 环境设置: 大部分情况下是.bash可以直接用下面语句,但你的电脑上也可能是.zsh.sh
Terminal window
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

再输入nano ~/.bashrc或者用vim去打开它,看看最后一行是不是加上了source /opt/ros/humble/setup.bash

用这种方式配置环境不用每次运行ros前都要source了,会更方便。

安装 Gazebo

Terminal window
sudo apt install gazebo
sudo apt install ros-humble-gazebo-*

双系统下 Ubutnu 分区扩容

我已经猜到可能有朋友双系统安装 Ubuntu 系统给的空间小了,我恰好也写了一篇文章可以参考一下。

PA0

Installing tools

Terminal window
su -

Configuring vim

合并格式的diff

我们来看一个例子,修改前的文档如下所示:

The Way that can be told of is not the eternal Way;
The name that can be named is not the eternal name.
The Nameless is the origin of Heaven and Earth;
The Named is the mother of all things.
Therefore let there always be non-being,
so we may see their subtlety,
And let there always be being,
so we may see their outcome.
The two are the same,
But after they are produced,
they have different names.

修改后的文档如下所示:

The Nameless is the origin of Heaven and Earth;
The named is the mother of all things.
Therefore let there always be non-being,
so we may see their subtlety,
And let there always be being,
so we may see their outcome.
The two are the same,
But after they are produced,
they have different names.
They both may be called deep and profound.
Deeper and more profound,
The door of all subtleties!

修改前文本前七行和修改后文本前六行有较高相似度(这也是为什么 Unified diff 被创造出的原因)所以用@@ -1,7 +1,6 @@表示修改修改前文本从1开始的连续7行为修改后文本从第1行开始的连续6行

下面每一行开头有-表示删除的,+表示添加的行,其他的不变。

于是完整的 Unified diff 写成如下形式:

--- lao 2002-02-21 23:30:39.942229878 -0800
+++ tzu 2002-02-21 23:30:50.442260588 -0800
@@ -1,7 +1,6 @@
-The Way that can be told of is not the eternal Way;
-The name that can be named is not the eternal name.
The Nameless is the origin of Heaven and Earth;
-The Named is the mother of all things.
+The named is the mother of all things.
+
Therefore let there always be non-being,
so we may see their subtlety,
And let there always be being,
@@ -9,3 +8,6 @@
The two are the same,
But after they are produced,
they have different names.
+They both may be called deep and profound.
+Deeper and more profound,
+The door of all subtleties!

其中第一行表示修改前的文件,开头用---表示;第二行表示修改后的文件,开头用+++表示。

所以这里表示取消"syntax on前面的"

修改完成之后别忘记写入:wq!

More Exploration

正则表达式

正则表达式学习

结合以上教程,你很容易明白以下常用的正则表达式及含义:

符号含义
.匹配任意字符
*匹配零个或多个字符,例如 o* 表示 0-n 个 o
\{n1,n2\}匹配 n1 到 n2 个字符 ,例如 a\{3,5\} 表示有连续的 3-5 个 a
[abc]匹配 a、b、c 任意一个字符
[^abc]匹配除了 a、b、c 以外的任意字符
^匹配字符串的开头
$表示字符串末尾,.h$ 表示以.h 结尾的文件
[n1-n2]匹配 n1-n2 范围内的任意字符,必须 ASCII 当中连续,例如 [A-Z] 表示所有大写字母
\转义字符,用于匹配一些特殊字符,例如 '.' 表示匹配点号

尝试打印自己的 IP 地址:

Terminal window
ifconfig | grep -n '^.*inet ' | sed 's/^.*inet //g' | sed 's/ net.*$//g'

扩展的正则表达式符号:

符号含义
|用或( or )的方式找出数个字符串
()括号内的表达式会作为一个整体被匹配,如 egrep -n 'g(la|oo)d' 找 glad 或 good
+匹配前面的字符 1 次或多次
?匹配前面的字符 0 次或 1 次
()+多个重复组的判别,如 egrep 'A(xyz)+C' 找开头为A结尾为C,中间有一个以上xyz的字符串