61阅读

ubuntuarm内核编译-samsung Galaxy SII源码内核编译实验+刷机

发布时间:2017-10-24 所属栏目:操作系统

一 : samsung Galaxy SII源码内核编译实验+刷机

最近一星期做的事有点乱,主要是围绕I9100源码编译,库的替换以及刷机在进行。[www.61k.com)在此记录下过程,以便分享和查阅。

首先是从samsung官方开源站上(https://opensource.samsung.com/)下载了I9100的源码。

samsunggalaxysii samsung Galaxy SII源码内核编译实验+刷机

我下载的是港版系统GT-I9100_HK_Opensource.zip

解压出来后分为内核和源码两部分:

GT-I9100_HK_Kernel.tar.gz和GT-I9100_HK_Platform.tar.gz

分别说明如下:

README_kernel:

HOW TO BUILD KERNEL 2.6.35 FOR GT-I9100 HK

1. How to Build

             - get Toolchain

             Visit http://www.codesourcery.com/, download and install Sourcery G++ Lite 2009q3-68 toolchain for ARM EABI.

             Extract kernel source and move into the top directory.

             $ toolchain\arm-eabi-4.4.0

             $ cd kernel/

             $ make c1_rev02_defconfig

             $ make

2. Output files

             - Kernel : kernel/arch/arm/boot/zImage

3. How to make .tar binary for downloading into target.

             - change current directory to kernel/arch/arm/boot

             - type following command

             $ tar cvf GT-I9100_HK_Kernel.tar zImage

README_platform:

How to build platform

1. Get android open source.

   : version info - Android gingerbread 2.3.3(r1)

   ( Download site : http://source.android.com )

2. Overwrite modules that you want to build.

 - \external\webkit : Delete this source from tree at Android gingerbread and then copy webkit source from source root folder.

3. Copy the files to original Gingerbread source tree (overwrite) and then make

4. Add the following lines at the end of build/target/board/generic/BoardConfig.mk

BOARD_USES_ALSA_AUDIO := true

BOARD_HAVE_BLUETOOTH := true

BOARD_HAVE_BLUETOOTH_BCM := true

BT_ALT_STACK := true

BRCM_BT_USE_BTL_IF := true

BRCM_BTL_INCLUDE_A2DP := true

5. make -j16 PRODUCT-generic-user

在编译Platform时,我基本完全按照说明编译了源码,编译成功后,打算尝试替换I9100中的库,结果悲剧的不能启动系统了。

替换库:

在命令提示符中执行:

adb remount
adb push libstagefright.so /system/lib

重启后,无法进入系统,机器卡在启动画面:

samsunggalaxysii samsung Galaxy SII源码内核编译实验+刷机

事实说明,编译出的源码与手机上所安装的官方港版系统不一样。

没办法,只好重新刷系统。

从网上下载了港行ROM,在此简要记录下刷机步骤。

ROM:I9100_ZSKF4.zip

解压后包括CSC_I9100ZSKF4.tar,MODEM_I9100XXKE7.tar,Odin3_v1.83.exe,PDA_I9100ZSKF4.tar.md5,u1_02_20110310_emmc_EXT4.pit

关机后,同时按下音量减+HOME键+开机键,进入刷机模式

将手机连上电脑(需要安装好对应手机驱动),打开Odin3_v1.83.exe,按照下图选择刷机包内的各个文件以及选项,开刷:

samsunggalaxysii samsung Galaxy SII源码内核编译实验+刷机

(注意勾选Re-Partition)

完成后会自动启动。

刷机后第一件事自然就是ROOT。

ROOT用到四个工具(从机锋上下载):

Odin3,u1_02_20110310_emmc_EXT4.pit,SuperOneClick,XWKDD_insecure.tar

Root前记得先打开手机的usb调试模式。

接下来还是一样,关机后,同时按住音量向下键+home键+加开机键,根据提示按音量向上键,连上手机,在Odin3中设置如下:

samsunggalaxysii samsung Galaxy SII源码内核编译实验+刷机

开始后,打开SuperOneClick程序,直接点ROOT就ok。

完成后重启,ROOT就完成了。

期间还尝试了编译GT-I9100 HK内核KERNEL 2.6.35,不过因为手头上又有了新的事情,所以并没有进行编译,这里只是安装了工具链。

从https://sourcery.mentor.com/sgpp/lite/arm/portal/release1033上下载Sourcery G++ Lite 2009q3-68 toolchain for ARM EABI

下载的arm-2009q3-68-arm-none-eabi.bin大小为92M。在ubuntu 11.10上安装过程如下:

wayne@wayne-pc:~$ sudo chmod +x arm-2009q3-68-arm-none-eabi.bin
[sudo] password for wayne:
wayne@wayne-pc:~$ ./arm-2009q3-68-arm-none-eabi.bin
The installer has detected that your system uses the dash shell
as /bin/sh. This shell is not supported by the installer.
You can work around this problem by changing /bin/sh to be a
symbolic link to a supported shell such as bash.
For example, on Ubuntu systems, execute this shell command:
% sudo dpkg-reconfigure -plow dash
Install as /bin/sh? No
Please refer to the Getting Started guide for more information,
or contact CodeSourcery Support for assistance.

在解决这个问题时,当时安装别人一个帖子的解决方法把/bin目录下的sh执行文件给删掉了,然后创建链接指向dash,结果悲剧了,执行.bin文件始终提示sh损坏。没办法,恢复它,从其它电脑上拷贝sh文件。

拷贝过来的sh需要赋予执行权限:

wayne@wayne-pc:/bin$ sudo chmod 777 sh

查看权限验证:

wayne@wayne-pc:/bin$ ls -al|grep sh
-rwxr-xr-x 1 root root 916692 2011-05-18 17:54 bash
-rwxr-xr-x 1 root root 96188 2011-05-03 23:01 dash
lrwxrwxrwx 1 root root 4 2011-11-15 21:02 rbash -> bash
-rwxrwxrwx 1 root root 96188 2011-11-24 15:07 sh
lrwxrwxrwx 1 root root 4 2011-11-15 21:02 sh.distrib -> bash
lrwxrwxrwx 1 root root 7 2011-11-15 21:02 static-sh -> busybox

ok。继续

wayne@wayne-pc:~$ ./arm-2009q3-68-arm-none-eabi.bin
Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...
strings: '/lib/libc.so.6': No such file

Launching installer...

samsunggalaxysii samsung Galaxy SII源码内核编译实验+刷机

采用默认设置直到安装完成。


接下来的时间,准备定制ROM编译CyanogenMod刷到I9100上,敬请期待,欢迎交流指正。

二 : CentOS 5.5下如何编译安装新内核?

第一步:下载内核

传送门:地址.笔者下载的是3.2.84版本

第二步:解压编译内核

由于我下的是.tar.xz文件,用tar命令不能直接解压。

1.我的系统里不带xz解压软件,先下载xz-5.0.3.tar.bz2文件并解压安装

tar -jvxf xz-5.0.3.tar.bz2 cd /opt/xz-5.0.3 #进入解压后的文件夹 ./configure make make install

2.解压内核

xz -d linux-3.2.84.tar.xz tar -xvf linux-3.2.84.tar

3.如果是第一次编译内核,并没有上次残留的文件可以跳过该步骤(最好仔细看下指令对应的功能)

make mrproper make clean 删除大多数的编译生成文件, 但是会保留内核的配置文件.config, 还有足够的编译支持来建立扩展模块 make mrproper 删除所有的编译生成文件, 还有内核配置文件, 再加上各种备份文件 make distclean mrproper删除的文件, 加上编辑备份文件和一些补丁文件。

4.搭建编译内核所需要的环境

yum -y install gcc yum install ncurses ncurses-devel yum install openssl-devel

5.进入内核解压文件夹配置内核参数

由于我是个小白不会选,为了方便,直接用make localmodconfig命令,这个命令是以本来的.config文件为基础去选,可以参考论文:嵌入式linux系统的裁剪优化和测试技术.然后我就一直回车直到结束。然后再输入make menuconfig命令进入图形选择菜单,将kenel hacking中的Sample..选项去掉(具体那一项我忘了,尴尬),退出保存。然后编辑.config文件中的“CONFIG_SYSFS_DEPRECATED”,默认该选项为not set,被注释掉的,将其改为y,即修改为“CONFIG_SYSFS_DEPRECATED=y”,之后可能还要修改,后面再说。

6.编译新内核

make bzImage && make modules && make modules_install

7.安装内核

8.编译安装可能出现的情况

应该是没什么问题, 不过也不排除会出现下面的情况:make:警告:检测到时钟错误。您的创建可能是不完整的。 解决办法:find . -type f -exec touch {} ; 重新编译下就好了。

9.处理下img中的东西(我说不清楚= =)

1)解压initrd文件

# cp /boot/initrd-3.2.84.img /tmp # cd /tmp/ # ls initrd-2.6.30.4.img # mkdir newinitrd # cd newinitrd/ # zcat ../initrd-2.6.30.4.img | cpio -i

释放之后看到如下内容

# ls bin dev etc init lib proc sbin sys sysroot

2)编辑init,删掉其中重复的四行中的两行 echo “Loading dm-region-hash.ko module” insmod /lib/dm-region-hash.ko echo “Loading dm-region-hash.ko module” insmod /lib/dm-region-hash.ko 3)重新打包initrd

