飞跃高山与大洋的鱼飞跃高山与大洋的鱼
首页
先看
计算机
  • 数学
  • Linux
  • Arch
  • Manjaro
  • Ubuntu
  • CentOS
  • Kubernetes
  • Web
  • JavaScript
  • TypeScript
  • CSS
  • Canvas
  • Vue
  • Vite
  • NuxtJS
  • Webpack
  • Flutter
  • D3
  • Jest
  • WeApp
  • Utils
  • Nodejs
  • Nestjs
  • Golang
  • Nginx
  • Traefik
  • MySQL
  • MongoDB
  • Redis
  • Docker
算法
  • 像素风
  • Git
  • Github
  • VSCode
  • Chrome
  • Google
  • Bookmark scripts
  • 导航 🎉
  • VuePress 侧边栏插件
  • VuePress 官网
🚇 开往
首页
先看
计算机
  • 数学
  • Linux
  • Arch
  • Manjaro
  • Ubuntu
  • CentOS
  • Kubernetes
  • Web
  • JavaScript
  • TypeScript
  • CSS
  • Canvas
  • Vue
  • Vite
  • NuxtJS
  • Webpack
  • Flutter
  • D3
  • Jest
  • WeApp
  • Utils
  • Nodejs
  • Nestjs
  • Golang
  • Nginx
  • Traefik
  • MySQL
  • MongoDB
  • Redis
  • Docker
算法
  • 像素风
  • Git
  • Github
  • VSCode
  • Chrome
  • Google
  • Bookmark scripts
  • 导航 🎉
  • VuePress 侧边栏插件
  • VuePress 官网
🚇 开往
  • ARCH

    • Arch 神教
    • Arch 系统迁移
      • 制作 Arch Live
      • 分区
        • 1. 查看分区信息
        • 2. 新磁盘修改分区
        • 3. 分区格式化
      • 系统文件迁移
      • 重建 boot
        • 1. 挂载分区并生成 fstab
        • 2. 安装依赖
        • 3. 生成 grub
      • 其他方式
    • 支持 emoji
    • 使用向日葵远程控制
    • Cherry Studio 无法执行 Node

Arch 系统迁移

买了新硬盘,怎么可以吃灰呢?

制作 Arch Live

首先下载新镜像。

# 用U盘替换 /dev/sdx,如 /dev/sdb。(不要加上数字,也就是说,不要键入 /dev/sdb1 之类的东西)
dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress && sync

分区

1. 查看分区信息

首先查看当前系统的分区:

fdisk -l

得到磁盘信息:

# 当前磁盘
Disk /dev/nvme0n1:476.94 GiB
设备               起点       末尾      扇区   大小 类型
/dev/nvme0n1p1     2048    2099199   2097152     1G EFI 系统
/dev/nvme0n1p2  2099200   35653631  33554432    16G Linux swap
/dev/nvme0n1p3 35653632 1000215182 964561551 459.9G Linux 文件系统
# 新磁盘
Disk /dev/nvme1n1:476.94 GiB

2. 新磁盘修改分区

首先进入新磁盘:

fdisk /dev/nvme1n1

根据提示,依次执行:

命令(输入 m 获取帮助):n
分区号 (1-128, 默认  1):
第一个扇区 (2048-1000215182, 默认 2048):
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-1000215182, 默认 1000214527): +1G

创建了一个新分区 1,类型为“Linux filesystem”,大小为 1 GiB。
命令(输入 m 获取帮助):n
分区号 (2-128, 默认  2):
第一个扇区 (2099200-1000215182, 默认 2099200):
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2099200-1000215182, 默认 1000214527): +16G

创建了一个新分区 2,类型为“Linux filesystem”,大小为 16 GiB。
命令(输入 m 获取帮助):n
分区号 (3-128, 默认  3):
第一个扇区 (35653632-1000215182, 默认 35653632):
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (35653632-1000215182, 默认 1000214527):

创建了一个新分区 3,类型为“Linux filesystem”,大小为 459.9 GiB。
命令(输入 m 获取帮助):t
分区号 (1-3, 默认  3): 1
分区类型或别名(输入 L 列出所有类型):L
分区类型或别名(输入 L 列出所有类型):1

已将分区“Linux filesystem”的类型更改为“EFI System”。
命令(输入 m 获取帮助):t
分区号 (1-3, 默认  3): 2
分区类型或别名(输入 L 列出所有类型):19

已将分区“Linux filesystem”的类型更改为“Linux swap”。
命令(输入 m 获取帮助):w
分区表已调整。将调用 ioctl() 来重新读分区表。正在同步磁盘。

注:

n: 新建分区
+16G: 新建分区的大小为 16G
t:修改分区类型,默认都为
L:查看所有的分区类型,找到你需要的

操作完成后可自行查看结果 fdsik -l。

3. 分区格式化

每种不同类型的分区需要不同操作:

# 格式化 boot
mkfs.fat -F32 /dev/nvme1n1p1
# 格式化 swap
mkswap /dev/nvme1n1p2
# 格式化 根分区
mkfs.ext4 /dev/nvme1n1p3

系统文件迁移

# 挂载根分区
mount /dev/nvme1n1p3 /mnt
# 同步数据,此处未同步 boot
rsync -aAXv /* /mnt --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/boot" }

由于经常搞崩电脑,还是练习下拆开步骤的形式。

重建 boot

移除旧磁盘,再进入准备好的 Arch Live 环境。

1. 挂载分区并生成 fstab

# 查看分区信息
fdisk -l
# 挂载根节点
mount /dev/nvme0n1p3 /mnt
# 挂载 boot
mount /dev/nvme0n1p1 /mnt/boot
# 生成 fstab
genfstab -L /mnt > /mnt/etc/fstab

若后续启用 swap,则再执行 genfstab 即可。

2. 安装依赖

进入系统并安装依赖:

arch-chroot /mnt
pacman -S linux mkinitcpio efibootmgr
# 有需要也可重装 grub
pacman -S grub

3. 生成 grub

# 执行 grub-install
grub-install --efi-directory=/boot
# 生成 grub.cfg(若报错,可增加 LANG=C)
grub-mkconfig -o /boot/grub/grub.cfg
# LANG=C grub-mkconfig -o /boot/grub/grub.cfg

其他方式

未曾尝试

# disk
dd if=/dev/sdx of=/dev/sdy conv=noerror,sync
# image
dd if=/dev/sdx of=/run/media/shanyuhai/xxx/sys.img
dd if=sys.img of=/dev/sdy
编辑文档!
上次更新:
贡献者: shanyuhai123
Prev
Arch 神教
Next
支持 emoji