折腾 Ubuntu20.04 开发环境

前段时间买了个 Inter NUC (NUC10i5FNH6), 主要用来在家里搬砖。体验了一段时间 win10, 虽然配置了 WSL2, 但开发体验实在糟糕,在考虑过 Ubuntu 和黑苹果后,还是选择了 Ubuntu, 毕竟用习惯了白苹果,突然用个黑苹果,不能随意升级,还有接一个 USB WiFi ,还担心驱动问题。。。

毕竟头一次想把 Ubuntu 当作生产力,记录一下折腾过程。

NUC 配置篇

配置
CPUi5-10210U (1.6GHz-4.2GHz)
显卡Intel UHD
内存32G x 2 (相当浪费==)
磁盘Intel 760p 512G + 三星 860 EVO 500G

系统篇

安装双系统

双系统安装很简单,网上教程视频很多,这里主要说一下我的 Ubuntu 怎么分区的。

我分了 200G 磁盘给 Ubuntu, 其中:

  • 根目录 (/) - 120G

    主要是系统和软件,还是比较吃空间的。

  • HOME (/home) - 79G

    桌面,文档等一些东西,差不多够用了。不够再把其他分区挂载进来存东西就行了。

  • BOOT (/boot) - 1G

    其实现在都用了LVM,BOOT直接放根目录一起也可以了,但我还是给了1G。

至于SWAP分区,我看了以下SWAP分区的作用(内存交换,内存不足就把一部分硬盘虚拟成内存使用),emmm… 貌似我……64G的内存我目前还用不完,索性不分了。

系统设置

  • 软件源设置国内的(关于->Software Updates->Ubuntu软件->下载自);

    我选了一个阿里的,感觉速度还可以。

  • 软件更新频率等按自己偏好设置一波;

  • Dock栏放右边;

磁盘挂载

我想在 Linux 下查看原来 Win的文件,找到磁盘,挂载即可。

1
2
3
4
5
6
7
8
9
# 找磁盘
sudo fdisk -l
设备 起点 末尾 扇区 大小 类型
/dev/nvme0n1p1 2048 1085439 1083392 529M Windows 恢复环境
/dev/nvme0n1p2 1085440 1290239 204800 100M EFI 系统
/dev/nvme0n1p3 1290240 1323007 32768 16M Microsoft 保留
/dev/nvme0n1p4 1323008 419337986 418014979 199.3G Microsoft 基本数据
/dev/nvme0n1p5 419338240 420745215 1406976 687M Windows 恢复环境
/dev/nvme0n1p6 420747264 1000212479 579465216 276.3G Microsoft 基本数据

如,按照分区顺序,大小,我这里基本可以确认 /dev/nvme0n1p4 是 C 盘, /dev/nvme0n1p6是 D 盘。

1
2
3
# 建一个目录 挂载
sudo mkdir /mnt/d
sudo mount /dev/nvme0n1p6 /mnt/d

这只是临时挂载,重启系统需要再次执行挂载命令。启动时自动挂载需要修改文件/etc/fstab

1
2
3
4
sudo vim /etc/fstab

# 加入如以下(我这里是ntfs系统,如果FAT32,把ntfs改成vfat即可)
/dev/nvme0n1p6 /mnt/d ntfs defaults 0 0

CAPS 与 CTRL 键位互换

1
sudo vi /usr/share/X11/xkb/keycodes/evdev

搜索 <CAPS>CTRL, 并互换后面的数字。

1
2
3
4
5
...
<CAPS> = 37;
...

<LCTL> = 66;

注销,重新登录生效。

安装L2TP/IPSec VPN

公司办公用的是这个VPN,在家要处理一些事情需要连接。

1
2
3
sudo add-apt-repository ppa:nm-l2tp/network-manager-l2tp  
sudo apt update
sudo apt install -y network-manager-l2tp network-manager-l2tp-gnome

安装后就可以直接在 设置>网络> VPN > ‘+’ > ‘第2层隧道协议(L2TP)’ 中添加了。

环境变量

在home目录下建一个 .bash_profile 放自定义的环境变量,并在启动终端时自动应用。

