my blog my blog

Category: 嵌入式
技嘉双BIOS恢复教程

旧电脑的BIOS挂了,主板是技嘉的,这个情况已经不是第一次了,黑屏无限重启而且连BIOS都不出,奶牛还以为是CPU出问题了(一直温度高),后来把CPU拿下来后发现确实也有针脚弯了,但是修正了一下又插回去还是原来的情况,然后从备份BIOS启动后竟然发现可以进入BIOS了(硬件全拆了),然后说说解决方案吧。

测试备份BIOS是否正常,确定问题所在

说明书上有一段说明

BIOS切换器(BIOS_SW)让您可轻易的选择是否由不同的BIOS开机或是针对不同的BIOS超频,如 此可以降低超频时,损毁BIOS的风险。 SB切换器可设定是否关闭Dual BIOS功能。
BIOS指示灯 (MBIOS_LED及BBIOS_LED)可以显示目前正由哪一颗BIOS控制。 
BIOS切换器: MBIOS_LED (目前由主BIOS控制) BBIOS_LED (目前由备份BIOS控制)

默认情况下,主板的BIOS_SW在1的位置,我们将BIOS_SW切换到2上既可以从备份BIOS启动,启动的时候BBIOS_LED灯亮表示已经从备份BIOS启动了。

主BIOS恢复

将主板的BIOS_SW切换到1的位置,设置为由主BIOS启动。在关机状态下长按开机键,机器启动后很快会进入关闭状态,保持长按等待一会儿,机器不再重启即可。再正常按一次开机键,就会自动进入恢复主BIOS的程序然后重写主BIOS。然后剩下的就是正常启动了。下面是网友的一段说明,和我的说明差不多,但是好像实际情况有些偏差。

在关机的情况下按住开机键十秒,然后放开按键。
按一下开机键开机,会经历两次短时间(大约5秒)的重启。
第三次时,会显示画面并开始恢复!

网上还有一种说法是短接主BIOS的1和8号管脚,1为CS# Chip Select ,8为VCC +3.3V Power Supply,也就是给片选一个高电压然后系统会自动识别然后让BIOS进入恢复状态。此方法奶牛没有测试,不过1、8管脚短接应该也很容易,1、8管脚是对着的,直接横着连起来就可以了。

新装机实录(一)——NVME M.2 SSD RAID0

 

 

装机仍在进行时,感觉很多新东西可以搞一搞了。初定的计划就是NVME SSD RAID0+ASUS AURA光污染+硬管水冷。今天就来聊聊这个NVME SSD RAID0的组建和具体效果吧。

首先,说说平台,AMD的平台现在对NVME SSD RAID0暂时不支持,而且DDR4还得靠运气,这个其实挺折腾人的,还是Intel的方案更成熟,奶牛选的是Z270平台,z170平台应该是只支持单个NVME SSD硬盘,所以组RAID是不可以了,奶牛测试RAID0其实对于NVME SSD性能提升还是很大的,可是,换句话说就是过剩了,因为3GB/s的数据量我们根本达不到。

好吧,先说说整个过程,首先两块NVME SSD硬盘,插好,然后就是设置BIOS组RAID0,这个很简单,没有截图,把AHCI模式更改为RAID模式,然后把两个NVME SSD组成RAID0就可以了。奶牛这里说明下Asus的Z270平台的BIOS设置很有技巧,如果是单个NVME SSD硬盘,插第一个硬盘口,速度可能只有1.2GB/s的读取速度,因为BIOS中第一块硬盘默认是兼容模式,设置成PCIE模式后可以提升速度至1.7GB/s,然后第二个M.2插口默认速度是X2,可以设置为X4,但是当组成RAID0后,其实还是和不更改前相同,不过单M.2硬盘的可以参考看看速度上不来是什么原因。

