在 Archlinux 上给 U 盘安装 Archlinux

写项目的时候,出现过一次开发机与服务器的 mysql 不兼容的问题,想着换成 Linux 开发后端吧。但是公司的笔记本用 windows 还方便演示,所以并没打算把笔记本上面的系统换掉。寻思着怎么在移动硬盘里直接安装一个 Linux 系统,上下班带着跑,环境啊,系统啊都不用配置两套,而且还能即插即用。

但是问题来了,我没有 U 盘可以做启动盘了,我唯一能用的 U 盘里面放着资料,笔记本空间腾不出 60G。这个问题比安装 U 盘系统还麻烦,至少安装 U 盘系统网上找下资料就能解决了。我还没见过别人不用启动盘直接能装系统到另一个硬盘上的,等等,我们见过,在 windows 上能给 U 盘安装启动盘的 pe 系统,linux 上能给 U 盘制作系统盘。在现有系统上给别的磁盘安装别的系统似乎原理上是可行的,原理上可行就够了。

分析

让我们详细分析下这个方案:

要解决这个问题,首先要明白 ArchLinux 是怎么安装的。

ArchWiki 的 Installation guide 安装过程看下来,发现安装 ArchLinux 只需要使用正确的工具,就能给一个磁盘装上系统。

那其他的 Linux 衍生版也是这样吗?这个时候我要使用“反正法”了:“其他的系统并不清楚,反正 ArchLinux 是可以的”

懒得长篇大论了,直接看操作。

基础安装

一个可以用的电脑,要么是 Windows 要么是 ArchLinux,要是 Windows 的话自行去 VM 上安装个 ArchLinux,因为我这下面的操作都是在我笔记本的 ArchLinux 系统上完成的。

进入笔记本的 ArchLinux 系统,插上 U 盘,我们就开始操作了。

全程 Terminal 操作,so 打开你的 Terminal

磁盘准备

要安装系统,首先需要把磁盘格式化为对应的格式。

查看磁盘

1
lsblk

找到插上的磁盘,我这里是/dev/sda各位要看准自己的磁盘再操作,要不然重要信息可能会丢失哦

给磁盘分区,你的移动磁盘的东西都会丢失,请做好备份

1
2
3
4
5
6
7
8
9
10
11
12
fdisk /dev/sda
g #gpt 类型
n #新建一个分区,这个分区用来放启动系统的引导的
# 分区的起始点 直接回车
+1024Mb # 磁盘大小
n #新建第二个分区,这个分区是根目录的挂载点
# 分区的起始点 直接回车
+100G # 分一个 100G
n # 新建第三个分区,这个分区是用于放启动
# 分区的起始点 直接回车
# 回车即可,剩余的空间都是这个分区的了
w # 保存修改并退出 如果想重新分区或者不保存修改 q 退出

格式化磁盘

1
2
mkfs.fat -F32 /dev/sdb1
mkfs.ext4 /dev/sdb2

挂载磁盘

1
2
3
sudo mount /dev/sdb2 /mnt
sudo mkdir -p /mnt/boot/efi
sudo mount /dev/sdb1 /mnt/boot/efi

更新源

方法一:使用安装机上的镜像,前提是该系统已换过源

1
2
sudo cp /etc/pacman.d/mirrorlist /mnt/etc/pacman.d/mirrorlist
sudo cp /etc/pacman.conf /mnt/etc/pacman.conf

方法二:乖乖地使用 vim 编辑下面的 list

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# /mnt/etc/pacman.conf
[core]
SigLevel = Optional TrustAll
Include = /etc/pacman.d/mirrorlist

[extra]
SigLevel = Optional TrustAll
Include = /etc/pacman.d/mirrorlist

[community]
SigLevel = Optional TrustAll
Include = /etc/pacman.d/mirrorlist

[multilib]
SigLevel = Optional TrustAll
Include = /etc/pacman.d/mirrorlist

[archlinuxcn]
SigLevel = Optional TrustAll
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch

[antergos]
SigLevel = Optional TrustAll
Server = https://mirrors.tuna.tsinghua.edu.cn/antergos/$repo/$arch
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
# /mnt/etc/pacman.d/mirrorlist

##
## Arch Linux repository mirrorlist
## Filtered by mirror score from mirror status page
## Generated on 2018-11-01
##

## China
Server = http://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
## China
Server = http://mirrors.163.com/archlinux/$repo/os/$arch
## China
Server = http://mirrors.shu.edu.cn/archlinux/$repo/os/$arch
## China
Server = http://mirrors.neusoft.edu.cn/archlinux/$repo/os/$arch
## China
Server = http://mirrors.zju.edu.cn/archlinux/$repo/os/$arch
## China
Server = http://mirror.lzu.edu.cn/archlinux/$repo/os/$arch
## China
Server = http://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
## China
Server = http://mirrors.xjtu.edu.cn/archlinux/$repo/os/$arch
## Chile
Server = http://mirror.archlinux.cl/$repo/os/$arch

安装基础系统

1
2
3
4
5
sudo yay -Sy arch-install-scripts # 安装脚本
su
pacstrap /mnt base base-devel ntfs-3g vim yay linux linux-firmware # pacstrap 脚本,安装 base 组
genfstab -U /mnt >> /mnt/etc/fstab # 生成 fstab 文件
arch-chroot /mnt # Change root 到新安装的系统

时区

设置为亚洲地区的上海城市,也就是中国的标准时区。

1
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

运行 hwclock(8) 以生成 /etc/adjtime:

1
hwclock --systohc --localtime

本地化

1
2
3
4
5
nano /etc/locale.gen
-----------
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8

接着执行 locale-gen 以生成 locale 讯息:

1
locale-gen
1
2
/etc/locale.conf
LANG=en_US.UTF-8

主机名

1
2
3
4
# /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.0.1 archlinux.localdomain archlinux

其中archlinux 就是你的主机名,你可以替把archlinux替换成你自己想要的主机名字

设置密码与新建用户

给 root 更改密码

1
passwd

新建一个用户,假如叫做bubao

1
useradd -m bubao

给新用户bubao设置密码

1
passwd bubao

grub

如果是 Intel 的 CPU,安装intel-ucode

1
pacman -S intel-ucode

如果当前电脑存在其他系统,安装 os-prober

1
pacman -S os-prober

UEFI 模式下,需要安装 efibootmgr,然后部署 grub:

1
2
3
4
pacman -S grub
pacman -S efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB --removable
grub-mkconfig -o /boot/grub/grub.cfg # 生成配置

美化与其他

蓝牙

1
2
3
pacman -S bluez bluez-utils
systemctl start bluetooth.service
systemctl enable bluetooth.service

在 Archlinux 上给 U 盘安装 Archlinux
https://bubao.github.io/posts/ba3c82b6.html
作者
一念
发布于
2019年9月24日
许可协议