写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文!

本博客全网唯一合法URL:http://www.cnblogs.com/acm-icpcer/p/8448519.html

我在我写的博客

最全最详细:ubuntu16.04下linux内核编译以及设备驱动程序的编写(针对新手而写)

里面的“虚拟机扩容”这个部分有点问题,本来按照我所描述的步骤去操作是没什么问题的(因为后来我给家里的联想古董一体机安装了linux发现没有出问题),但是可能是第一次给虚拟机挂载硬盘的时候交换区swap没有设置好,导致linux内核不能感知到硬盘交换区的存在,本来不是什么大问题,因为linux默认在90s内如果没有感知到swap交换区就会执行默认引导程序启动操作系统,但是这就使得开机时间增加了90s。这还了得!+90s的续命机会怎么能放弃?于是本文就续命。。。不是,就解决该问题提出解决方案。

  首先我们可以在开机界面发现linux内核的报错语句:

a start job is running for dev-disk-by uuid <disk-partition-uuid>

  这就是万恶之源,linux就是在此处被延时了90s,但是这句话看得人半懂不懂,没关系,90s延时过去后下面还有一条不起眼的语句:

Denpendency failed for Swap

    之前就是因为没有看见这句最关键的警告所以才一直没有找到解决方法,看到这句话之后,恍然大悟,才知道是交换区出了问题。

  那么如何解决呢,自然只好到交换区里面去看看了,执行命令:

swapon --show

  如果你的交换区正常,那么就会是这样:

  不正常就是这样:

  也就是说,你执行了查看swap区命令,但是却找不到交换区,也就是说实际上你的操作系统根本没有交换区。这是很麻烦的事情,因为这样的话操作系统内存与虚拟内存的数据交换就是直接进行的,首先,这会拖慢系统吞吐量,因为虚拟内存在硬盘上,无论是ssd还是机械的温彻斯特硬盘,它们的速度都远不敌dram内存的速度快;其次,离开了交换区的缓冲效果,大量数据直接从内存写入硬盘,硬盘会受不了,造成一定的损伤。总之,长远来看,没有交换区这是一个很严重的问题。尤其对于大型服务器来说,这是致命伤,因为如果访问量过大或者服务器遭受了DDoS攻击的话,服务器硬盘很可能会直接烧坏。

  不过,既然知道了问题所在就好解决了。我们知道,操作系统通过PCB感知进程,通过TCB感知线程,通过JCB感知等待调度的作业,那么操作系统必定会通过一个东东来感知数据交换区,这个东东就是UUID号码。

  先执行以下命令查看现有的硬盘情况:

mount

  结果是:

  上面这是我修复后的结果,如果没有修复我们可以从执行的结果看出swap区并没有挂载。

  输入以下命令查看操作系统预备给交换区的UUID:

sudo blkid

  执行后的结果如下图:

  从第二条信息/dev/sda5可以看到swap区本应该拥有的UUID。

  查看一下我们挂载硬盘失误后实际产生的UUID:

sudo nano /etc/fstab

  执行后发现两个UUID不一致,才知道问题出在UUID上。

  知道了问题那就好办了,更改/etc/fstab文件中swap分区的UUID就可以了。即通过命令打开vim来修改:

sudo vim /etc/fstab

  切记在此一定要用sudo的权限去修改,因为/etc/fstab文件是系统文件,不使用管理员权限的话只能读而不能写。

  修改文件内的swap的UUID为刚刚使用命令sudo blkid查看的swap应持有的UUID即可,下图是修改成功的结果:

  重启操作系统,问题修复。续命+90s。

  

  

TZ@home

2018/2/14