然后就是系统安装了,启动U盘制作不解释,直接用原版安装镜像,然后到硬盘分区位置会有找不到硬盘的情况,这时候选择手动加载驱动,驱动也放在U盘里,下载F6flpy-x64.zip(64 位操作系统)/ f6flpy-x86.zip(32 位操作系统),千万不要迷信网上各种什么驱动,归根结底还得回到英特尔的快速存储技术上来,然后这两个压缩包解压到优盘上之后,从选择手动加载驱动加载后就可以正常安装了。最后看看具体速度效果吧:

好吧,就记录这些吧这次,光污染和水冷还在折腾中,硬管确实挺费工夫。

Linux下挂载samba网络共享硬盘

 

首先确认安装了cifs-utils,例如ubuntu下执行

  1. apt-get install cifs-utils

执行完成后即可进行挂载了

  1. mount -t cifs -o username="guest",password="guest" //192.168.11.1/download /root/download/  

其中-t cifs指定类型 -o设置选项,然后username和password在为空的时候用guest来完成,之后就是samba服务器和本地目录了,对于Netgear R7500可以在linux下直接通过如下挂载来完成共享文件。

Linux系统中Lightdm开启的VNC会话不能保持的解决方案

 

在奶牛的BeagleBone-Black里面装的Debian系统+openbox桌面,用lightdm管理的(好吧,都是默认的),但是发现在lightdm.conf中将vnc启用后vnc是可以用了,但是每次链接都产生一个新的会话,退出后会话自动毁灭,不能长久保持,这让奶牛很烦恼,因为要想用bb-black来当离线下载机,这样子可不行,还指望着vnc来长期管理呢。好吧,说说处理方法,首先将lightdm.conf中的vnc禁用。

  1. vim /etc/rc.local 
  2. #!/bin/sh -e 
  3. # rc.local 
  4. # This script is executed at the end of each multiuser runlevel. 
  5. # Make sure that the script will "exit 0" on success or any other 
  6. # value on error. 
  7. # In order to enable or disable this script just change the execution 
  8. # bits. 
  9. # By default this script does nothing. 
  10. su debian -c "vncserver -name debian -depth 16 -geometry 1366x768 -alwaysshared" 

这样子就相当于开机用debian用户启动vnc服务器,端口是5901,然后我们

  1. . /etc/rc.local 

来执行一次,然后设置debian用户的vnc密码,设置完成后

  1. ln -s /etc/rc.local /etc/rc5.d/S07rc.local 

这样可以防止rc.local在开机时候不被执行。

技嘉Gigabyte Z87x-oc主板WOL无法唤醒解决方案

 

最近入的第一张台式机主板技嘉Gigabyte Z87x-oc主板,BIOS固件版本是F6,存在电脑关机后无法使用WOL功能唤醒机器的问题,经过一番折腾终于把问题解决了。缕一缕思绪:

1.首先怀疑是BIOS配置问题,WOL选项已经默认开启,跳入下一项

2.网卡驱动上的WOL相关选项设置,设置完成,仍旧无法唤醒,跳回第一项

3.经过测试技嘉Gigabyte Z87x-oc主板的F6 BIOS固件存在WOL功能配置显示与实际相反的bug,即设置为启用实际为不启用,更改为不启用后可以再待机和睡眠状态唤醒成功,但是关机后一段时间无法唤醒。

4.电源存在问题?记得当时安装电源的时候电源少一根线,后来查了下是-5V电源,不是5vsb,忽略,继续查找BIOS问题

5.版本bug?升级到F7 BIOS固件,启动,关机,唤醒失败,问题回到3,还是WOL的显示与实际相反,再在BIOS中将启用改为停用,WOL功能正常,关机等待5分钟后仍然可以正常唤醒。问题解决

 

后记:BIOS升级使用的是技嘉的@BIOS,操作很简单,桌面环境操作,但是开机着实吓了一跳,机器自启两次失败,第三次才启动成功,吓出了一身冷汗,第一次升级BIOS固件,危险性还是相当高的,特别是没有UPS很害怕断电神马的。这次没有升级到最新的F8,万一F8的WOL功能依旧不行,降级也存在危险,有问题也不好处置,因此升级到了一个中间版本的BIOS还是比较保险的。新入了一个netgear wndr3800路由,dd-wrt搞起,准备抽时间写点儿东西神马的,啦啦啦~~~奶牛归来,继续折腾!

