折腾 Ubuntu 20.04 LTS 开发环境

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

NUC 用了一段时间,还是有点卡,CPU跟不上。 最后还是组装了一台台式主机,将原来的系统盘查上去直接就可使用,爽到飞起。 至于NUC就当服务器用了。

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

配置篇

配置
CPU i5-10210U (1.6GHz-4.2GHz) Intel(R) Core(TM) i5-10400F CPU @ 2.90GHz
显卡 Intel UHD GeForce GTX 1050 Ti
内存 32G x 2 (相当浪费==) 32G
磁盘 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的文件,找到磁盘,挂载即可。

# 找磁盘
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 盘。

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

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

sudo vim /etc/fstab

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

CAPS 与 CTRL 键位互换

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

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

    ...
    <CAPS> = 37;
    ...

    <LCTL> = 66;

注销,重新登录生效。

安装L2TP/IPSec VPN

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

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 放自定义的环境变量,并在启动终端时自动应用。

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

字体设置

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

sudo apt install -y font-manager

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

科学上网

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

换个Grub2主题

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

主题 breeze。 更换步骤如下。

# 下载
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 即可。

# 该文件是只读的, 给一个修改权限
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保存即可。

# 恢复只读权限
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

# 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 ;

  • 本地代理安装

    sudo apt install chrome-gnome-shell
    

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

2020-08-29_16-52.png

软件篇

Chrome

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

Typora

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

# 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

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

sudo apt install -y flameshot

Enpass

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

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服务。

# 安装
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编译

sudo apt install zsh git 

再安装 oh-my-zsh

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

设置启动时自动进入 zsh

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

tmux

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

sudo apt install -y tmux

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

vim

效率,极客之选。

sudo apt install -y vim

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

docker

安装。

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。

sudo usermod -aG docker $USER

添加国内的镜像源。

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 篇

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

从源码安装

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

通商准备工作

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

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引导
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
下载源码并编译
git clone https://go.googlesource.com/go $GOROOT
cd $GOROOT
git checkout go1.15
cd src
./all.bash
go version

comments powered by Disqus