Chinaunix首页 | 论坛 | 博客
  • 博客访问: 707235
  • 博文数量: 823
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5165
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-21 15:52
文章分类

全部博文(823)

文章存档

2011年(1)

2008年(822)

我的朋友

分类: LINUX

2008-08-21 17:53:51


ubuntu为了增强windows用户的体验,拉拢windows用户加入到linux阵营,做了一些重要改进:允许直接在windows下安装ubuntu,就是运行安装盘中那个叫做wubi.exe的windows执行程序;允许windows用户在没有剩余未分区磁盘空间的情况下,将ubuntu安装在windows分区的一个文件内(类似vmware的虚拟硬盘)。

我当初也是直接在windows下安装的,用了一段时间后,觉得ubuntu8.04很不错,就想将它从虚拟文件中搬移出来,直接存放到我新建的分区下以提高ubuntu的磁盘访问性能。毕竟虚拟磁盘没有真正的磁盘快。经过了一天的研究,最终搬迁成功了,拿出来和大家一起分享。写此文的目的不是鼓励大家也和我一样也进行类似的搬迁行为,只是和大家一起学习,更能认识到linux操作系统的一些特长和技术。

步骤如下:

一、创建新分区
(因为本人安装windows时将磁盘的最后50G没有分区,留作以后它用,所以有剩余空间创建新分区)
创建分区需要在ubuntu操作系统下进行,命令为:
sudofdisk/dev/sda

具体操作见下边:
administrator@administrator-desktop:~$sudofdisk/dev/sda

Thenumberofcylindersforthisdiskissetto19457.
Thereisnothingwrongwiththat,butthisislargerthan1024,
andcouldincertainsetupscauseproblemswith:
1)softwarethatrunsatboottime(e.g.,oldversionsofLILO)
2)bootingandpartitioningsoftwarefromotherOSs
(e.g.,DOSFDISK,OS/2FDISK)

Command(mforhelp):p

Disk/dev/sda:160.0GB,160041885696bytes
255heads,63sectors/track,19457cylinders
Units=cylindersof16065*512=8225280bytes
Diskidentifier:0x1e851e84

DeviceBootStartEndBlocksIdSystem
/dev/sda1*11275102414067HPFS/NTFS
/dev/sda2127618355137195100fW95Ext''d(LBA)
/dev/sda512762550102414067HPFS/NTFS
/dev/sda62551637430716248 7HPFS/NTFS
/dev/sda76375892420482843 bW95FAT32

Command(mforhelp):n
Commandaction
llogical(5orover)
pprimarypartition(1-4)
l
Firstcylinder(10750-18355,default10750):
Usingdefaultvalue10750
Lastcylinderor sizeor sizeMor sizeK(10750-18355,default18355): 14G

Command(mforhelp):w
Thepartitiontablehasbeenaltered!

Callingioctl()tore-readpartitiontable.

WARNING:Re-readingthepartitiontablefailedwitherror16:Deviceorresourcebusy.
Thekernelstillusestheoldtable.
Thenewtablewillbeusedatthenextreboot.
Syncingdisks.
administrator@administrator-desktop:~$

说明:
进入fdisk后,出现提示符Command(mforhelp):要求输入命令,常用命令如下:
p显示已有分区
n创建新分区
m显示帮助
w将改动写入磁盘

二、格式化新建分区
创建分区后使用fdisk的p命令再次显示分区情况,如下:
/dev/sda1*11275102414067HPFS/NTFS
/dev/sda2127618355137195100fW95Ext''d(LBA)
/dev/sda512762550102414067HPFS/NTFS
/dev/sda62551637430716248 7HPFS/NTFS
/dev/sda76375892420482843 bW95FAT32
/dev/sda88925107491465928183Linux

可以看到新分区的设备号为/dev/sda8,格式化它!命令为sudomkfs-j/dev/sda8

格式化完成后重启一次。

三、拷贝ubuntu操作系统的文件到新分区.
以下操作最好在维护模式下进行,就是进入ubuntu系统时在grub下选择recoverymode。本人在一般模式下试过,拷贝某些目录时报了一些错误,但是没有验证这些错误对搬迁后的系统有没有影响,就直接进入了维护模式进行搬迁。

