安装Ubuntu OS - Tobe Continue...

1. 背景

1.1. 2022.09.03

家里有一台 Win PC 台式机器,之前主要是娱乐用途,同时老婆习惯主 Win 操作; 周六做了房间清理,同时想把台式机换成偏技术或开发,但不影响老婆基本的 Win 使用,所以打算双系统 Win+Linux,Linux 选用 Ubuntu 桌面版本

目前改完还蛮不错,支持双系统,开发娱乐两不误:

  1. Ubuntu Ventoy U 盘启动盘制作
  2. Win+Ubuntu 双系统安装
  3. Ubuntu 开发机定制化
    • 基本系统环境配置
    • QQ/网易云音乐安装
    • 基本软件安装
    • Chrome
    • 代理

2. Win 安装 Ubuntu 22.04.1

  1. Ubuntu 下载: https://ubuntu.org.cn/download/desktop
  2. 华为云镜像: https://mirrors.huaweicloud.com/home
    1. 手机、tkstorm1988、hold7habits 账号、Mi 密码

2.1. Ubuntu 镜像下载

可以提前开始下载 Ubuntu 桌面版: https://ubuntu.org.cn/download/desktop,后面同时准备启动盘制作

2.2. 在 Win 下通过 Ventoy 制作 U 盘启动盘

2.2.1. Ventoy 下载

官方比较慢,直接从 Github 下载,地址: https://github.com/ventoy/Ventoy/releases

2.2.2. Ventoy 安装

参考: https://www.ventoy.net/cn/doc_start.html

  1. 插上 U 盘 → 解压 Ventoy 软件 → 启动 Ventoy 软件(Ventoy2Disk.exe),默认软件会自动找到 U 盘,点击安装 即可(如果想安装到非 U 盘可以参考文档)

2.2.3. Ventoy 分区说明

可以从Win磁盘工具看到已分成两个区,参考: https://www.ventoy.net/cn/doc_disk_layout.html,另外,从 1.0.14 版本开始,Ventoy 支持在安装时在磁盘最后保留一部分空间

2.2.4. 系统 IOS 镜像拷贝

将之前下载的 ubuntu iso 镜像拷贝到 U 盘中,为了后续更多系统的安装,可以考虑适当创建文件夹管理,Ventoy 默认会遍历所有的目录和子目录,找出所有的镜像文件,并按照字母排序之后显示在菜单中。 如果检索的文件非常多,会比较慢,详细检索方式参考: https://www.ventoy.net/cn/doc_search_path.html

  1. Ventoy 升级

    重新运行 Ventoy 软件,你可以认为升级只是把第二个分区(32MB 的分区)内的 Ventoy 启动文件覆盖了,不会动到镜像分区,因此镜像文件不会丢失