# find . | cpio -c -o > ../initrd 11538 blocks # cd .. # gzip -9 < initrd > initrd.img # ls initrd-2.6.30.4.img initrd initrd.img 

这里面的initrd.img就是重新打包后的文件。 4)把initrd.img复制到/boot下 命令:#cp initrd.img /boot 5)修改grub.config,在/etc文件夹下 把initrd-3.2.84.img改为initrd.img就可以了 6)reboot重启 记得选择自己的内核!别错过啦!

以上内容就是小编为大家带来的关于CentOS 5.5下编译安装新内核的方法了,希望可以帮助到大家!

三 : CentOS内核的编译与安装简单示例分享

Linux 内核简介
现在让我们从一个比较高的高度来审视一下 GNU/Linux 操作系统的体系结构。您可以从两个层次上来考虑操作系统,如下图所示
20151027114142248.jpg (370×250)

最上面是用户(或应用程序)空间。这是用户应用程序执行的地方。用户空间之下是内核空间,Linux 内核正是位于这里。
GNU C Library (glibc)也在这里。它提供了连接内核的系统调用接口,还提供了在用户空间应用程序和内核之间进行转换的机制。这点非常重要,因为内核和用户空间的应用程序使用的是不同的保护地址空间。每个用户空间的进程都使用自己的虚拟地址空间,而内核则占用单独的地址空间。
Linux 内核可以进一步划分成 3 层。最上面是系统调用接口,它实现了一些基本的功能,例如 read 和 write。系统调用接口之下是内核代码,可以更精确地定义为独立于体系结构的内核代码。这些代码是 Linux 所支持的所有处理器体系结构所通用的。在这些代码之下是依赖于体系结构的代码,构成了通常称为 BSP(Board Support Package)的部分。这些代码用作给定体系结构的处理器和特定于平台的代码。
Linux 内核实现了很多重要的体系结构属性。在或高或低的层次上,内核被划分为多个子系统。Linux 也可以看作是一个整体,因为它会将所有这些基本服务都集成到内核中。这与微内核的体系结构不同,后者会提供一些基本的服务,例如通信、I/O、内存和进程管理,更具体的服务都是插入到微内核层中的。

