{
pre_mountroot
# Get the root filesystem type if not set
if [ -z "${ROOTFSTYPE}" ]; then
[ -n "${FSTYPE}" ] || FSTYPE=$(blkid -s TYPE -o value "${ROOT}")
ROOTFSTYPE="${FSTYPE}"
else
FSTYPE=${ROOTFSTYPE}
fi
如果grub.cfg配置文件里面指定了rootfstype=ext3那么就不会调用blkid命令。
那么就会加快开机速度。
当然如果你的根目录所在分区是ext4分区类型,那么也不会启动成功。
所以可以用blkid命令先看看自己分区类型再指定rootfstype。
我的分区类型是ext4,结果内核编译没有编译ext4进内核,又没有编译成模块。
也没有指定rootfstype,所以会运行blkid命令得出fstype为ext4,结果也不能启动成功。
实验的方法:如果你的根分区是ext3,则设置rootfstype=ext4,
如果你的根分区是ext4,则设置rootfstype=ext3,
同时把grub.cfg的quiet去掉,则能让系统停下来,同时打印出错误信息。
mountroot()
{
pre_mountroot
# Get the root filesystem type if not set
if [ -z "${ROOTFSTYPE}" ]; then
[ -n "${FSTYPE}" ] || FSTYPE=$(blkid -s TYPE -o value "${ROOT}")
ROOTFSTYPE="${FSTYPE}"
else
FSTYPE=${ROOTFSTYPE}
fi
log_begin_msg "${FSTYPE}"
当然看下面functions里面的代码:
_log_msg()
{
if [ "$quiet" = "y" ]; then return; fi
printf "$@"
}
log_success_msg()
{
_log_msg "Success: $@\n"
}
log_failure_msg()
{
_log_msg "Failure: $@\n"
}
log_warning_msg()
{
_log_msg "Warning: $@\n"
}
log_begin_msg()
{
_log_msg "Begin: $@ ... "
}
log_end_msg()
{
_log_msg "done.\n"
}
改为:
mountroot()
{
pre_mountroot
# Get the root filesystem type if not set
if [ -z "${ROOTFSTYPE}" ]; then
[ -n "${FSTYPE}" ] || FSTYPE=$(blkid -s TYPE -o value "${ROOT}")
ROOTFSTYPE="${FSTYPE}"
else
FSTYPE=${ROOTFSTYPE}
fi
printf "${FSTYPE}"