1.048596

移动硬盘安装Ubuntu折腾笔记

最近准备学习一下《Unix 环境高级编程》这本书,就想到要配置一个普通的环境来使用编写一些使用 Unix 操作系统调用的 Demo 来练习。这里想到了三种办法来配置开发环境分别是虚拟机、双系统和使用移动存储介质,这里我选择的是使用 U 盘来测试这里的安装流程,而且巧妙地避免了常常遇到的引导和分区问题。

安装前准备

在安装之前应该先准备以下“配料”来做准备,主要是安装镜像和虚拟机的相关的准备,至于安装镜像则可以到 https://ubuntu.com/download 来下载 Ubuntu 的安装镜像。

  1. 配置一个可以配置 UEFI 启动的虚拟机,或者普通 BIOS 启动也可以
  2. 找到一块速度足够快的硬盘作为目标硬盘,硬盘的速度会影响到系统的流畅度
  3. 下载好任意 Linux 系统的安装镜像文件并加载到虚拟机中

虚拟机设置

虚拟机默认配置的是有一块虚拟硬盘,通过对虚拟硬盘的设置可以把这块硬盘卸载掉。这么做的原因是在经过多次尝试发现将 Linux 安装在移动硬盘中出现最多的问题就是引导问题。通常情况下系统的引导会在硬盘的前部扇区,在主板 BIOS 芯片完成硬件自检和系统引导后就会把硬件的操作权交给所安装的操作系统,但有多块硬盘的情况下会默认把引导设置在第一块硬盘上,这使得我们的系统虽然安装在移动硬盘中,但是离开虚拟机后却无法被 BIOS 正确的找到引导程序导致无法启动。

  • Tips: 卸载掉虚拟机的虚拟硬盘,让移动硬盘被视为第一块硬盘

系统默认安装

处理完虚拟机的引导问题就可以开始安装了。因为虚拟机上只有一块硬盘,所以安装流程可以直接参照在普通机器上的流程,不用担心引导问题,因为安装程序没得选,只能将引导安装在这块移动硬盘上。安装教程看 Ubuntu 官方即可,这里就不一一赘述了,最好的教程莫过于官方的 Wiki 了。

配置环境

刚安装好的系统还没有开发环境,这里就简单配置一下。后续也可以把自己的配置写成脚本,实现依赖远程仓库的自动化配置。

美化 Terminal

安装完成之后可以稍微美化一下来让系统更好用,在 Linux 平时最常用的东西就是终端命令行了,安装一下 zsh 来替换 bash 吧!

下载 zsh 并设置为默认的 shell

sudo apt update
sudo apt install zsh
# Let the zsh be the default shell.
chsh -s /bin/zsh

配置 oh-my-zsh 简单美化一下终端

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

我认为终端不应该过于花里胡哨,简单易用就可以了,所以这里就推荐两个最常用的插件安装。第一个是命令自动补全插件,第二个是语法高亮插件,这些基本能够覆盖绝大多数的使用场景。

git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
git clone git://github.com/zsh-users/zsh-syntax-highlighting $ZSH_CUSTOM/plugins/zsh-syntax-highlighting

安装之后在 ~/.zshrc 文件中的插件部分添加这两个插件并重置终端即可,这个文件将是以后的配置中心,几乎所有 zsh 的配置都可以在这里更改。配置文件发生更改之后不会立即在终端生效,需要重启命令行或者使用下面的命令重新载入新配置。

vim ~/.zshrc
plugins=(
    git
    zsh-autosuggestions
    zsh-syntax-highlighting
)
# Update the configuration made before and apply it to the terminal.
source ~/.zshrc

配置 GCC 环境

虽然 Ubuntu 系统自带了编译环境,但是一般建议使用自己设定版本的编译器。代码编辑器采用的是 VSCode 并安装 C++ 插件。

# Install gcc and vscode in ubuntu.
sudo apt install gcc code

技术总结

经过很多次的尝试和实验,总结了一套在移动硬盘上安装可以即插即用的方法,这里需要强调一下这个是可保存操作进度的方式,这点不同于安装镜像中的 Live 系统。有一个可移动的开发系统,在不同的电脑上都可以使用自己配置得比较顺手的开发系统还是挺实用的。