Ubuntu启动时a start job is running for dev-disk-by延时解决的更多相关文章

  1. 如何让ubuntu启动时打印字符信息----字符启动

    一.概述 要想实现字符启动,需要修改grub.cfg(启动配置文件),将“静态启动”改为“字符启动”. 但是grub.cfg通常只作为只读文件,修改它时实际上修改的是其他的文件然后再通过update- ...

  2. Ubuntu启动时直接进入命令行模式

    直接粘命令吧 sudo vim /etc/init/lightdm.conf 注释掉下面的内容 start on ((filesystem and runlevel [!06] and started ...

  3. ubuntu 启动时提示 Failed to load session ubuntu

    启动时候提示 Failed to load session ubuntu 通过 CTRL + ALT + [F1~F6] 进入终端界面登陆进系统, 进去之后执行 sudo apt-get instal ...

  4. ubuntu 启动项创建器 选择不了CD镜像,IOS镜像的解决方法

    自己系统是ubuntu14.04 , 想使用 ubuntu自带的启动项创建器(usb-creator-gtk)做一个CDLinux的U盘启动项, 打开程序后发现U盘识别了, 在添加镜像的时候,发现怎么 ...

  5. 基于WSL2 的 Docker Desktop 启动时 Failed to set version to docker-desktop: exit code: -1的解决方法

    在Windows 10 的 2004 版本  中, 启用 使用Docker Desktop 时 发现  根本无法启动, 偶尔 或者频繁的出错: System.InvalidOperationExcep ...

  6. Eclipse启动时提示fail to create the Java Virtual Machine问题的解决

    今天偶然打开Eclipse.发现无法打开,出现例如以下提示: 后来经过上网查询.发现是eclipse.ini文件的问题,打开eclipse安装文件夹下的eclipse.ini文件: -startup ...

  7. Eclipse启动时提示fail to create the Java Virtual Machine问题的解决办法

    是eclipse.ini文件的问题,打开eclipse安装目录下的eclipse.ini文件: 将其中的256m改为128m,512m改为256m,1024m改为512m即可 修改后如下: -star ...

  8. Ubuntu无法进入图形化界面(报错/dev/sda1:clean的解决)

    进入命令行模式,执行下面的命令: rm -rf /etc/X11/xorg.conf cp /etc/X11/xorg.conf.failsafe /etc/X11/xorg.conf 重启电脑. 上 ...

  9. Ubuntu启动停止在checking battery state...

    Ubuntu在“checking battery state...”处停止了,出现这种现象的原因可能有很多种.笔者遇到的是其中的一种. 情景描述: 笔者此前将Ubuntu的图形启动方式修改为了字符界面 ...

随机推荐

  1. MySQL在线删除多余的binlog文件

    如果你的MySQL搭建了主从同步 , 或者数据库开启了log-bin日志(MySQL默认开启) , 那么随着时间的推移 , 你的数据库data 目录下会产生大量的日志文件 ll /opt/mysql/ ...

  2. Linux查看CPU和内存的配置信息

    CPU配置信息:frank@ubuntu:~/test/python$ cat /proc/cpuinfo processor : #系统中逻辑处理核的编号 vendor_id : GenuineIn ...

  3. servlet中web.xml配置详解

    Web.xml常用元素 <web-app> 所有部署描述符文件的顶层(根)元素 <display-name></display-name>定义了WEB应用的名字 & ...

  4. 【emWin】例程十一:GIF图像显示

    介绍: 本例程介绍gif格式图像显示的方法以及在GMT70,iCore3_ADP,7寸液晶模块.4.3寸液晶模块, VGA模块上的移植. 实验指导书及代码包下载: 链接:http://pan.baid ...

  5. 【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-10底层驱动之I2C

    视频简介:该视频介绍iCore3应用开发平台中I2C通信的实现方法. 源视频包下载地址:链接:http://pan.baidu.com/s/1dF5Ssbn 密码:czw8 银杏科技优酷视频发布区:h ...

  6. TI am335x am437x PRU

    http://bbs.eeworld.com.cn/thread-355798-1-1.html

  7. Java如何从服务器获取文件大小?

    在Java编程中,如何从服务器获取文件大小? 以下示例演示如何从服务器获取文件大小. package com.yiibai; import java.net.URL; import java.net. ...

  8. 面试之C语言字符串操作总结大全(转载)

    趁着十一就好好补补数据结构吧,通信这个不软不硬的专业,现在还是得好好学学补习补习,,你这个非211的本科生!虽然拿到了一个offer,但是觉得时间还有,得继续拼一拼,希望不辜负! 1)字符串操作 st ...

  9. sshpass: 用于非交互的ssh 密码验证

    ssh登陆不能在命令行中指定密码,也不能以shell中随处可见的,sshpass 的出现,解决了这一问题.它允许你用 -p 参数指定明文密码,然后直接登录远程服务器. 它支持密码从命令行,文件,环境变 ...

  10. [转]cocos2d-js 3.0 屏幕适配方案 分辨率适应

    首先介绍一个api和相应的参数: cc.view.setDesignResolutionSize(1024, 768, cc.ResolutionPolicy.FIXED_WIDTH); 这里设置游戏 ...