2.3. 安装 Ubuntu

  1. 启动后,BIOS 启动选择通过 U 盘启动,进入 Ventoy 界面
  2. 选择 ISO 对应系统安装
  3. 找到要安装的磁盘,我安装主要分区 3 块(efi、根目录/ 、数据存储 /data

注意:

  1. 需要划定efi 分区,指明 OS 的启动位置
  2. 看提示,按操作“拔出 U 盘介质,按 Return 重启”
  3. 安装完成后,登录界面按 DEL 或者 F9(视自己的 BIOS 快捷键),配置 Ubuntu 优先启动

其他:UEFI 和 BIOS 差异: https://www.zhihu.com/question/21672895

3. Ubuntu 初始化

3.1. 软件源配置 - 配置华为镜像源

参考: https://mirrors.huaweicloud.com/home

// 备份 /etc/apt/sources.list
sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak

// 源替换 /etc/apt/sources.list
sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list

// 源更新
sudo apt-get update

3.2. 安装 Sougou 拼音

参考: https://shurufa.sogou.com/linux/guide

// 安装fcitx并删除ibus 键盘输入系统软件 - Fcitx是在X Window中使用的輸入法框架,在原始碼包內包含了拼音、五筆字型以及區位、二筆的支援
sudo apt-get install fcitx
sudo apt purge ibus

// 配置fcitx开机启动
sudo cp /usr/share/applications/fcitx.desktop /etc/xdg/autostart/

// 安装sougo拼音包
sudo dpkg -i ~/Downloads/sogoupinyin_4.0.1.2800_x86_64.deb

// 安装sougo qt依赖(界面)- Qt是一個跨平台的C++應用程式開發框架。廣泛用於開發GUI程式
sudo apt install libqt5qml5 libqt5quick5 libqt5quickwidgets5 qml-module-qtquick2 libgsettings-qt1

3.3. 锁屏设置 - 避免快速锁屏

系统配置(Setting) → 隐私(Privacy)→ 屏幕(Screen)

3.4. 安装 Vim

3.5. 更新默认编辑器

默认 ubuntu 使用 nano 作为默认编辑器,可以使用 update-alternatives 命令设置默认编辑器,输入指定的编号敲回车即可

参考:


$ sudo update-alternatives –config editor

There are 5 alternatives which provide `editor’.
Selection Alternative
———————————————–
1 /usr/bin/vim
2 /bin/ed
*+ 3 /bin/nano
4 /usr/bin/vim.basic
5 /usr/bin/vim.tiny
Press enter to keep the default[*], or type selection number:

3.6. 日常开发账号 sudo 免密码

默认情况用户已经是加入到sudo 工作组,sudo 时候只是需要密码,通过 visudo 加入指定账号免密操作。

注意: 当一个用户有多个条目匹配时,它们将按顺序应用。如果有多个匹配项,则使用最后一个匹配项(注意 bad 的位置)

参考: https://askubuntu.com/questions/334318/sudoers-file-enable-nopasswd-for-user-all-commands

$ sudo visudo

...
# User privilege specification
root    ALL=(ALL:ALL)   ALL
#terry   ALL=(ALL)       NOPASSWD: ALL # bad 写在这里,会被后%sudo规则覆盖,导致仍然还是要密码

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
terry   ALL=(ALL)       NOPASSWD: ALL # ok

3.7. sshd 服务开启 - 方便 mac 机器 ssh 登录

为了方便同网域的其他客户端 ssh 连入,需要启动 sshd 服务

  1. 服务端安装 openssh-server
  2. 做基本的端口、TCP 连接配置、禁用 root 账号登录等, /etc/ssh/sshd_config
  3. 重启 sshd 服务
# 安装
$ sudo apt install openssh-server -y

# 编辑配置

# 服务重启 & 状态查看 & 日志查看
systemctl restart sshd
systemctl status sshd
journalctl -u ssh.service -f

3.8. 安装网易云音乐 - (tobe fix)

  1. 下载 https://music.163.com/#/download
  2. 安装: sudo dpkg -i ~/Downloads/netease-cloud-music_1.2.1_amd64_ubuntu_20190428.deb
  3. 启动后发现报错,查看系统日志: tail -f /var/log/syslog 发现缺少依赖,required by /lib/x86_64-linux-gnu/libgio-2.0.so.0
    Sep  4 16:35:15 home-ubuntu netease-cloud-music.desktop[5305]: /opt/netease/netease-cloud-music/netease-cloud-music: /opt/netease/netease-cloud-music/libs/libselinux.so.1: no version information available (required by /lib/x86_64-linux-gnu/libgio-2.0.so.0)
    Sep  4 16:35:15 home-ubuntu systemd[1722]: Started Application launched by gnome-shell.
    Sep  4 16:35:15 home-ubuntu netease-cloud-music.desktop[5305]: /opt/netease/netease-cloud-music/netease-cloud-music: symbol lookup error: /lib/x86_64-linux-gnu/libgio-2.0.so.0: undefined symbol: g_module_open_full
    
  4. 问题待修复..

3.9. 安装 QQ Music

下载:https://y.qq.com/download/download.html

sudo dpkg -i qqmusic_1.1.4_amd64.deb

3.10. 安装 Chrome

下载: https://www.google.com/chrome/

3.11. 安装 Golang

下载: https://go.dev/dl/

# 下载 & 安装
cd /usr/local/src/download
wget https://go.dev/dl/go1.19.linux-amd64.tar.gz
tar -zxf ./go1.19.linux-amd64.tar.gz

# 直接软连替换,方便后续版本升级
ln -s /usr/local/src/download/go /usr/local

基本配置:

# vim ~/.bashrc
source ~/.my.sh

# vim ~/.my.sh
# PATH
export PATH=/data/go/bin:/usr/local/go/bin:${PATH}

# GOPATH配置
export GOPATH=/data/go
export GOPROXY=https://goproxy.io

3.12. 安装 git

sudo apt install git

3.13. 安装 autojump

# 安装autojump
sudo apt install autojump

# 启用配置
vim ~/.my.sh
source /usr/share/autojump/autojump.sh

3.14. Ubuntu 键盘按键改 Mac(tobe fix)

参考: http://www.ptbird.cn/ubuntu-mac-os-vscode-keycut.html

4. Ubuntu 包管理

4.1. dpkg、apt-file 查看包明细

  • dpkg --contents ~/Downloads/eudic.deb :List contents of a deb package.
  • apt-file search keywords and apt-file list package-name :List files in packages
# case 1: -L not work
terry@home-ubuntu:~/Downloads$ dpkg -L eudic.deb
dpkg-query: package 'eudic.deb' is not installed
Use dpkg --contents (= dpkg-deb --contents) to list archive files contents.

# case 2: dpkg --contents ~/Downloads/eudic.deb (show package list)
terry@home-ubuntu:~$ dpkg --contents ~/Downloads/eudic.deb
drwxr-xr-x eusoft/eusoft     0 2021-09-08 08:19 ./
drwxr-xr-x eusoft/eusoft     0 2021-09-08 08:18 ./usr/
drwxr-xr-x eusoft/eusoft     0 2021-09-08 08:21 ./usr/share/
drwxr-xr-x eusoft/eusoft     0 2021-09-08 08:18 ./usr/share/applications/
...

# case 3: apt-file search libgio (file name contain keyword `libgio`)
terry@home-ubuntu:~/Downloads$ apt-file search libgio
glib-networking: /usr/lib/x86_64-linux-gnu/gio/modules/libgioenvironmentproxy.so
glib-networking: /usr/lib/x86_64-linux-gnu/gio/modules/libgiognomeproxy.so
glib-networking: /usr/lib/x86_64-linux-gnu/gio/modules/libgiognutls.so
glib-networking: /usr/lib/x86_64-linux-gnu/gio/modules/libgiolibproxy.so
gvfs: /usr/lib/x86_64-linux-gnu/gio/modules/libgioremote-volume-monitor.so
libgio-cil: /usr/share/doc/libgio-cil/changelog.Debian.gz
....

# case 4: apt-file list libglib2.0-0
terry@home-ubuntu:~/Downloads$ apt-file list libglib2.0-0
libglib2.0-0: /usr/lib/x86_64-linux-gnu/glib-2.0/gio-launch-desktop
libglib2.0-0: /usr/lib/x86_64-linux-gnu/glib-2.0/gio-querymodules
libglib2.0-0: /usr/lib/x86_64-linux-gnu/glib-2.0/glib-compile-schemas
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7200.1
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.1
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.7200.1
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.1
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.7200.1
libglib2.0-0: /usr/share/doc/libglib2.0-0/NEWS.gz
libglib2.0-0: /usr/share/doc/libglib2.0-0/README.md
libglib2.0-0: /usr/share/doc/libglib2.0-0/changelog.Debian.gz
libglib2.0-0: /usr/share/doc/libglib2.0-0/copyright
libglib2.0-0: /usr/share/glib-2.0/clean-up-unmanaged-libraries
libglib2.0-0: /usr/share/lintian/overrides/libglib2.0-0