[ 已解决 ] 为什么安装系统时根分区最大只有 20g?20g 的根分区真的足够了吗

出错信息是:

** 执行下列分区操作时失败:
正在将分区 /dev/sda1 扩展至 459.77GB(Progress bar will not move. May take very long. Do not ABORT)
系统错误代码:-1021**

然后我就不知道是真的有错还是没有错
又重装了一遍,/ 419GB, /usr/local 40GB(反正要想不出上面的提示就得保留这个 40G 分区,想了半天没想好给谁,就给 /usr/local 好了)

我也研究了一下,发现应该是自动分区的问题。默认分区已经分好,给 / 的空间只有 20G,其他的都分好了,没有空余,所以不能分得更多。你删掉两个分区,再添加一个分区给 /,会发现他的上限是你删掉两个分区的和。把分区全部干掉,就可以把全部空间都给 / 了。

试了,然后就报那个错(虽然我不确定是否真是个错)

1021:硬盘剩余空间不足
扩展操作是要有空白未分区的空间的吧,如果没有的话先缩小其它的分区留出空白空间才可以~

$ grep -r " 扩展至" /usr/share/locale/zh_CN/LC_MESSAGES 
匹配到二进制文件 /usr/share/locale/zh_CN/LC_MESSAGES/libstorage.mo

i18n.opensuse.org/stats/openSUSE-12.3/zh_CN/lcn/index.php 下载 libstorage.po

找到那条 string 的位置在:…/storage/Partition.cc:506

去 google 搜索 “openSUSE /storage/Partition.cc”,得到这里:

github.com/openSUSE/libstorage/blob/master/storage/Partition.cc

git clone 之,然后

$ grep -r "1021" ./libstorage
./storage/StorageInterface.h:   DISK_RESIZE_PARTITION_PARTED_FAILED = -1021,

打开那个文件你就得到了全部的 error code。你的错误是:

DISK_RESIZE_PARTITION_PARTED_FAILED

继续 grep:

$ grep -r "DISK_RESIZE_PARTITION_PARTED_FAILED" ./
./Disk.cc:              ret = DISK_RESIZE_PARTITION_PARTED_FAILED;
./StorageInterface.h:   DISK_RESIZE_PARTITION_PARTED_FAILED = -1021,

打开 Disk.cc:

            if( execCheckFailed( cmd_line.str() ) )
                {
                ret = DISK_RESIZE_PARTITION_PARTED_FAILED;
                }

execCheckFailed 定义在同一个文件里:

int Disk::execCheckFailed( SystemCmd& cmd, const string& cmd_line )
    {
    cmd.execute( cmd_line );
    int ret = checkSystemError( cmd_line, cmd );
    if( ret!=0 )
        setExtError( cmd );
    return( ret );
    }

同样 Disk::checkSystemError 也在这个文件里,你的错误是最后一个 else:

    if( ret != 0 )
        {
        if( dmp_slave && tmp.empty() )
            {
            y2mil( "resetting retcode " << ret << " of:" << cmd_line );
            ret = 0;
            }
        else
            y2err("retcode:" << cmd.retcode());
        }
    return( ret );
    }

简单说就是你的分区方案有问题。

所以请给出你的分区方案的截图。

另外

zh.opensuse.org/SDB:%E5%88%86%E5%8C%BA

doc.opensuse.org/documentation/html/openSUSE/opensuse-reference/cha.advdisk.html

供参考。

我今晚刚在虚拟机里装了个 GNOME 桌面的 openSUSE。

我想提醒你的是:

如果你是修改它提议的那个方案, 扩展一个位置在中间的盘(比如 /),那你要把它后面的分区先都删了 ,然后中间那个盘的最大可分配容量才会上去。


比如这个图,你想改 / 的最大大小,那你必须先把 /home 删了,改好重新建,不然后面的空间始终是占用的,YaST 的缩小分区是往前缩不是往后缩,也就是说即使你缩小了 /home,可用空间也是在 /home 的后面,/ 依然用不了,除非你去缩小 /swap。

或者也可以直接用「创建分区配置」,然后「自定义分区」,然后整张硬盘都是你的了,一个一个分区添加。主要是 swap, / 和 /home。


gparted 应该可以从前面缩小分区吧~
yast 分区缩小分区后移动应该也可以把分区前面的空间空出来~

楼主可能遇到关于分区的问题:
硬盘分为主分区和扩展分区,主分区最多三个,扩展分区 1 个,在扩展分区下面可以建很多分区。
例如一个 100G 的硬盘,我把它分成了 50G 扩展分区,一个 20G 的主分区,一个 30G 的主分区,那么在扩展分区下最多能建立一个 50G 的子分区,在主分区上,你可以删除 20G, 或者 30G 的分区,在建立一个对应大小的分区,或者把它们都删除,建立一个 50G 的主分区。同时扩展分区在一些条件下可以转换位主分区。可能楼主没有注意分区细节吧。

在安装过程中,我每次都是手动分区,这样比较合适。

对于一般的用户来说 20G 主分区够了。除非有特殊要求,目前我的 / 没有超过 20G