kk Blog —— 通用基础


date [-d @int|str] [+%s|"+%F %T"]
netstat -ltunp
sar -n DEV 1

【官方固件】努比亚Z5Smini官方4.4.2全新UI公测版

http://www.onekeyrom.com/rom/zte_130038_10965.html

pan.baidu.com/s/1c0u18Ik

nx403a进入bootloader模式直接些boot分区,但是驱动没弄好起不来。这时再进bootloader却进不了(严重怀疑他们的bootloader建在boot上),只能进recovery模式。但是recovery是官方的,只能按官方方法升级整个系统救砖

本次放出的压缩包内含两套固件:从4.2升级到4.4.2和从4.4.2再降级回4.2两套共计4个zip文件包
所以请大家下载后先不要急于不要一键刷机,仔细阅读下面的使用说明和注意事项

【升级注意事项】

  1. 升级前,请取消手机的人脸解锁、图案锁、密码锁等各种屏幕锁。
  2. 升级前,请务必备份好手机内的各项重要数据(联系人、短信、通话记录、程序等),避免异常丢失。
  3. 升级前,请保证手机电池电量至少达到40%。
  4. 在升级过程中,请将手机平放,务必不要触碰手机屏幕(否则可能导致触屏失准),直至确认升级成功。
  5. 为了便于升级发生异常后的手机挽救,nubia UI ROM安装包同时提供升级文件与回退文件,请务必同时保留在手机里。

【Z5S mini 机型4.2到4.4版本升级操作说明】

步骤1: 下载Z5S mini机型的nubia UI ROM安装包(内含4个zip文件)
步骤2: 将手机连接电脑,将安装包的4个zip文件并列拷贝至手机sdcard根目录下
步骤3: 按开关机键,选择“重启”手机,在重启过程中一直长按音量上键进入recovery模式
步骤4: 在recovery模式界面,请按音量键选择apply update from sdcard菜单项,并按开关机键确定,接着按音量键选择NX403A_4.2_to_4.4_recovery_xxx.zip文件,并按开关机键确定,开始升级
步骤5: 步骤4升级完成后如下图所示,此时光标条位于reboot system now菜单项,直接按开关机键重启手机,请观察手机能否顺利进入桌面
步骤6: 手机顺利进入桌面后,请重复步骤3,即再次重启手机,并在重启过程中一直长按音量上键,再次进入recovery模式
步骤7: 在recovery模式界面,请按音量键选择wipe date/factory reset 菜单项,按开关机键进入,进行数据擦除
步骤8: 数据擦除结束后,请按音量键选择apply update fromsdcard菜单项,按开关机键进入,再按音量键选择NX403A_4.4_update_xxx.zip文件,按开关机键 确认,执行升级,此过程要1到2分钟
步骤9: 步骤8升级完成后如下图所示,此时光标条位于reboot system now菜单项,直接按开关机键重启手机

分区(看看就好)

http://www.miui.com/forum.php?mod=viewthread&tid=1804584&extra=

http://bbs.nubia.cn/thread-120471-1-1.html

http://bbs.nubia.cn/thread-128729-1-1.html

内核模块编译怎样绕过insmod时的版本检查

http://blog.sina.com.cn/s/blog_53931eca01015uky.html

在開發kernel driver時,總是會遇到討人厭的vermagic檢查,只要目前在run的kernel版本跟driver編譯時用的kernel版本不一致,就沒辦法insmod。

1
2
3
4
bash-3.2# insmod sdio.ko
sdio: version magic '2.6.28-271-gec75a15 preempt mod_unload modversions ARMv7 '
should be '2.6.28 preempt mod_unload ARMv7 '
insmod: init_module 'sdio.ko' failed (Exec format error)

這大大降低了開發速度,尤其是當你拿不到客戶在用的kernel時,又要開發driver給他用,真的是很麻煩……

那麼要怎麼利用噁心的方式繞過去呢???

一、先把 Moudle version 檢查關掉。
1
2
3
4
5
6
7
user@host # ARCH=arm make menuconfig
--- Enable loadable module support                                             │ │
│ │         [ ]   Forced module loading                                      │ │
│ │         [*]   Module unloading                                           │ │
│ │         [*]     Forced module unloading                                  │ │
│ │         [ ]   Module versioning support                                  │ │
│ │         [ ]   Source checksum for all modules
二、 使用modinfo時,可以看到目前這driver的vermagic
1
2
3
4
5
6
7
8
filename: external_drivers/omap3530/Linux/sdio/sdio.ko
author: Texas Instruments Inc
alias: TIWLAN_SDIO
license: GPL
description: TI WLAN SDIO driver
depends:
vermagic: 2.6.28-271-gec75a15 preempt mod_unload ARMv7
parm: g_sdio_debug_level:debug level (int)
三、 修改 kernel 的 vermagic,再重新編譯driver

vermagic 的第一個值 2.6.28-noneed 是由這 include/linux/utsrelease.h裡的 UTS_RELEASE 所定義。

1
#define UTS_RELEASE "2.6.28-271-gec75a15"

