ubuntu搬迁:从虚拟磁盘到真实的分区
ubuntu为了增强windows用户的体验,拉拢windows用户加入到linux阵营,做了一些重要改进:允许直接在windows下安装ubuntu,就是运行安装盘中那个叫做wubi.exe的windows执行程序;允许windows用户在没有剩余未分区磁盘空间的情况下,将ubuntu安装在windows分区的一个文件内(类似vmware的虚拟硬盘)。
当初直接在windows下安装的,用了一段时间后,觉得ubuntu8.04很不错,就想将它从虚拟文件中搬移出来,直接存放到我新建的分区下以提高ubuntu的磁盘访问性能。毕竟虚拟磁盘没有真正的磁盘快。经过了一天的研究,最终搬迁成功了,拿出来和大家一起分享。写此文的目的不是鼓励大家也和我一样也进行类似的搬迁行为,只是和大家一起学习,更能认识到linux操作系统的一些特长和技术。
步骤如下:
一、创建新分区
( 因为本人安装windows时将磁盘的最后50G没有分区,留作以后它用,所以有剩余空间创建新分区)
创建分区需要在ubuntu操作系统下进行,命令为:
sudo fdisk /dev/sda
具体操作见下边:
administrator@administrator-desktop:~$ sudo fdisk /dev/sda
The number of cylinders for this disk is set to 19457.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): p
Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x1e851e84
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1275 10241406 7 HPFS/NTFS
/dev/sda2 1276 18355 137195100 f W95 Ext'd (LBA)
/dev/sda5 1276 2550 10241406 7 HPFS/NTFS
/dev/sda6 2551 6374 30716248+ 7 HPFS/NTFS
/dev/sda7 6375 8924 20482843+ b W95 FAT32
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (10750-18355, default 10750):
Using default value 10750
Last cylinder or +size or +sizeM or +sizeK (10750-18355, default 18355): +14G
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
administrator@administrator-desktop:~$
说明:
进入fdisk后,出现提示符Command (m for help):要求输入命令,常用命令如下:
p 显示已有分区
n 创建新分区
m 显示帮助
w 将改动写入磁盘
二、格式化新建分区
创建分区后使用fdisk 的p命令再次显示分区情况,如下:
/dev/sda1 * 1 1275 10241406 7 HPFS/NTFS
/dev/sda2 1276 18355 137195100 f W95 Ext'd (LBA)
/dev/sda5 1276 2550 10241406 7 HPFS/NTFS
/dev/sda6 2551 6374 30716248+ 7 HPFS/NTFS
/dev/sda7 6375 8924 20482843+ b W95 FAT32
/dev/sda8 8925 10749 14659281 83 Linux
可以看到新分区的设备号为/dev/sda8 ,格式化它!命令为 sudo mkfs -j /dev/sda8
格式化完成后重启一次。三、拷贝ubuntu操作系统的文件到新分区.
以下操作在维护模式下进行,就是进入ubuntu系统时在grub下选择recovery mode。本人在一般模式下试过,拷贝某些目录时报了一些错误,但是没有验证这些错误对搬迁后的系统有没有影响,就直接进入了维护模式进行搬迁。
我们看一下都有那些文件和目录需要拷贝,执行命令ls -l /,显示如下:
drwxr-xr-x 2 root root 4096 2008-06-06 08:48 bin
drwxrwxrwx 3 root root 4096 2008-06-17 09:00 boot
lrwxrwxrwx 1 root root 11 2008-06-13 18:09 cdrom -> media/cdrom
drwxr-xr-x 13 root root 14420 2008-06-17 08:29 dev
drwxr-xr-x 133 root root 12288 2008-06-17 10:18 etc
drwxr-xr-x 3 root root 4096 2008-04-28 16:51 home
drwxrwxrwx 2 root root 4096 2008-06-16 17:10 host
drwxr-xr-x 2 root root 4096 2008-04-23 01:48 initrd
lrwxrwxrwx 1 root root 33 2008-06-13 18:11 initrd.img -> boot/initrd.img-2.6.24-19-generic
drwxr-xr-x 16 root root 4096 2008-06-11 15:01 lib
drwx------ 2 root root 16384 2008-06-13 18:08 lost+found
drwxr-xr-x 5 root root 4096 2008-06-17 10:18 media
drwxr-xr-x 2 root root 4096 2008-06-13 18:12 mnt
drwxr-xr-x 5 root root 4096 2008-05-22 17:50 opt
drwxr-xr-x 2 oracle dba 4096 2008-05-05 09:45 oracle
dr-xr-xr-x 137 root root 0 2008-06-17 16:29 proc
drwxr-xr-x 18 root root 4096 2008-06-13 17:57 root
drwxr-xr-x 2 root root 4096 2008-06-13 18:55 sbin
drwxr-xr-x 2 root root 4096 2008-04-23 01:48 srv
drwxr-xr-x 12 root root 0 2008-06-17 16:29 sys
drwxrwxrwt 16 root root 4096 2008-06-17 10:55 tmp
drwxr-xr-x 13 root root 4096 2008-05-05 09:05 usr
drwxr-xr-x 15 root root 4096 2008-04-23 02:07 var
lrwxrwxrwx 1 root root 30 2008-06-13 18:13 vmlinuz -> boot/vmlinuz-2.6.24-19-generic
上边列出的文件和目录中,以下几个有特殊的用途,可以无须拷贝:
host目录 host目录实际上映射的是一个windows分区 ,这个分区下存放着ubuntu的虚拟磁盘文件。
lost+found 这个和文件系统维护有关,其下存放的是系统非法关闭后文件系统丢失的数据。
media 其他windows分区和移动磁盘一般映射到这个目录
mnt 我们将把新建的分区mount到这个目录
proc 内核维护的一个虚拟文件系统
下边我们以归档的方式拷贝所有其他文件和目录. 下边命令的参数-a表示归档方式。归档方式拷贝时会保留文件和目录的所有属性。
sudo mount /dev/sda8 /mnt
sudo cp -a /bin /mnt
sudo cp -a /boot /mnt
sudo cp -a /cdrom /mnt
sudo cp -a /dev /mnt
sudo cp -a /etc /mnt
sudo cp -a /home /mnt
sudo cp -a /initrd /mnt
sudo cp -a /initrd.img /mnt
sudo cp -a /lib /mnt
sudo cp -a /opt /mnt
sudo cp -a /oracle /mnt
sudo cp -a /root /mnt
sudo cp -a /sbin /mnt
sudo cp -a /srv /mnt
sudo cp -a /sys /mnt
sudo cp -a /tmp /mnt
sudo cp -a /usr /mnt
sudo cp -a /var /mnt
sudo cp -a /vmlinuz /mnt
sudo mkdir /mnt/media
sudo mkdir /mnt/mnt
sudo mkdir /mnt/proc
四、修改grub的配置信息
grub配置文件为/boot/grub/menu.lst ,新搬迁的系统 为 /mnt/boot/grub/menu.lst。
(如果你想沟仔对豾indows下的ubuntu,就修改/mnt/boot/grub/menu.lst文件,并在卸载后在windows下安装grub for dos)
这两个文件的主要内容为:
title Ubuntu 8.04.1, kernel 2.6.24-19-generic
root (hd0,5)/ubuntu/disks
kernel /boot/vmlinuz-2.6.24-19-generic root=UUID=8200D1BB00D1B67F loop=/ubuntu/disks/root.disk ro quiet splash
initrd /boot/initrd.img-2.6.24-19-generic
将其改为
title Ubuntu 8.04.1, kernel 2.6.24-19-generic
root (hd0,7)
kernel /boot/vmlinuz-2.6.24-19-generic root=UUID=b484f1e0-dc6c-40bf-9d0c-8a7bd9e080ac ro quiet splash
initrd /boot/initrd.img-2.6.24-19-generic
其中(hd0,7)新建对应新建的分区/dev/sda8; b484f1e0-dc6c-40bf-9d0c-8a7bd9e080ac表示新建分区的UUID编号.
另外可以看到删除了loop=/ubuntu/disks/root.disk,这句话指出了虚拟磁盘的文件名。搬迁后的系统不再使用虚拟文件,所以删除它。
分区的UUID编号可以通过以下方式查看: ls -l /dev/disk/by-uuid/
lrwxrwxrwx 1 root root 10 2008-06-17 16:29 1020A12220A11030 -> ../../sda1
lrwxrwxrwx 1 root root 10 2008-06-17 16:29 2E207485207455B5 -> ../../sda5
lrwxrwxrwx 1 root root 10 2008-06-17 16:29 5016-D49C -> ../../sda7
lrwxrwxrwx 1 root root 10 2008-06-17 16:29 8200D1BB00D1B67F -> ../../sda6
lrwxrwxrwx 1 root root 10 2008-06-17 16:29 b484f1e0-dc6c-40bf-9d0c-8a7bd9e080ac -> ../../sda8
五、修改fstab文件
文件路径为:/mnt/etc/fstab
将含root.disk和swap.disk的两行分别改动如下:
/dev/sda8 / ext3 defaults 0 0
/host/swap.disk none swap loop,sw 0 0
上边的第二行表示swap文件,我们需要将swap也搬迁过来,命令如下:
sudo mkdir /mnt/host
sudo cp -a /host/ubuntu/disks/swap.disk /mnt/host
至此,所有搬迁工作结束了,重新启动,试试看能进入新系统吗?为了提升windows用户的体验,ubuntu通过拉拢windows用户加入linux阵营,做了一些重要的改进:允许ubuntu直接安装在windows下,即在安装盘中运行名为wubi.exe的windows执行程序;允许Windows用户在windows分区(类似vmware的虚拟硬盘)的一个文件中安装ubuntu,而不会剩下未分区的磁盘空。
我是直接在windows下安装的。用了一段时间,觉得ubuntu8.04很不错,就想把它从虚拟文件里移出来,直接存放在我新创建的分区里,提高ubuntu的磁盘访问性能。毕竟虚拟磁盘没有真实磁盘快。经过一天的研究,搬迁终于成功。拿出来分享给大家。写这篇文章的目的不是鼓励你和我一样动起来,而是和你一起学习,多了解一些linux操作系统的特长和技术。
步骤如下:
1。创建一个新分区
(因为我安装windows的时候最后50G的磁盘没有分区,所以还有剩余的空创建一个新分区)
在ubuntu操作系统下创建一个分区,命令是:
sudo fdisk /dev/sda
见下:
administrator @ administrator-desktop:~ $ sudo fdisk/dev/sda
这个磁盘的柱面数量设置为190
这没什么问题,但是这大于1024,
并且在某些设置中可能会导致以下问题:
1)在引导时运行的软件(例如,旧版本的LILO)
2)从其他操作系统引导和分区软件
(例如,DOS FDISK、OS/2 FDISK)
命令(m表示帮助):p
Disk /dev/sda: 160.0 GB、160.0 19457柱面
单位= 16065 * 512的柱面= 8225280字节
磁盘标识符:0x1e851e84
设备启动开始结束块Id系统
/dev/sda 1 * 1 1275 10241406 7 HPFS/NTFS
/dev/sda 2 1276 18355 137195100 f W95 Ext ' d(LBA 默认10750):
使用默认值10750
最后一个柱面或+size或+sizeM或+sizeK (10750-18355,默认18355): +14G
Command (m表示帮助):w
分区表已被改动!
调用ioctl()重新读取分区表。
警告:重新读取分区表失败,出现错误16:设备或资源忙。[/br/ ]内核仍然使用旧表。
新表将在下次重新启动时使用。
同步磁盘。
Administrator @ Administrator-desktop:~ $
描述:
进入fdisk后,出现提示命令(m表示帮助):需要输入命令,常用命令如下:
pShow现有分区
n创建新分区
mShow帮助
w将更改写入磁盘
II .格式化新分区
创建分区后,使用fdisk的p命令再次显示分区。以下:
/dev/sda 1 * 1 1275 10241406 7 hpfs/NTFS
/dev/sda 2 1276 18355 137195100 fw95 ext ' d(LBA)
/dev/sda 5 1276 2556。NTFS
/dev/sda 6 2551 6374 30716248+7 hpfs/NTFS
/dev/sda 7 6375 8924 20482843+bw 95 fat 32
/dev/sda 8 8925 10749 146599格式化命令sudo mkfs -j /dev/sda8
后,重新启动它。第三,把ubuntu操作系统的文件复制到新分区。
以下操作是在维护模式下进行的,即进入ubuntu系统时,在grub下选择恢复模式。我在通用模式下进行了尝试,复制了一些目录并报告了一些错误,但没有验证这些错误是否对重新定位的系统有任何影响,就直接进入维护模式进行重新定位。
让我们看看需要复制哪些文件和目录,并执行命令ls -l/, 显示如下:
DRWXR-XR-x2 root 4096 2008-06-08:48 bin
drwxrwxrwx 3 root 4096 2008-06-17 09:00 BOOT
lrwxrwxrwx 1 root 11 2008-06-13 18:09 cdrom-> media/cdrom
DRWXR-XR-x 11 drwxr-xr-x 16 root root 4096 2008-06-11 15:01 lib
drwx-2 root root 16384 2008-06-13 18:08 lost+found
drwxr-xr-x 5 root root 4096 2008-06-17 10:18 media
drwxr-xr-x 2 root root root 4096 drwxr-xr-x 12根root 0 2008-06-17 16:29 sys
drwxrwxrwt 16根root 4096 2008-06-17 10:55 tmp
drwxr-xr-x 13根root 4096 2008-05-05 09:05 usr
drwxr-xr-x 15根root 4000
lost+found这和文件系统维护有关,系统被非法关闭后文件系统丢失的数据都存储在它下面。
media其他windows分区和可移动磁盘一般都会映射到这个目录
mnt我们会将新创建的分区挂载到这个目录
一个由Proc内核维护的虚拟文件系统
下面,我们会通过归档复制所有其他文件和目录。以下命令的参数-a指示归档方法。通过存档方法复制时,文件和目录的所有属性都将被保留。
sudo mount/dev/sda 8/mnt
sudo CP-a/bin/mnt
sudo CP-a/boot/mnt
sudo CP-a/cdrom/mnt
sudo CP-a/dev/mnt
sudo CP-a/etc/mnt
sudo CP-a/home/mnt
sudo CP-a/initrd/mnt[/br Sudo CP-a/sys/mnt
Sudo CP-a/tmp/mnt
Sudo CP-a/usr/mnt
Sudo CP-a/var/mnt
Sudo CP-a/vmlinuz/mnt
Sudo mkdir/mnt/media
Sudo mkdir/mnt/mnt
Sudo mkdir/mnt/proc
IV 修改grub的配置信息
GRUB的配置文件是/boot/grub/menu.lst,新重定位的系统是
(如果想在windows下检查ubuntu,卸载后修改文件/mnt/boot/grub/menu.lst并在Windows下安装GRUB for DOS)
这两个文件的主要内容是:
title Ubuntu 8.04.1,kernel 2 . 6 . 24-19-generic
root(hd0 内核2 . 6 . 24-19-generic
root(HD0,7)
kernel/boot/vmlinuz-2 . 6 . 24-19-generic root = uuid = b 484 f1 e 0-DC6C-40BF-HD0,7-8 a7 BD 09 e 080 AC Roquiet splash
initrd/boot/initrd . img b 484 f1 e 0-DC6C-40BF-9D0C-8 a7 BD 9e 08
另外可以看到loop=/ubuntu/disks/root.disk已经被删除了,这表示虚拟磁盘的文件名。重新定位的系统不再使用虚拟文件,因此删除它。
可以通过以下方式查看分区的UUID号:ls-l/dev/disk/by-UUID/
lrwxrwx 1 root 10 2008-06-17 16:29 1020 a 1220 a 1030-->../../sda 1[lrwxrwxrwx 1 root root 10 2008-06-17 16:29 2e 207485207455 b5-->../../sda 5
lrwxrwxrwx 1 root root 10 2008-06-17 16:29 5016-D49C-->../../sda 7
lrwxrwxrwx 1 root root 10 2008-06-17 16:29 8200 D1 bb 00 D1 b 67 f-->../../sda 6
lrwxrwx 1 root root 10 2008-06-17 16:29b 484 f1 e 0-dc6c-40bf-9d0c-8 a7bd 080 AC-->.../.../sda8
五、修改fstab文件
文件路径为:/mnt将包含root.disk和swap.disk的两行修改如下:
/dev/SD A8/ext 3 defaults 00
/host/swap . disk none swap循环,SW 00上面第二行
表示交换文件,我们也需要重定位swap。命令如下:
sudomkdir/mnt/host
sudocp-a/host/Ubuntu/disks/swap . disk/mnt/host
至此,所有的重定位工作结束,重新启动。你能试着进入新系统吗?
0条评论