initramfs扫描磁盘前改变磁盘上电顺序
背景:
机械硬盘需要12V 5V电源,此前设计是硬件电路默认5V有效、12V无效,然后系统通过驱动上12V电,对磁盘来说相当于先上5V后上12V,这种方式对大部分磁盘是可以的,但对于日立 HGST磁盘,冷启动(或未使能12V后reboot,使能12V后reboot会由于12V 5V都使能,重启(热启动)后会正确probe磁盘),系统在扫描磁盘时(执行initramfs中的init脚本中的`udevadm settle`)会检测到磁盘,但是由于12V未上,所以导致probe磁盘失败,由于驱动会循环四次probe磁盘(考虑到磁盘可能没准备好,所以多尝试几次),所以会由此导致系统启动过慢,这说明此类磁盘需要先上12V 然后再上5V或同时上电。
解决:
由于扫描磁盘是在initramfs中进行的,所以需要在扫描之前先关掉5V 然后使能12V 再打开5V,然后再扫描。
initramfs文件是由cpio打包gzip压缩的文件,先修改后缀后解压:
# mv initramfs-2.6.32-431.20.3.el6.x86_64.img initramfs-2.6.32-431.20.3.el6.x86_64.gz
# gunzip initramfs-2.6.32-431.20.3.el6.x86_64.gz
# cpio -id initramfs-2.6.32-431.20.3.el6.x86_64
首先将关5V和开12V的驱动tca6416-nosh-low.ko、slotpower.ko及其依赖的i2c控制器驱动i2c-i801.ko放入解包后产生的lib/modules/2.6.32-431.20.3.el6.x86_64下面任意目录下,然后运行`depmod -b .`(扫描当前lib/modules/`uname -r`目录,非系统的此类目录;然后生成所有此目录下驱动的依赖等信息,并保存在此目录下modules.dep等文件中),然后在init文件的while循环中、udevsettle语句之前加入:
SYSFS_GPIO="/sys/class/gpio"
while :; do
echo "before modprobe"
modprobe i2c_i801
modprobe tca6416_nosh_low
modprobe slotpower
[ -d $SYSFS_GPIO ] && { \
for gpio in `ls -d ${SYSFS_GPIO}/gpio[0-9]*`
do
echo 1 > ${gpio}/value
done
}
注意:modprobe是通过modules.dep文件来获取加载驱动的位置的;用modprobe加载驱动只能写驱动的名字不能加.ko后缀,否则会提示找不到驱动;另外,modprobe不区分驱动文件名中的“-”和“_”;如上。
保存init文件后打包压缩当前目录,生成initramfs文件,并替换系统/boot目录下相应的initramfs文件后重启:
# find . | cpio -co | gzip -c > ../initramfs.cpio.gz
# mv ../initramfs.cpio.gz /boot/initramfs-2.6.32-431.20.3.el6.x86_64.img
# reboot
initramfs扫描磁盘前改变磁盘上电顺序的更多相关文章
- (转)GPT磁盘与MBR磁盘区别
摘要: Windows 2008磁盘管理器中,在磁盘标签处右击鼠标,随磁盘属性的不同会出现“转换到动态磁盘”,“转换到基本磁盘”“转换成GPT磁盘”,“转换成MBR磁盘”等选项,在此做简单介绍.部 ...
- Linux学习之CentOS(十二)------磁盘管理之 磁盘的分区、格式化、挂载(转)
磁盘分区.格式化.挂载磁盘分区 新增分区 查询分区 删除分区磁盘格式化 mkfs mke2fs磁盘挂载与卸载 mount umount 磁盘的分区.格式化.挂 ...
- VMware Workstation 集群仲裁磁盘和数据共享磁盘的创建
近期项目须要对SQL Server建立集群服务,多个SQL Server数据库建立集群服务,对外提供唯一的URL訪问地址.当主节点断电.断网后,通过心跳线将消息传递到备用节点.备用节点在3秒内接管数据 ...
- Windows无法安装到这个磁盘 选中的磁盘具有MBR分区表解决方法
在安装 win10的时候,会出现这种提示:Windows 无法安装到这个磁盘.选中的磁 盘具有 MBR 分区表.在 EFI 系统上, Windows 只能安装到 GPT 磁盘.出现这种 情况主要是因为 ...
- 关于DSP的boot mode / boot loader /上电顺序 /在线升级等问题的总结
使用器件 ti dsp c2000 2837x 1.dsp的上电过程和boot mode以及boot loader 1)dsp的上电顺序, 对于双核系统而言 , 他的上电启动顺序如下所示: 系统复位或 ...
- Linux磁盘管理之磁盘结构、概念、原理01
一.磁盘的分类 磁盘主要有IDE.SATA.SCSI.IDE是比较老的硬盘,数据速度比较慢:SATA是现在用的比较多的,台式机.笔记本大多都用的SATA硬盘:SCSI硬盘速度最快,但是价格相对较高. ...
- Linux学习(十四)磁盘格式化、磁盘挂载、手动增加swap空间
一.磁盘格式化 分好去的磁盘需要格式化之后才可以使用.磁盘分区一般用mke2fs命令或者mkfs.filesystemtype.这个filesystemtype分为ext4,ext3,xfs等等.xf ...
- 通过Azure 存储账号URL鉴别是标准磁盘还是高性能磁盘
对于不知道虚拟机磁盘是标准磁盘还是高性能磁盘时,我们可以通过nslookup解析存储账号的URL,来判断存储账号的类型,从而得知虚拟磁盘的类型 1.标准存储账号的解析结果,字母"st&quo ...
- 将 Windows 虚拟机从非托管磁盘转换为托管磁盘
如果有使用非托管磁盘的现有 Windows 虚拟机 (VM),可通过 Azure 托管磁盘服务将 VM 转换为使用托管磁盘. 此过程会同时转换 OS 磁盘和任何附加的数据磁盘. 本文介绍如何使用 Az ...
随机推荐
- powerdesign设置字体大小
http://www.2cto.com/database/201406/308923.html
- shell if 条件语句实践
对于if 语法 我们不过多做介绍,这里直接上实例,以开发rsync服务启动脚本为例,先对rsync做个简单介绍 [root@backup ~]# rpm -qa|grep rsync rsync--. ...
- create-react-app 配置支持sass并集成autoprefixer插件
create-react-app的webpack配置在node_modules当中的react-scripts的config文件夹当中,其中webpack.config.dev.js是开发环境的配置, ...
- cf 701 E - Connecting Universities
Descrition 给你一颗\(n\le 2*10^5\)个点的树, 有\(2*k(2k\le n)\)座大学座落在点上 (任二大学不在同一个点) 求一种两两匹配的方案, 使得距离和最大 即\[ma ...
- 洛谷 P1270 “访问”美术馆
P1270 “访问”美术馆 题目描述 经过数月的精心准备,Peer Brelstet,一个出了名的盗画者,准备开始他的下一个行动.艺术馆的结构,每条走廊要么分叉为两条走廊,要么通向一个展览室.Peer ...
- favicon还是这个网站生成的比较正确
原文发布时间为:2011-11-16 -- 来源于本人的百度文章 [由搬家工具导入] http://tools.dynamicdrive.com/favicon/ http://www.rw-desi ...
- asp.net几种开源上传控件,flash,ajax版,支持多文件
原文发布时间为:2010-03-18 -- 来源于本人的百度文章 [由搬家工具导入] 1、AspnetUpload 地址:http://www.aspnetupload.net/ 最早接触的上传控件。 ...
- 1月24日考试(ftp密码)
错因分析 ♦对文件的保存不够恰当,例如第一题和第三题的题目,我是真的很愤怒,第一题在我写了一个多小时,终于样例成功.可是当我再一次打开文件时,里面只有我最开始的代码,谁可以告诉我这是为什么(我绝对保存 ...
- 【虚拟机】主机与VMware虚拟机通信(XP版)(转)
一.与主机共享ADSL链接/无线网络(虚拟机内可上网) 安装虚拟机后,在网络链接下除了本地链接外,会出现两个新的链接,分别是VMware Network Adapter VMnet1和VMware N ...
- C++面向对象程序设计_Part1
目录 C++历史 C++的组成 C++ 与 C 的数据和函数区别 基于对象与面向对象的区别 C++类的两个经典分类 头文件防卫式声明 头文件的布局 类的声明 类模板简介 内联(inline)函数 访问 ...