1
2
3
cd
touch .bash_profile
echo "source \$HOME/.bash_profile" >> .zshrc

字体设置

长时间搬砖,字体一定得看着束缚。 个人偏好CamingoCode字体。更多字体

1
sudo apt install -y font-manager

字体下载好后,打开安在,在IDE/终端内设置该字体即可。

科学上网

为了面向 Google , Stackoverflow 编程, 科学上网必不可少。我用的这家,¥90多一年,速度够用。

换个Grub2主题

也就是开机选择系统的界面主题。

主题 breeze。 更换步骤如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 下载
git clone [email protected]:gustawho/grub2-theme-breeze.git

# 主题移到合适位置
sudo mkdir /boot/grub/themes
sudo cp -r grub2-theme-breeze/breeze /boot/grub/themes/breeze

# 修改默认配置
sudo vim /etc/default/grub
# 添加如下
GRUB_THEME="/boot/grub/themes/breeze/theme.txt"

# 配置
sudo grub-mkconfig -o /boot/grub/grub.cfg

修改开机启动顺序

默认 Win,毕竟有时候家人也要用。但默认配置是

  1. Ubuntu
  2. Ubuntu 的高级选项
  3. Windows
  4. EFI 设置

看着难受,必须把 Win 第一, Ubuntu第二。

很简单,修改 /boot/grub 即可。

1
2
3
4
5
# 该文件是只读的, 给一个修改权限
sudo chmod u+w /boot/grub/grub.cfg

# 修改文件
sudo vim /boot/grub/grub.cfg

menuentry 'xxx' {} 就对应显示的一个启动菜单, 把menuentry 'Windows Boot Manager xxx {}' 移动到menuentry 'Ubuntu' xxx {} 之前 :wq保存即可。

1
2
# 恢复只读权限
sudo chmod u-w /boot/grub/grub.cfg

上面的方式,在系统更新 grub 后,或 sudo update-grub之后会失效(grub.cfg 文件被更新了)。

推荐使用下面的方式,即 修改配置文件 /etc/default/grub , 设置 GRUB_DEFAULT=2, 这里的2是 win 在启动界面的顺序,从上到下0,1,2

1
2
3
4
5
6
7
8
9
> # sudo vim /etc/default/grub
>
> GRUB_DEFAULT=2
> GRUB_TIMEOUT_STYLE=hidden
> GRUB_TIMEOUT=10
> GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
> GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
> GRUB_CMDLINE_LINUX=""
>

顶部状态栏显示CPU等监控信息

效果如下:

其实这只是桌面系统gnome的一个插件,我们只需要安装一个 Chrome 浏览器插件GNOME Shell integration 和 本地的代理chrome-gnome-shell 就可以在https://extensions.gnome.org/ 上安装、管理你的桌面插件。

  • Chrome 浏览器插件 -> chrome-gnome-shell ;

  • 本地代理安装

    1
    sudo apt install chrome-gnome-shell

安装完成后,打开 https://extensions.gnome.org ,搜索 system-monitor ,打开开关,状态栏就有了,可以点击设计按钮设置喜欢的样式。

2020-08-29_16-52.png

软件篇

Chrome

最喜欢的浏览器还是Chrome, 直接下载 .deb 包安装

Typora

没错,Markdown 就用它,简洁而强大。

1
2
3
4
5
6
7
8
# or run:
# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAE
wget -qO - https://typora.io/linux/public-key.asc | sudo apt-key add -
# add Typora's repository
sudo add-apt-repository 'deb https://typora.io/linux ./'
sudo apt update
# install typora
sudo apt install -y typora

Flameshot

很强大的一款截图软件,写文档需要标注,说明,马赛克等等,很实用。

1
sudo apt install -y flameshot

Enpass

一款仅次于 1password 的密码管理软件。 由于是早期付费用户(¥80全平台==),还是享受到一定优惠的。

