Ext4 to Btrfs 转换手记
想了N久开头怎么写,最后决定不废话,直接进入正题!
Btrfs是Linux新推出的文件系统格式,关于它的介绍可以看这里,本文就不再多说了。
一、安装btrfs-tools:
1 | sudo apt-get install btrfs-tools |
二、准备:
首先确定你的内核版本在2.6.31以上,目前Ubuntu上2.6.35-25是比较新的内核版本,推荐使用,另外/boot必须是单独分区,因为grub暂时不支持btrfs,所以无法读取,这也就意味着/和/boot分在一个区的话,将不能对/进行转换。
然后要确定你的分区是不是都以UUID为识别方式挂载,因为转换为btrfs之后,分区的UUID会改变,所以如果使用UUID来挂载的话,会造成转换后无法挂载分区,特别是要转换系统分区的用户要注意。另外,Ubuntu默认的grub设置里也是用UUID来识别分区,这个我们都需要进行处理,步骤如下:
查看当前的文件系统:
1 | mount |
会看到类似下面的输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /dev/sdb6 on / type ext4 (rw) proc on /proc type proc (rw,noexec,nosuid,nodev) none on /sys type sysfs (rw,noexec,nosuid,nodev) fusectl on /sys/fs/fuse/connections type fusectl (rw) none on /sys/kernel/debug type debugfs (rw) none on /sys/kernel/security type securityfs (rw) none on /dev type devtmpfs (rw,mode=0755) none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620) none on /dev/shm type tmpfs (rw,nosuid,nodev) none on /var/run type tmpfs (rw,nosuid,mode=0755) none on /var/lock type tmpfs (rw,noexec,nosuid,nodev) /dev/sdb2 on /boot type ext2 (rw) /dev/sdb8 on /usr type ext4 (rw) /dev/sdb7 on /home type ext4 (rw) /dev/sda6 on /media/DOC type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096) /dev/sdb1 on /media/OFAN-Mobile_ type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096) /dev/sda7 on /media/OTHER type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096) /dev/sda5 on /media/PROG type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096) /dev/sda1 on /media/Win7 type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096) binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev) gvfs-fuse-daemon on /home/ofan/ .gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=ofan) |
这里重点看ext4的部分:
1 2 3 4 | /dev/sdb6 on / type ext4 (rw) /dev/sdb8 on /usr type ext4 (rw) /dev/sdb7 on /home type ext4 (rw) /dev/sdb2 on /boot type ext2 (rw) |
这里需要记下哪个分区对应了哪个挂载点,另外你可能需要用笔记下/boot的设备路径,然后以root用户身份打开并编辑/etc/fstab,更改之前务必做好备份,这里用是vim:
1 2 | sudo cp /etc/fstab {,.bak} sudo vim /etc/fstab |
打开之后将挂载点的UUID部分全部替换为分区的设备路径,注意对应,因为/boot分区和其他非ext分区不需要转换,所以就不用改了:
1 2 3 4 5 6 7 8 9 10 11 | proc /proc proc nodev,noexec,nosuid 0 0 /dev/sdb6 / btrfs defaults 0 1 UUID=4e968ab2-cbd8-446b-b4eb-4bbef87521ea /boot ext2 defaults 0 2 /dev/sdb7 /home btrfs rw 0 0 UUID=5EF043EBF043C84B /media/DOC ntfs-3g defaults,nosuid,nodev,locale=zh_CN.utf8 0 0 UUID=96F60915F608F771 /media/OFAN-Mobile_ ntfs-3g defaults,nosuid,nodev,locale=zh_CN.utf8 0 0 UUID=762E4A0E2E49C837 /media/OTHER ntfs-3g defaults,locale=zh_CN.utf8 0 0 UUID=406E3EBC6E3EAA94 /media/PROG ntfs-3g defaults,locale=zh_CN.utf8 0 0 UUID=DCA0F1B9A0F19A6A /media/Win7 ntfs-3g defaults,locale=zh_CN.utf8 0 0 /dev/sdb8 /usr btrfs defaults 0 2 UUID=06b702fc-87c6-4fa8-b9f1-2bcfd70667f8 none swap sw 0 0 |
不要急着重启,检查下btrfs-convert这个工具是否可用:
1 | type btrfs-convert |
记下返回的路径,一般为/sbin/btrfs-convert
重启,进入grub的菜单后按e编辑启动命令,在以'linux'开头的那一行,将内核参数,即‘root=UUID’之后的(包括‘root=UUID’)的都删掉,但不要删掉下一行,然后输入'initramfs',按下 Ctrl-X 开始引导。
不出意外,一会会进入Busybox的终端,命令提示符为'(initramfs)',此时系统没有挂载任何分区。
三、执行转换
首先我们需要btrfs-convert这个工具:
挂载根目录分区'/dev/sdb6'(这个路径应该在之前有记录),
1 2 | mkdir ext4_root mount -t ext4 /dev/sdb6 ext4_root |
拷贝,并卸载,
1 2 | cp ext4_root /sbin/btrfs-convert /sbin/ umount /dev/sdb6 |
检查分区错误,
1 2 3 | fsck .ext4 -f /dev/sdb6 fsck .ext4 -f /dev/sdb7 fsck .ext4 -f /dev/sdb8 |
转换,
1 2 3 | btrfs-convert /dev/sdb6 btrfs-convert /dev/sdb7 btrfs-convert /dev/sdb8 |
转换需要一定的时间,注意不要终端电源或关机。
四、完成
当所有分区都转换完成后,不要急着重启,还记得/boot分区的设备路径么,马上就用到它。
重启,进入grub菜单后,按下e编辑启动命令,在内核参数即以'root=UUID'开头的部分,将'root='后的UUID删除掉,换为之前记录的根目录的设备路径,我的是 /dev/sdb6,就改为'root=/dev/sdb6',务必要设置正确,否则内核会无法挂载根目录分区。
最后内核参数应该是这样的形式:
1 | linux ... root= /dev/sdb6 ro ... |
按下Ctrl-X开始引导,进入系统后需要更新一下grub:
1 | sudo update-grub |
至此,转换结束。
Enjoy!
关于Ubuntu panel使用的小技巧
1. Ubuntu 10.04的panel经常会发生一些怪异到现象,比如图标错位,显示不全等。输入命令 $ killall gnome-panel 就可以让panel重启,显示就恢复正常了。
2. 很多人用Ubuntu都会开compiz提供到窗口阴影特效,但是当panel背景设置为头名时,会看到下部边框有阴影,看起来很别扭。解决方法简单:打开“Compiz Config设置管理器”(如果没有安装到话可以到软件仓库里找),然后选择“窗口装饰”插件,在“阴影窗口”一栏里写 “any & !(name=gnome-panel)",意思是对进程名字为gnome-panel不使用窗口阴影,这样透明效果更好了。
3.待续...
Ubuntu 10.04 安装ibus最新版,以及ibus运输入法
前几天看到个ibus用到运输入法前端。地址:http://code.google.com/p/ibus-cloud-pinyin/
作者说正在开发中,其实大部分功能都能使用而且比较稳定了。
这个运输入法只支持ibus 1.3.4以上到版本,而Ubuntu 10.04默认安装的版本是1.2,而且官方源里没有升级。
1.添加PPA源,升级ibus:
$ sudo add-apt-repository ppa:shawn-p-huang/ppa
$ sudo apt-get update
2.到新利得软件包管理器里标记所有升级到包,应用,安装更新。
3.安装svn,同步源代码
$ sudo apt-get install svn
$ mkdir tmp
$ svn checkout http://ibus-cloud-pinyin.googlecode.com/svn/trunk/ ibus-cloud-pinyin-read-only
$ cd ibus-cloud-pinyin-read-only
$ make && sudo make install
enjoy!