亚洲欧洲国产欧美一区精品,激情五月亚洲色五月,最新精品国偷自产在线婷婷,欧美婷婷丁香五月天社区

      考試首頁 | 考試用書 | 培訓課程 | 模擬考場 | 考試論壇  
        當前位置:Linux認證 > 綜合輔導 > 文章內(nèi)容
        

      Linux教程:安卓設(shè)備運行原生Debian(非chroot)

      來源:linuxtoy.org [ 2016年2月27日 ] 【

      最近在折騰安卓盒子的過程中發(fā)現(xiàn),通過修改安卓內(nèi)核的 initramfs 文件,添加一個自己的 BusyBox 來 switch_root 進入 Debian 是可行的。而且在 BusyBox 下就可以直接 insmod *.ko 內(nèi)核模塊了,所以驅(qū)動不是問題。如此,則市面上大部分安卓設(shè)備都可以原生運行 Debian 系統(tǒng)了?

      原理:利用安卓內(nèi)核來引導 Debian 的 rootfs。

      拆解與打包 boot.img。

      boot.img 包含了 zImage 和 initramfs 等文件,現(xiàn)在需要修改 initramfs 來 switch_root 進入 Debian。

      利用 mkbootimg 和 unpackbootimg:https://github.com/osm0sis/mkbootimg

      編譯后,先提取安卓默認 boot.img:

      dd if=/dev/block/nandX of=boot.img
      

      拆分:

      unpackbootimg boot.img
      

      會提取出若干文件。

      制作自己的 initramfs:

      mkdir initramfs
      cd initramfs
      

      創(chuàng)建一個 init 文件:

       

      #!/bin/sh
      mkdir -p /root
      mkdir -p /proc
      mkdir -p /sys
      mkdir -p /dev
      mkdir -p /tmp
      mount -t proc none /proc
      mount -t sysfs none /sys
      mount -t ramfs none /dev
      mount -t tmpfs none /tmp
      insmod /ko/disp.ko
      insmod /ko/lcd.ko
      insmod /ko/hdmi.ko
      insmod /ko/nand.ko
      insmod /ko/gpio-sunxi.ko
      insmod /ko/ump.ko
      insmod /ko/mali.ko
      insmod /ko/videobuf-core.ko
      insmod /ko/videobuf-dma-contig.ko
      insmod /ko/uvcvideo.ko
      insmod /ko/rtl8150.ko
      echo /sbin/mdev > /proc/sys/kernel/hotplug
      mdev -s

      echo -e "Waiting 5 seconds for removable devices to stablize"
      i=0
      while [ $i -lt 5 ]; do
          sleep 1
          echo -n "."
          i=$(($i+1))
      done
      echo
      blkid | grep 4cc77658-b809-4894-b6a7-c5f15d8b00fe > /tmp/mountdev

      #/bin/sh
      mount $(cat /tmp/mountdev | cut -d ':' -f 1) -o noatime,nodiratime /root
      exec switch_root /root /sbin/init

      這里 4cc77658-b809-4894-b6a7-c5f15d8b00fe 為 rootfs 設(shè)備的 UUID。

      chmod u+x init
      

      編譯 BusyBox(不再贅述)。

      將編譯好的 BusyBox 目錄拷貝到 initramfs 下,進行打包:

      find . | cpio -H newc -o > ../initramfs.cpio.gz
      

      重新制作 boot.img

      mkbootimg --base 0x00200000 --kernel zImage --ramdisk initramfs.cpio.gz -o my-boot.img
      

      --base 為解包后查看里面的 base 參數(shù)。

      以上只是一個大體的架構(gòu)步驟,具體到某些盒子可能不太一樣,另外要準備好 ttl 線以便查看引導錯誤。如此,一個陳舊的、吃灰的安卓盒子可以跑原生的 Debian 系統(tǒng),然后隨意使用 apt 來安裝自己的服務(wù)當小型服務(wù)器來用了,何樂不為?而且目前市面上的安卓盒子內(nèi)存基本都是 1G 左右,功耗且低,在家里跑服務(wù)是非常不錯的。

      將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動訪問考試網(wǎng) | 復(fù)制本頁地址,傳給QQ/MSN上的好友 | 申請鏈接 | 意見留言 TOP
      關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  站內(nèi)導航  考試論壇
      Copyright © 2007-2013 中華考試網(wǎng)(Examw.com) All Rights Reserved