1
2
3
4
5
6
sudo - i 
echo "deb https://apt.enpass.io/ stable main" > /etc/apt/sources.list.d/enpass.list
wget -O - https://apt.enpass.io/keys/enpass-linux.key | apt-key add -
apt update
apt install -y enpsudo vi /usr/share/X11/xkb/keycodes/evdevass
exit

SwitchHosts

一款 Electron 写的跨平台 Hosts 管理软件,管理/切换 Hosts很方便。

SwitchHosts

images/PNG image.png

SMB服务

手机与 Linux 怎么快速传文件,我考虑用了 SMB。 正好苹果手机的文件支持连接SMB服务。

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
# 安装
sudo apt-get install -y samba samba-common

# 设置一个共享文件夹
mkdir /home/razeen/wspace/share

# 权限放开
sudo chmod 777 /home/razeen/wspace/share -R

# 添加用户, 需要输入密码
sudo smbpasswd -a razeen
New SMB password:
Retype new SMB password:
Added user razeen.

# 配置
sudo vim /etc/samba/smb.conf

# 我简单设置了一下
[ubuntu]
comment = ubuntu share dir
path = /home/razeen/wspace/share
public = yes
writable = yes

# 重启服务
sudo systemctl restart smbd.service

# 开机自启
systemctl enable smbd.service

在手机直接输入 smb://你的ip 浏览器提示打开文件应用, 确认,然后进去输入刚刚设置的账户以及密码即可。然后手机中的文件就可以直接分享到电脑,电脑上的文件拖到共享文件夹可以快速下载。

搬砖工具篇

oh-my-zsh

高效,美观的终端,就靠它了。

先安装 zsh , git编译

1
sudo apt install zsh git

再安装 oh-my-zsh

1
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

设置启动时自动进入 zsh

首选项 -> 配置文件 -> 运行自定义命令而不是shell -> 自定义命令 输入 zsh

tmux

分屏,Session, 多缓存区,高效管理终端,终端复用 用它没错。

1
sudo apt install -y tmux

配置还在摸索,Mac 上的不适用了,后面再单独整理一篇文章。

vim

效率,极客之选。

1
sudo apt install -y vim

同上,配置还在摸索,Mac 上的不适用了,后面再单独整理一篇文章。

docker

安装。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sudo apt update
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

把 docker 加入当前用户组,然后重启,用非 root 运行 docker。

1
sudo usermod -aG docker $USER

添加国内的镜像源。

1
2
3
4
5
6
7
8
9
10
11
sudo vim /etc/docker/daemon.json

# 163
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}

# 重启 docker服务
systemctl restart docker.service
# 自启动
systemctl enable docker.service

VSCode 配置

好用,没话说。直接官网下载,点击安装。

Golang 篇

作为主力编程语言,不能怠慢。

从源码安装

必须从源码安装,掌控每个细节。

通商准备工作

给自己建一个工作区, 以及相关目录

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
cd 

# go 相关目录
mkdir -p wspace/source/go \
wspace/source/go14 \
wspace/go/src \
wspace/go/bin

# 相关环境变量
echo '
# 我的工作区
export WSPACE=$HOME/wspace
# 源码文件
export SOURCECODE=$WSPACE/source
# go 安装引导
export GOROOT_BOOTSTRAP=$SOURCECODE/go14
# go root
export GOROOT=$SOURCECODE/go
# go path
export GOPATH=$WSPACE/go
# go bin
export GOBIN=$GOPATH/bin
# go module
export GO111MODULE=on
# go proxy
export GOPROXY=https://goproxy.io,direct
# cgo
export CGO_ENABLED=0

# PATH
export PATH=$PATH:$GOROOT/bin:$GOBIN
' >> .bash_profile

source .bash_profile
下载Go1.4引导
1
2
3
4
5
6
curl https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz -v -o go1.4.tar.gz
tar -zxvf go1.4.tar.gz
mv go/* $GOROOT_BOOTSTRAP
rm -fr go go1.4.tar.gz
cd $GOROOT_BOOTSTRAP/src
./all.bash
下载源码并编译
1
2
3
4
5
6
git clone https://go.googlesource.com/go $GOROOT
cd $GOROOT
git checkout go1.15
cd src
./all.bash
go version