CentOS系统的内核编译与

下载内核

从官方网站https://www.kernel.org/下载内核,我下载的是linux-3.13.7.tar.xz

cat /proc/version #先查看一下我的内核版本

20151027114242916.png (1267×53)


cd /usr/src</p> <p>wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.13.7.tar.xz</p> <p>xz -d linux-*.tar.xz</p> <p>tar xf linux-*.tar</p> <p>cd linux-3.13.7</p> <p>#清楚源码树和.config
make mrproper
这个时候你可能报错,会提示如下
*** Unable to find the ncurses libraries or the</p> <p>#解决办法安装</p> <p>#centos</p> <p>yum install ncurses-devel -y</p> <p>#ubuntu</p> <p>apt-get install ncurses-dev


定制内核


make menuconfig #最少也要把网卡、文件系统和声卡驱动选上,配置说明见底部附录</p> <p>#2.6以前的版本是,但是现在的内核是不需要make dep了
make dep
make bzlmage
make modules
make modules_install
make install</p> <p>#编译内核
make </p> <p>make bzImage #编译内核镜像,会提示如下
#Kernel: arch/x86/boot/bzImage is ready </p> <p>make modules #编译内核模块</p> <p>make modules_install #安装内核模块</p> <p>#我的3.13.7不需要太复杂的配置</p> <p>make install #就直接安装好了,包括内核映射,grub配置都不需要手工配置了,它都脚本自动给你配置好了


