在Scientific Linux虚拟机中安装arm-linux-gcc交叉编译工具时,由于先前分盘草率,导致目录/usr空间不够,无法将文件arm-linux-gcc-4.3.2.tgz解压完整。
于是根据《鸟哥的Linux私房菜》一书使用dd命令在目录/home下制作了一个512M的空文件:
# dd if=/dev/zero of=/home/loopdev bs=1M count=512
/dev/zero是会一直输出0的设备。然后进行格式化:
# mkfs -t ext4 /home/loopdev
在进行手动挂载:
# mount -o loop /home/loopdev /usr/local/arm
# df 显示各分区的磁盘空间使用及挂载情况
为了将/home/loopdev每次开机都自动挂载到/usr/local/arm,修改了/etc/fstab文件:
# vim /etc/fstab
在最后一行中写入/home/loopdev /usr/local/arm ext4 defaults 1 2
由于先前手动挂载过,故必须先卸载:
# umount /usr/local/arm
由于笔者进入了目录/usr/local/arm而未退出,故出现/usr/local/arm is busy的信息,由于笔者此时不知,没有成功卸载而直接往下操作,导致后面Linux无法正常启动的问题,故提醒各位Linuxer注意:
# mount -a 把/etc/fstab文件中列出的文件系统都挂载上
# reboot 重启系统
悲剧来临......................................系统无法再次启动
后好不容易找到解决方法:进入单用户模式
对于grub,在系统启动时按键盘“e”编辑启动项
进入后选择kernel xxxxxxxxx按键盘“e”编辑所选命令:
在行末尾加一个空格single,然后回车按键盘“b”启动系统,系统将进入单用户模式,此时/是readonly的状态,当然也无法修改/etc/fstab,可利用下面指令:
# mount -n -o remount,rw /
之后就可以修改/etc/fstab文件了,将之前误写的最后一句删掉,保存后reboot,系统可正常启动!
从上面的经历笔者发现加载/home/loopdev到/usr/local/arm须使用选项# mount -o -loop才行,这也是系统无法正常启动的原因。
看来此法不通,只能在网上搜有何良方:终于发现dawning126的博客,在此感谢!
一:首先介绍硬盘扩容的方法:
1、vmware提供一个命令行工具,vmware-vdiskmanager.exe,位于vmware的安装目录下,比如
C:\Program Files\VMware\VMware Workstation\vmware-vdiskmanager.exe.
在windows的cmd窗口中,转到vmware的安装目录
即:cd C:\Program Files\VMware\VMware Workstation\
vmware-vdiskmanager.exe 可以查看帮助
2. 对于扩容,可以输入下列命令:
vmware-vdiskmanager -x 4Gb "D:\VMware\WinXP\myLinux.vmdk"
参数"-x"表示要扩展虚拟机硬盘空间,紧随其后的数字是要扩展到的大小(本例为扩展到4GB,这是一个磁盘总量,包含了原先的磁盘容量)。
最后是指定要操作的虚拟机磁盘的具体文件,要是路径名中有空格,必须以双引号括起来。按回车键开始执行,执行完毕,退出命令提示符窗口,
重启VMware,会发现虚拟机硬盘空间已变成4GB了。
网上的说明大都到这一步就结束了,其实不然。我们重启虚拟机后,发现虚拟机的硬盘是变成4GB了,但进入linux系统后,用"df -ah"查看发现硬盘空间还是原先那么大。
虽然已经扩大了磁盘,但是由于还没有经过分区,指定文件系统,所以linux操作系统无法识别(其实就相当于你的硬盘虽然大了,但是你并没有对其进行分区是一个道理)。下面我们进行分区处理。
3. 分区:
fdisk命令: fdisk -l :打印当前的磁盘分区表,这时我们可以看到磁盘的总量的确增加到4GB了,但是分区只有以前的那几个原有的分区。
键入命令:fdisk /dev/sda “sda就是经过扩容的硬盘,为SCSI硬盘,IDE类型硬盘对应为hda,是对该硬盘进行操作”
键入 : m “ 列出fdisk的帮助”
我们在这里是要添加一个新分区,即将扩容出来的那部分做成一个新分区,这样才能被操作系统挂载识别。
键入: n ” 命令n用于添加新分区"
此时,fdisk会让你选择添加为逻辑分区呢(编号从5开始)还是主分区(编号1到4)。选择主分区吧,则键入p;选择逻辑分区键入l。
我们选择主分区于是:
键入: p " 选择创建主分区"
此时,fdisk会让你选择主分区的编号,如果已经有了主分区sda1,sda2,那么编号就选3,即要创建的该分区为sda3.
键入: 3
此时,fdisk又会让你选择该分区的开始值这个就是分区的Start 值(start cylinder);这里最好直接按回车,
如果您输入了一个非默认的数字,会造成空间浪费;
此时键入:w "保存所有并退出,分区划分完毕"
我们现在还不能用这个分区,为什么? 没格式化呀,呵呵!
4. 格式化该新添加的分区:
键入:mkfs -t ext3 /dev/sda3
或者 mkfs.ext3 /dev/sda3 格式化指定的分区,依次类推,现在的系统大部分都是 ext3 格式,如果你需要其它的,可以查看mkfs的帮助。
此时我们就可以使用该新增分区啦:
5、挂载该分区:
手动挂载,则键入:mount /dev/sda3 /home/work/ "表示将该新分区挂载到/home/work/这个目录下面"
开机自动挂载,则修改/etc/fstab文件,在这个文件里面添加一行:
/dev/sda3 /home/work ext3 defaults, 0 1 "关于该文件的格式,以后写文章讨论^_^"
以后每次开机都会将该分区挂在大work目录下面了。
到这里就可以使用该新加分区啦 。
二:另外一种方法就是首先在虚拟机上添加一块硬盘,然后挂载。这样就相当于又买了个硬盘,可以缓解磁盘空间紧张的问题了。
1、启动虚拟机,选择"Edit virtual machine settings",点按钮“adding",按照向导默认添加一块磁盘,一般都是SCSI设备。 指定硬盘容量,然后重启进入系统。
root用户操作:
2、 fdisk -l 会看到有一块新的设置,如果你先前有一块硬盘(sda1, sda2...),新加的这块应该是(/dev/sdb)。
看到就说明系统已经识别出这块硬盘了,接下来我们给这块硬盘分区,格式化。
fdisk /dev/sdb (当然如果你添加的IDE设置,会是 hdx) x 代表数字,1到4指主分区编号,5以上指逻辑分区。具体的资料可以在网上搜到。
3、分区格式化:
操作和上面的分区格式化大致相同,只需注意把/dev/sda 改成/dev/sdb,后面的操作也都一致。
到这里vmware添加新硬盘 挂载新硬盘 硬盘扩容 说完了,相信硬盘扩容这个问题大家都解决了。
注意:修改/etc/fstab文件后需先卸载# umount /dev/sdb1,再使用# mount -a 和 # df测试文件/etc/fstab正确与否,否则易出现笔者一开始遇到的系统无法正常启动情况!