1. 背景
1.1. 2022.09.03
家里有一台 Win PC 台式机器,之前主要是娱乐用途,同时老婆习惯主 Win 操作;
周六做了房间清理,同时想把台式机换成偏技术或开发,但不影响老婆基本的 Win 使用,所以打算双系统 Win+Linux,Linux 选用 Ubuntu 桌面版本
目前改完还蛮不错,支持双系统,开发娱乐两不误:
- Ubuntu Ventoy U 盘启动盘制作
- Win+Ubuntu 双系统安装
- Ubuntu 开发机定制化
- 基本系统环境配置
- QQ/网易云音乐安装
- 基本软件安装
- Chrome
- 代理
2. Win 安装 Ubuntu 22.04.1
- Ubuntu 下载: https://ubuntu.org.cn/download/desktop
- 华为云镜像: https://mirrors.huaweicloud.com/home
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
- 插上 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
Ventoy 升级
重新运行 Ventoy 软件,你可以认为升级只是把第二个分区(32MB 的分区)内的 Ventoy 启动文件覆盖了,不会动到镜像分区,因此镜像文件不会丢失
2.3. 安装 Ubuntu
- 启动后,BIOS 启动选择通过 U 盘启动,进入 Ventoy 界面
- 选择 ISO 对应系统安装
- 找到要安装的磁盘,我安装主要分区 3 块(
efi
、根目录/
、数据存储 /data
)
注意:
- 需要划定
efi
分区,指明 OS 的启动位置 - 看提示,按操作“拔出 U 盘介质,按 Return 重启”
- 安装完成后,登录界面按 DEL 或者 F9(视自己的 BIOS 快捷键),配置 Ubuntu 优先启动
其他:UEFI 和 BIOS 差异: https://www.zhihu.com/question/21672895
3. Ubuntu 初始化
3.1. 软件源配置 - 配置华为镜像源
参考: https://mirrors.huaweicloud.com/home
1
2
3
4
5
6
7
8
9
| // 备份 /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
1
2
3
4
5
6
7
8
9
10
11
12
| // 安装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
命令设置默认编辑器,输入指定的编号敲回车即可
参考:
1
2
3
4
5
6
7
8
9
10
11
12
|
$ 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
1
2
3
4
5
6
7
8
9
10
11
12
13
| $ 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 服务
- 服务端安装 openssh-server
- 做基本的端口、TCP 连接配置、禁用 root 账号登录等,
/etc/ssh/sshd_config
- 重启 sshd 服务
1
2
3
4
5
6
7
8
9
| # 安装
$ sudo apt install openssh-server -y
# 编辑配置
# 服务重启 & 状态查看 & 日志查看
systemctl restart sshd
systemctl status sshd
journalctl -u ssh.service -f
|
3.8. 安装网易云音乐 - (tobe fix)
下载 https://music.163.com/#/download
安装: sudo dpkg -i ~/Downloads/netease-cloud-music_1.2.1_amd64_ubuntu_20190428.deb
启动后发现报错,查看系统日志: tail -f /var/log/syslog
发现缺少依赖,required by /lib/x86_64-linux-gnu/libgio-2.0.so.0
1
2
3
| 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
|
问题待修复..
3.9. 安装 QQ Music
下载:https://y.qq.com/download/download.html
1
| sudo dpkg -i qqmusic_1.1.4_amd64.deb
|
3.10. 安装 Chrome
下载: https://www.google.com/chrome/
3.11. 安装 Golang
下载: https://go.dev/dl/
1
2
3
4
5
6
7
| # 下载 & 安装
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
|
基本配置:
1
2
3
4
5
6
7
8
9
10
| # 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
3.13. 安装 autojump
1
2
3
4
5
6
| # 安装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
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
| # 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
|