加载中…
正文 字体大小:

将操作系统从A机搬家到B机

(2018-04-03 23:32:37)
标签:

archlinux

linux

系统打包

分类: 技术类
本着高效轻便简捷的原则,我移动办公使用了一台UMPC,不错,就是17年中期热了一段时间的GPD Pocket口袋笔记本。这玩艺儿单从硬件配置上说,已完全能满足我日常办公、编程、上网等需求。但有件事很让人烦心,那就是这玩儿用的是win10操作系统!win10系统说起来确实很好用,但它有个对我来说是“致命”的缺陷,那就是一旦它要进行系统更新,我就得等上一两个小时。虽然这款笔记本也可以使用官方的ubuntu系统,但官方系统自带的垃圾软件实在太多,整个系统安装完就5个多GB,已经与win10系统差不了多少,所以我一直在用原装的win10。

最近一段时间在撰写一篇20多万字的文档,由于我现在已不用office办公套件,win10上也安装了vim做为我的文本编辑工具,但有两个问题让我很头痛,一个是win10上的vim启动后有边框,本来umpc屏幕就已经很小,四面边框再占去不少的空间,文本显示的区域就更窄!二是win10上无法使用我自己的输入法,win10自带的五笔输入法有些傻缺,键完四个字母后文字不能自动上屏,需要用户再敲一下空格键字才能上去,而我自己的输入法,已经将我常用的两千多个专有词汇编入到了编码文件中,不能使用自己的输入法,我写起文档来实在不太顺手。基于上述种种不满意,我决定将这GPD Pocket安装成archlinux。

不过,我不打算从头安装。因为我的办公台式机与我另外两个笔记本,都已是archlinux系统,其中一个笔记本的硬件配置与pocket差不多,我决定将这个笔记本的系统直接移植到pocket上去。以下,是整个移植的过程。

1、将笔记本系统打包
打包命令:

tar -cvpzf /mnt/mydb/2018-0402-beifeng.tar.gz --exclude=proc --exclude=lost+found --exclude=mnt --exclude=sys --exclude=media --exclude=home/liu/myword --exclude=home/liu/mydb /

打包命令的一个重点,是要把/boot目录给打进去,否则在新机器上恢复之后,会有机器重启失败的问题:另一个要点,是要手工重建上述被剔除掉的文件夹:proc、mnt、sys等。

打包操作中,要注意的关键点有以下几个:
(1) 不要在原机子启动之后,直接在原机上打包!虽然我看到网上有资料说,可以在原机启动之后,直接在root用户权限下打包整个系统,然后再到新机子上去解包系统。但我尝试之后发现,新机上解包后,系统无法正常启动,因为/bin目录下有一个动态文件,只要机子在运行,这个文件就不能被正常打包到,而新机子上缺了这个文件,就不能启动!所以,正确的打包方法,应该是用U盘ISO镜象系统启动原机,然后从U盘系统中,对整个原机的操作系统进行打包。

(2)打包时有一部份目录需要剔除掉,网上的资料在写这些目录的名称时,都顺手给出了/线!而使用了/线,打出来的包解包后,目录层次将会出现混乱!所以,凡是要剔除的目录,前面一律不能写/线。比如上面命令中--exclude=proc --exclude=mnt --exclude=sys,剔除了proc、mnt、sys三个目录,但都没有在目录前面写上/线。

(3)用户家目录下,不是所有文件夹都需要搬家到新机子上面去的,这些文件夹,也要剔除。比如上面命令中,我剔除了我的文档目录(myword)与我的数据库目录(mydb)

(4)特别申明,我的机子启动管理,没有使用常见的grub,而是直接使用的bootctl,所以打包时,一定要将boot目录打进去,因为所有uefi启动文件,都放在boot目录下。

2、在新机上恢复系统

将打包后的文件2018-0402-beifeng.tar.gz拷贝到U盘启动盘中,然后使用U盘系统启动新机,直接对新机进行分区与格式化操作,然后挂载硬盘分区到U盘启动盘的mnt目录下,完成挂载之后,开始将U盘中的打包文件,解包到新机的硬盘上去,命令如下:

tar xvpfz 2018-0402-beifeng.tar.gz -C /mnt
如果是已经arch-chroot到了新系统中,则应该执行的解包命令是:
tar xvpfz 2018-0402-beifeng.tar.gz -C /
请务必要注意与上条命令的区别,否则解包解错了地方,那就麻烦大了。

3、修改新机配置文件并建立系统目录
新机上最关键的配置文件,是/etc/fstab文件。这个文件是原机挂载磁盘的文件,现在的新机,磁盘分区肯定与原机不一样,所以这里需要按照新机的实际情况,修改这个配置文件。
原机上的几个系统目录,我们在打包时并没有将其打进来,所以这时候要将这几个目录重建一下:proc、mnt、sys

4、修改并安装系统启动管理器