BeagleBone-Black在usb模式下无网线访问网络教程

 

BeagleBone-Black昨天到手的,自己从element14上搞到的,英国直邮,还比较不错,今天把系统替换成了Debian,搞起来吧,没事儿总得找点儿小玩具玩儿,现在linux扔下已经很久了,发现apt-get都变得好陌生了,拾起来,拾起来。

好了,说说今天想记录的,就是bb-black在usb模式下如何不插网线访问网络,其实默认情况下驱动装好后,BeagleBone-Black就已经在一个usb搭建起来的网络中了,网关是你的pc,客户端就是你的BeagleBone-Black啦,ip也都确定,网关,也就是你的pc的ip是192.168.7.1,你的BeagleBone-Black的ip是192.168.7.2。思路清晰之后就是操作了,先在pc上搭建一个http代理服务器,奶牛现在在win8.1系统下,首选了ccproxy来做,代理装完直接启动就可以了,默认端口是808.

下面回到BeagleBone-Black,我们需要在BeagleBone-Black设置一个全局http代理,也很easy。

  1. [email protected]:~# vim ~/.profile  
  2. export http_proxy="http://192.168.7.1:808" 
  3.  
  4. :x保存后 
  5. source ~/.profile 

嗯,结束之后apt-get update下,成功。

java编程md5实现方法

 

毕业设计要做一个论文在线管理系统,所以加密这块儿呢,必不可少的,首选还是md5,md5一次加密现在也都有库可查了,所以打算采用二次加密,昨天找了下资料,发现java有专门的类可以来实现,奶牛不是搞算法那块儿料,所以算法实现的就不要看了。下面来分析下。

java.security
Class MessageDigest

java.lang.Object
  extended by java.security.MessageDigestSpi
      extended by java.security.MessageDigest

具体使用到的方法有两个:

  1. 方法:getInstance(String algorithm) 
  2. 描述:Returns a MessageDigest object that implements the specified digest algorithm.
  3. algorithm的可以使用值有:DSA, SHA-1, MD5, DES, and DES3 
  4. 详情可以看:
  5. http://docs.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#ProviderImplReq 
  6. 返回值: static MessageDigest    
  7.  
  8. 方法:digest(byte[] input) 
  9. 描述:Performs a final update on the digest using the specified array of bytes
  10. then completes the digest computation. 
  11. 返回值: byte[]  

首先用getInstance("md5")方法来选择md5加密,然后用digest(byte[] input)来得到加密后的128位密文byte数组,而我们平时看到的md5密文是32位或者是16位的,因此需要转换。直接用digest(byte[] input)就可以免去使用update(byte[] input) 的那步了。

digest(byte[] input)返回的是16组8位二进制数,需要转换为2位十六进制数,然后依次转换可以得到32位的md5密文,截取32位密文的8~24位即为16位md5密文。

