迁移运行中的Archlinux系统至移动硬盘

来自KlniuWiki
跳转到: 导航, 搜索

用 gparted 将移动硬盘分一块下来(39G),格式化为 ext3 或者 ext4。 说明:下面的操作都使用 root 权限进行。

  • 挂载并进入刚刚新建的ext3分区,建立一些系统目录:tmp、proc、sys、dev、mnt、media,即:
cd /media/新分区根目录
mkdir -v tmp proc sys dev mnt media
  • 拷贝其他目录(bin、home、sbin、usr、boot、lib、etc、opt、root、srv、var 等)到此,上述自己建立的目录不需要拷贝,那些目录里面的东西系统启动时会自动产生。拷贝时请使用参数-a,即保留文件权限信息,不然之后会出现问题,即:
 
cp -av /bin /home /sbin /usr /boot /lib /etc /opt /root /srv /var .
  • 编辑 etc/fstab, 将你的新根目录的挂载项写进去,这里推荐用 UUID 挂载,分区的 UUID 可以使用 blkid 命令查看。
关于 swap,我没有单独分 swap 区而另外采用了 swap 文件的方法(不使用 swap 也是可以的),新建一个空白块文件(1G):
head -c 1G /dev/zero > mnt/swapfile
mkswap mnt/swapfile
然后将 swap 文件的挂载项一并写入 fstab,请注意,此处编辑的已经是移动硬盘内的 fstab 文件了,swap 的挂载项一定要写在 / 挂载项的後面,不然挂载时就找不到它。示例 fatab 文件如下:
#
# /etc/fstab: static file system information
#
# <file system>        <dir>         <type>    <options>          <dump> <pass>
none                   /dev/pts      devpts    defaults            0      0
none                   /dev/shm      tmpfs     defaults            0      0
none                   /tmp          tmpfs     defaults            0      0

UUID=9142ab1a-b0f3-41e0-aa7b-b7e04789a2a9 / ext3 defaults 0 0
/mnt/swapfile swap swap defaults 0 0
  • 编辑 boot/grub/menu.lst 文件,也推荐使用 UUID, 示例 menu.lst 文件如下:
default 0
timeout 3
color light-blue/black blink-light-cyan/blue
 
title Arch Linux
root (hd0,1)
kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/9142ab1a-b0f3-41e0-aa7b-b7e04789a2a9 ro vga=791 quiet
initrd /boot/kernel26.img
 
title Arch Linux Fallback
root (hd0,1)
kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/9142ab1a-b0f3-41e0-aa7b-b7e04789a2a9 ro
initrd /boot/kernel26-fallback.img
这里需要注意的是 root (hd0,?) 应该是 hd0,而不是其他,因为从移动硬盘上启动的时候移动硬盘被 grub 认为是第一块硬盘。
  • 安装 grub 到移动硬盘,使用 grub-install 命名将 grub 装到移动硬盘的 MBR 上:
grub-install /dev/sdb
  • 重新生成 initrd,这步非常重要,因为一般情况下 mkinitcpio 的配置里面没有 usb 这个 hook,如果不重新生成 initrd 的话启动时就会不能识别移动硬盘从而导致不能顺利挂载根文件系统。编辑 etc/mkinitcpio.conf, 将 usb 添加到 HOOKS 行。最後结果类似这样:
HOOKS="base udev autodetect pata scsi sata usb usbinput keymap filesystems"
  • chroot 进去重新生成 initrd,即
chroot .
mount --bind /proc proc
mount --bind /dev dev
mount --bind /sys sys
mount --bind /var var #这是为了可以直接利用 pacman 的软件包缓存
 
pacman -U /var/cache/pacman/pkg/kernel26...
#或者:
/sbin/mkinitcpio -p kernel26
建议在迁移完毕之后,在本机上进入移动硬盘内的 archlinux,然后安装全部的开源显卡驱动,这样方便移动硬盘在移动时不会因为显卡问题启动不起来,而且这些驱动很小的。
sudo pacman -S xorg-video-drivers
整个迁移过程到此就全部完成,好了重启计算机,选择从 usb hdd 启动,熟悉的 grub 界面就会出现在你的眼前,enjoy it!

参见

个人工具
分类
化学
[×] 國學
学佛
[×] 数学
物理
生活
[×] 英语
读书
辞典
廣告