我们看一下都有那些文件和目录需要拷贝,执行命令ls-l/,显示如下:
drwxr-xr-x2rootroot40962008-06-0608:48bin
drwxrwxrwx3rootroot40962008-06-1709:00boot
lrwxrwxrwx1rootroot112008-06-1318:09cdrom->media/cdrom
drwxr-xr-x13rootroot144202008-06-1708:29dev
drwxr-xr-x133rootroot122882008-06-1710:18etc
drwxr-xr-x3rootroot40962008-04-2816:51home
drwxrwxrwx2rootroot40962008-06-1617:10host
drwxr-xr-x2rootroot40962008-04-2301:48initrd
lrwxrwxrwx1rootroot332008-06-1318:11initrd.img->boot/initrd.img-2.6.24-19-generic
drwxr-xr-x16rootroot40962008-06-1115:01lib
drwx------2rootroot163842008-06-1318:08lost found
drwxr-xr-x5rootroot40962008-06-1710:18media
drwxr-xr-x2rootroot40962008-06-1318:12mnt
drwxr-xr-x5rootroot40962008-05-2217:50opt
drwxr-xr-x2oracledba40962008-05-0509:45oracle
dr-xr-xr-x137rootroot02008-06-1716:29proc
drwxr-xr-x18rootroot40962008-06-1317:57root
drwxr-xr-x2rootroot40962008-06-1318:55sbin
drwxr-xr-x2rootroot40962008-04-2301:48srv
drwxr-xr-x12rootroot02008-06-1716:29sys
drwxrwxrwt16rootroot40962008-06-1710:55tmp
drwxr-xr-x13rootroot40962008-05-0509:05usr
drwxr-xr-x15rootroot40962008-04-2302:07var
lrwxrwxrwx1rootroot302008-06-1318:13vmlinuz->boot/vmlinuz-2.6.24-19-generic

上边列出的文件和目录中,以下几个有特殊的用途,可以无须拷贝:
host目录host目录实际上映射的是一个windows分区,这个分区下存放着ubuntu的虚拟磁盘文件。
lost found这个和文件系统维护有关,其下存放的是系统非法关闭后文件系统丢失的数据。
media其他windows分区和移动磁盘一般映射到这个目录
mnt我们将把新建的分区mount到这个目录
proc内核维护的一个虚拟文件系统

下边我们以归档的方式拷贝所有其他文件和目录.下边命令的参数-a表示归档方式。归档方式拷贝时会保留文件和目录的所有属性。
sudomount/dev/sda8/mnt
sudocp-a/bin/mnt
sudocp-a/boot/mnt
sudocp-a/cdrom/mnt
sudocp-a/dev/mnt
sudocp-a/etc/mnt
sudocp-a/home/mnt
sudocp-a/initrd/mnt
sudocp-a/initrd.img/mnt
sudocp-a/lib/mnt
sudocp-a/opt/mnt
sudocp-a/oracle/mnt
sudocp-a/root/mnt
sudocp-a/sbin/mnt
sudocp-a/srv/mnt
sudocp-a/sys/mnt
sudocp-a/tmp/mnt
sudocp-a/usr/mnt
sudocp-a/var/mnt
sudocp-a/vmlinuz/mnt

sudomkdir/mnt/media
sudomkdir/mnt/mnt
sudomkdir/mnt/proc

四、修改grub的配置信息
grub配置文件为/boot/grub/menu.lst,新搬迁的系统为/mnt/boot/grub/menu.lst。
(如果你想彻底卸载windows下的ubuntu,就修改/mnt/boot/grub/menu.lst文件,并在卸载后在windows下安装grubfordos)

这两个文件的主要内容为:
titleUbuntu8.04.1,kernel2.6.24-19-generic
root(hd0,5)/ubuntu/disks
kernel/boot/vmlinuz-2.6.24-19-genericroot=UUID=8200D1BB00D1B67Floop=/ubuntu/disks/root.diskroquietsplash
initrd/boot/initrd.img-2.6.24-19-generic

将其改为
titleUbuntu8.04.1,kernel2.6.24-19-generic

root(hd0,7)

kernel/boot/vmlinuz-2.6.24-19-genericroot=UUID=b484f1e0-dc6c-40bf-9d0c-8a7bd9e080acroquietsplash

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/
lrwxrwxrwx1rootroot102008-06-1716:291020A12220A11030->../../sda1
lrwxrwxrwx1rootroot102008-06-1716:292E207485207455B5->../../sda5
lrwxrwxrwx1rootroot102008-06-1716:295016-D49C->../../sda7
lrwxrwxrwx1rootroot102008-06-1716:298200D1BB00D1B67F->../../sda6
lrwxrwxrwx1rootroot102008-06-1716:29b484f1e0-dc6c-40bf-9d0c-8a7bd9e080ac->../../sda8

五、修改fstab文件
文件路径为:/mnt/etc/fstab

将含root.disk和swap.disk的两行分别改动如下:
/dev/sda8/ext3defaults00
/host/swap.disknoneswaploop,sw00

上边的第二行表示swap文件,我们需要将swap也搬迁过来,命令如下:
sudomkdir/mnt/host
sudocp-a/host/ubuntu/disks/swap.disk/mnt/host

至此,所有搬迁工作结束了,重新启动,试试看能进入新系统吗? 下载本文示例代码
阅读(529) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~