如前所述,原机与新机,都使用bootctl作为启动管理工具,所以这里需要重新对新机的启动管理工具进行安装、配置与修改,执行下面两条命令:
bootctl install    安装systemctl的启动管理器
bootctl update    若启动文件有修改,则运行本命令进行更新;
关于启动文件的修改,本博过去有文档讨论过,这里就不再多啰嗦。

5、ok,现在可以重启新机子,拨下U盘,看看新机能不能自动通过启动管理器启动。
如果前面一切操作正确无误的话,原机的整个操作系统,就已经顺利搬家到新机子中来啦。
---------以下,是一些关键命令,放在这里,供参考。-------------

mount /dev/sda7 /mnt/boot
swapon /dev/sda9
vi /etc/pacman.d/mirrorlist
systemctl stop dhcpcd@enp8s0.service(关掉有线网络的dhcpcd)
ip link(查看所有网络设备,为启用无线网做准备)
iw dev
ip link set wlp2s0 up
ip link show wlp2s0
iw dev wlp2s0 scan | grep SSID
wpa_supplicant -B -i wlp2s0 -c <(wpa_passphrase "无线路由的名称" "无线路由的密码")
dhcpcd wlp2s0

acpi    查看电池电量情况;
arch-chroot /mnt    从启动盘进入新系统
bootctl install        安装systemctl的启动管理器
bootctl update        若启动文件有修改,则运行本命令进行更新;
devilspie    这玩艺儿是个查找进程ID号的工具,未必需要
chmod +x /home/liu/www.sh    为该文件加上可执行的权限,这个脚本我是桌面壁纸每隔20秒轮显的脚本
fdisk -l        查看磁盘分区的使用情况;
free -h        查看内存的使用情况;
journalctl -xe        检查启动项,确保没有启动失败的东西;
locale-gen        更新系统的编码方式;
mkinitcpio -p linux        生成内核的启动镜象文件;
mount /dev/sda4 /mnt/U    手动挂载U盘;
netctl disable 无线路由名        关闭无线网络;
netctl enable 无线路由名         启用无线网络;
netctl stop 无线路由名        停止无线网络;
pacman -Q |uniq -u |wc -l        查看系统安装了多少个包;
pacman -Rdd 包名        强制删除某个包,不理会其关联包的提醒;
pacman -R devilspie        删除devilspie包;
rcnscd restart  //更改hosts文件之后,立即激活


//下面这几行,是检查并编辑一些重要的配置文件;
vim /etc/hostname
vim /etc/fstab
vim /etc/hostname
vim /etc/hosts
vim /etc/locale.conf
vim /etc/locale.gen
vim /etc/php/php.ini
vim /etc/timezone
vim /etc/vconsole.conf
vim /home/arch_chroot.txt
vim /home/liu/.bashrc
vim /home/liu/.config/openbox/autostart
vim /home/liu/.xinitrc
vim .Xdefaults
vim .xinitrc
//上面,是用vim编辑了一些配置文件;
wifi-menu -o        搜索当前环境中可用的无线热点;
xbacklight -set 20 控制屏幕的亮度。
cp /home/liu/lwb.mb /usr/share/fcitx/table/lwb.mb        拷贝自定义的五笔输入法码表文件到系统中去;
pacman -Q | uniq -u | wc -l    查看系统中安装了多少个包;
mv 1212.asoundrc .asoundrc     重命名了使用HDMI时,对声音输出端口的设置;

///以下命令为一组,目的是清空战用过高的缓存,必须全部在root下执行:
sync  //这条命令是将挂起的所有缓冲区写到磁盘中,避免下面清空缓存后,造成有文件写入不完整的问题。
echo 1>/proc/sys/vm/drop_caches //设为1,意思是释放页缓存;
echo 3 > /proc/sys/vm/drop_caches //设为3,意思是释放所有缓存;
echo 2 > /proc/sys/vm/drop_caches //设为2,意思是释放dentries和inodes.
echo 0 > /proc/sys/vm/drop_caches //设为0,是默认值,意思是不释放缓存,这个是系统默认的;
free -h
//以上设置完成后,用free检查一下设置的效果。注意:设为123任何一个都可以,但完成之后,必须再次设为0,以恢复系统默认值。


lspci        //查找VGA在硬件列表中的编码;
setpci -s 00:02.0 F4.B=888888    //以十六进制的方式,设置屏幕的亮度。其中,00:02.0,就是VGA的代码;888888是十六进制的亮度参数。00为最暗ff为最亮。
setpci -s 00:02.0 F4.B=88
setpci -s 00:02.0 F4.B=ff
xgamma -gamma .85   //这玩艺儿也是个设置硬件参数的方式,但目的是什么,我给忘了……
cal && date        //这个不必多说,就是显示日历与时间。



0

阅读 评论 收藏 转载 喜欢 打印举报
已投稿到:
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有