具体实现代码:

 

  1. import java.security.MessageDigest; 
  2. import java.security.NoSuchAlgorithmException; 
  3.  
  4. public class md5 { 
  5.     public String str; 
  6.  
  7.     public void md5create(String input) { 
  8.         try { 
  9.             MessageDigest md = MessageDigest.getInstance("MD5"); 
  10.             byte b[] = md.digest(input.getBytes()); 
  11.  
  12.             int i; 
  13.  
  14.             StringBuffer buf = new StringBuffer(""); 
  15.             for (int offset = 0; offset < b.length; offset++) { 
  16.                 i = b[offset]; 
  17.                 if (i < 0
  18.                     i += 256
  19.                 if (i < 16
  20.                     buf.append("0"); 
  21.                 buf.append(Integer.toHexString(i)); 
  22.  
  23.             } 
  24.             str = buf.toString(); 
  25.             System.out.println("32bit result: " + buf.toString());// 32位的加密 
  26.             System.out.println("16bit result: " 
  27.                     + buf.toString().substring(824));// 16位的加密 
  28.         } catch (NoSuchAlgorithmException e) { 
  29.             // TODO Auto-generated catch block 
  30.             e.printStackTrace(); 
  31.  
  32.         } 
  33.     } 
  34.  
  35.     public static void main(String agrs[]) { 
  36.         md5 md5object = new md5(); 
  37.         md5object.md5create("nenew");// 加密nenew 
  38.     } 
  39.  

 

HTC ONE S解锁ROOT刷Recovery刷CM10教程

 

舍友新入手一台HTC ONE S,今天折腾了一个下午,虽然刷机这种事儿都是轻车熟路了,但是还是有一些问题,把解决过程放出来,大家参考下吧。

1.解锁

目前木有S-OFF相关的刷机资料,好像还需要机器来解,所以,方法就是官方解锁。官方解锁就直接去http://htcdev.com/bootloader/注册一个帐号,然后一步步来,在HBOOT那里最后显示S-ON 但是UNLOCKED就可以了。具体教程网上泛滥,自己搜下htc官解

2.刷recovery

先去ClockworkMod下载相应型号的recovery,网址:http://www.clockworkmod.com/rommanager

手机进入HBOOT,然后进入fastboot(按一下电源键就可以了),然后连接到电脑。驱动跟软件点此下载

手机与电脑链接正常后会在手机提示USB链接,然后进入CMD或者linux已经安装的fastboot执行命令

  1. fastboot flash recovery recovery.img 
  2. //其中的recovery.img是你下载的recovery的镜像名称,后缀是img的 

3.如果是只想root下原机系统的话自行搜索一个刷机包,然后用recovery写入。奶牛这里是直接刷的cm10,默认有root,省一步不详细写了。

4.HTC ONE S刷CM10

首先去recovery中给系统做个备份,然后开机进入系统,把备份拷贝出来。以后会用得到,如果你想用官方的ROM的时候。

之后是下载CM10的htc one s 刷机包与google app的补丁包。

CM10下载地址:http://get.cm/?device=ville

Google App补丁包下载地址:http://goo.im/gapps

注意:CyanogenMod 10.0.x 对应Android版本4.1.x,CyanogenMod 10.1.x 对应Android版本4.2.1,下载GApps的时候要注意,nightly的应该是4.2的,而stable的是4.1的,建议使用stable的rom。

将ROM跟补丁包放在手机的/sdcard目录下以供使用,备份完成后再进入recovery,双wipe后将rom刷入,再直接刷入Gapp不用wipe。这时候不要退出,否则退出也无法正常启动,因为HTC ONE S的HBOOT的关系,boot.img不能正常刷入,需要手动刷,解压缩ROM文件夹下的boot.img,用fastboot刷入,命令:

  1. fastboot flash boot boot.img 

注意:这个boot.img是从CM10的ROM里面提取的,原先我们用recovery备份的那个原机备份中也会有一个boot.img,恢复的时候也要手动刷入才可以正常恢复。

这时候开机后就可以正常启动了,但是,开机第二屏幕会有红字显示:

  1. This build is for development purpose only 
  2. Do not distribute outside of HTC without HTC's written permission. 
  3. Failure to comply may lead to legal action 

这个原因是因为我们替换可原厂的boot,应该是有验证没通过,所以提示,但是不影响使用,看了下好像是PJ75IMG.zip的原因,因为没有s-off,而且也不知道这个如何去做替换,暂且搁置,如果有解决方案希望可以留言下,谢谢。

最后可能是CM10的一个小bug,发短信不能正常载入联系人,解决方法是:先将联系人备份,系统设置-应用-联系人存储 清除数据 然后回联系人里导入列表就可以正常了,已测试。