20151027114355655.png (1265×150)

我们看下,我执行了make install 这个时候install.sh这个脚本都干了什么?
20151027114500666.png (1151×623)

现在我们看出来了,以前那些繁琐的步骤都给我们省略了,全部脚本都干了,其实脚本替我们做的如下
20151027114547528.png (640×350)

20151027114614487.png (720×181)

安装完成

四 : OpenBSD3.6编译内核的方法

首先要下载安装所需的包
  在官方发布的OpenBSD光盘上可以获取源代码,当然也可以从网上下载src.tar.gz、sys.tar.gz、ports.tar.gz文档
  cp /home/jjp/src.tar.gz /usr/src/
  tar zxvf src.tar.gz
  cp /home/jjp/sys.tar.gz /usr/src/
  tar zxvf sys.tar.gz
  cp /home/jjp/ports.tar.gz /usr/
  tar xzvf ports.tar.gz

  可以cvsup到最新的文件,首先要安装cvsup。
  pkg_add cvsup-16.1g-no_x11.tgz
  装完以后需要自己手工生成配置文件,不象FreeBSD那样可以拷贝一个example。
  cd /usr
  mkdir cvsup 
  cd cvsup
  编辑cvsup-supfile

  mg cvsup-supfile
  #注意需要用mg,不是vi什么的
  [code:1:e1bf538bc9]
  #Defaults that apply to all the collections
  *default release=cvs
  *default delete use-rel-suffix
  *default umask=002
  *default host=cvsup.uk.openbsd.org
  *default base=/usr
  *default prefix=/usr/cvsup

  #If your network link is T1 or faster, comment out the following line. 
  *default compress

  OpenBSD-all
  #OpenBSD-src
  #OpenBSD-www
  #OpenBSD-ports
  #OpenBSD-x11
  #OpenBSD-xf4
  [/code:1:e1bf538bc9]

  然后执行cvsup
  cvsup -g -L 2 cvsup-supfile

  OpenBSD的内核配置文件因为支持多平台,所以相应平台的配置 
  文件就存放在/usr/src/sys/arch/$ARCH/conf/里,这里的$ARCH就是你所用的平台名称。以i386为例介绍对内核有优化作用的选项。 

  cd /usr/src/sys/arch/i386/conf
  cp GENERIC mine
  vi mine

  处理器及I/O部分有: 
  option I686_CPU 
  这个很简单,与FreeBSD一样 
  #option GPL_MATH_EMULATE 
  别把它打开除非你的机器老得连FPU都没有 
  option DUMMY_NOPS 
  把开机延迟关掉 
  option UVM 
  高级虚拟内存系统,在系统进行交换时提高速度所用 
  #option MFS 
  这个也与FreeBSD含义一样,用于建立内存盘以提升数据访问速度 

  网络部分有: 
  option NMBCLUSTERS="8192" 
  与FreeBSD含义一样,提升高流量时的网络操作速度并提高内核稳定性。如流量低可用1024或2048 
  另外,把不需要的网卡设备都注释掉,这样可以减小内核容量提升启动速度。 

  磁盘设备部分有: 
  option BUFCACHEPERCENT=45 
  保留45%的系统内存作为文件系统的缓存,顾名思义,根据实际系统内存数来取值,推荐取低一些的值 
  另外,与网络部分一样,把不需要的磁盘设备(scsi、ide)都注释掉。 

  配完了内核,依次打: 
  cd /usr/src/sys/arch/i386/conf ; 
  config mine
  cd ../compile/mine ; 
  make depend && make 
  cp /bsd /bsd-old ; cp bsd /bsd 
  重启后就可以直接用刚才编译好的新内核了,如果它有任何问题,可以重启后在boot>的提示符上输入刚才换名的旧内核,命令格式为: 
  boot> boot device:/kernelold 
  把device换成你存放旧内核的盘设备即可。顺便提一下,你可以在上述命令后加上一个-c选项进入User Kernel Config界面,它提供与FreeBSD下一样的配置功能。

本文标题:ubuntuarm内核编译-samsung Galaxy SII源码内核编译实验+刷机
本文地址: http://www.61k.com/1063874.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1