之後再由 include/linux/vermagic.h 裡的 macro
去組合出 VERMAGIC_STRING , 也就是 kernel 的vermagic。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <generated/utsrelease.h>

#ifdef CONFIG_SMP
#define MODULE_VERMAGIC_SMP "SMP "
#else
#define MODULE_VERMAGIC_SMP ""
#endif
#ifdef CONFIG_PREEMPT
#define MODULE_VERMAGIC_PREEMPT "preempt "
#else
#define MODULE_VERMAGIC_PREEMPT ""
#endif完成編譯後,你就可以得
#ifdef CONFIG_MODULE_UNLOAD
#define MODULE_VERMAGIC_MODULE_UNLOAD "mod_unload "
#else
#define MODULE_VERMAGIC_MODULE_UNLOAD ""
#endif
#ifndef CONFIG_MODVERSIONS
#define MODULE_VERMAGIC_MODVERSIONS "modversions "
#else
#define MODULE_VERMAGIC_MODVERSIONS ""
#endif
#ifndef MODULE_ARCH_VERMAGIC
#define MODULE_ARCH_VERMAGIC ""
#endif

#define VERMAGIC_STRING \
UTS_RELEASE " " \
MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT \
MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS \
MODULE_ARCH_VERMAGIC

所以, 我們只要把 UTS_RELEASE 改成我們的數字即可,當然若是懶得去try組合後的字串,也可以直接將VERMAGIC_STRING改成你要的字串

建議修改完 vermagic.h, utsrelease.h後,還是把kernel重編完再編kernel,比較保險。

以下是修改後,用modinfo看的結果

1
2
3
4
5
6
7
8
filename: external_drivers/omap3530/Linux/sdio/sdio.ko
author: Texas Instruments Inc
alias: TIWLAN_SDIO
license: GPL
description: TI WLAN SDIO driver
depends:
vermagic: 2.6.28 preempt mod_unload ARMv7
parm: g_sdio_debug_level:debug level (int)


另外若你是用git 做版本控制 , 那就會出現git的版本號在kernel 編號上
所以要把他關掉

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
General setup  --->
 [ ] Automatically append version information to the version strin

解釋;
CONFIG_LOCALVERSION_AUTO:                                                   │ 
  │                                                                         │ 
  │ This will try to automatically determine if the current tree is a       │ 
  │ release tree by looking for git tags that belong to the current         │ 
  │ top of tree revision.                                                   │ 
  │                                                                         │ 
  │ A string of the format -gxxxxxxxx will be added to the localversion     │ 
  │ if a git-based tree is found.  The string generated by this will be     │ 
  │ appended after any matching localversion* files, and after the value    │ 
  │ set in CONFIG_LOCALVERSION.                                             │ 
  │                                                                         │ 
  │ (The actual string used here is the first eight characters produced     │ 
  │ by running the command:                                                 │ 
  │                                                                         │ 
  │ which is done within the script "scripts/setlocalversion".)             │ 
  │                                                                         │ 
  │ Symbol: LOCALVERSION_AUTO [=y]                                          │ 
  │ Prompt: Automatically append version information to the version string  │ 
  │   Defined at init/Kconfig:84                                            │ 
  │   Location:                                                             │ 
  │ ingT

moto sbf包

解出的CG35.smg或CG35.img是boot.img, boot.img可以按照 这里 的方式编辑

注意: motorola只有一些新的机型有方法解bootloader锁,沒解锁的bootloader会验证boot、recovery等分区的完整性(两个分区都是8M),不管有用的数据还是没用的数据都加入验证(好像是隔段距离取点数据做验证,因为替换最后100字节可以刷成功,替换多点就失败。可是实际有用的boot.img大小才4M左右)。

MOTO X解BL锁教程 http://bbs.gfan.com/android-6726986-1-1.html

1 命令行解包

1
./sbf_flash -x OLYFR_U4_1.8.3_SIGNED_OLPSATTSPE_P013_HWolympus_1g_Service1FF.sbf

提取到一堆img文件

2神器:MotoAndroidDepacker

http://www.veryhuo.com/down/html/47416.html

就是这个软件,可以把moto的底包解开。
使用很简单:
1 点open from file菜单打开sbf底包,然后点split to files就解开了
2 将要打包的文件拷到单独的文件夹A,然后点open files,选择刚刚的文件夹A,然后点compile file,就会在文件夹A里面生成result\firmware.sbf文件

解包出的文件解释:

1
2
3
4
5
6
7
8
9
CG31/CDT是描述各文件版本号的, 相当于注释文件
CG33/CDROM是个ISO文件, 可以用WinRAR之类的打开, 包含PC端程序(MotoHelperAgent)
CG35/Boot包含了系统内核<-boot-only就是这个
CG39/system分区
CG40/cache缓存分区(国行多余的部分), 显然里面什么都没有
CG45/Baseband基带固件
CG47/Recovery就是官方恢复, 里面也包含独立的内核, 但不用于启动
CG61/devtree包含设备描述符
RAMDLD/RamDisk&tmpfs, Android/Linux启动初始化的一部分, 不涉及具体设备

这篇感觉没用 http://bbs.ihei5.com/thread-5883-1-1.html