1. 程式人生 > >核心直接NFS掛載Android檔案系統啟動

核心直接NFS掛載Android檔案系統啟動

(1)首先構建檔案系統

  採用根檔案系統,然後將system和data覆蓋根檔案系統中的system和data(這倆在根檔案系統中是空的)

掛載方法為 mount //遠端IP/檔案目錄 本地目錄 -o username=***,password=****

(2)開啟pc機NFS服務

給/etc/exports中加入 /nfsboot * (rw,insecure,sync,no_wdelay,insecure_locks,no_root_squash) 

/nfsboot 是要掛載的檔案系統存放位置。

把(1)中根檔案系統放到/nfsboot下。

(3)配置核心

開發板是 三七一六 c   v二百  es,按照說明書配置。

開啟nfs支援


沒有nfs as root file

參考

========================

核心支援NFS分割槽(即編譯時在File system中選中[*] Root file system on NFS), 
以及支援核心IP_PNP(即編譯時在Networking中選中[*] IP: kernel level autoconfiguration)
    File systems  ---> 
        Network File Systems  ---> 
            <*> NFS file system support                        ## 必選
                [*]   Provide NFSv3 client support             ## 可選
            [*] Root file system on NFS                        ## 必選
    Networking  ---> 
        [*] Networking support 
            Networking options  ---> 
                [*]   IP: kernel level autoconfiguration       ## 必選
需要開啟IP:Kernel level autoconfiguration 以及下面所有的選項包括DHCP, BOOTP, RARP,而且NFS Client Support不能是模組,必須編譯進核心

============================

,咋辦?

1)開啟 kernel level autoconfiguration


我把它的三個子選項,都開啟:


這樣就能看到

設定"CONFIG_IP_PNP=y"

以及

CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
CONFIG_IP_PNP_RARP=y

都打開了。


這裡,同時可以參考參考  http://blog.csdn.net/sonach/article/details/8102639 這位大牛的經歷。

他根據核心原始碼,對這些做了分析。

2)關閉核心ramdisk支援,否則開機會預設掛ramdisk,不清楚原因。

3)核心配置

v200的es 的

[1 ]核心make kernel_menuconfig 配置

[2]  修改的配置檔案是這個   out/target/product/Hi3716CV200/obj/KERNEL_OBJ/.config

【3】要用這個檔案,替換掉實際編譯的時候的配置檔案,這個編譯用的配置檔案在核心原始碼中

這個路徑在device/hisilicon/bigfish/sdk/source/kernel/linux-3.4.y/arch/arm/configs/

原始碼採用了新的配置之後,就可以編譯了。

(4)配置fastboot

配置fastboot為nfs啟動。

setenv bootargs mem=1G root=/dev/nfs rootfstype=nfs rsize=1024,wsize=1024 nfsroot=192.168.1.88:/nfsboot,nolock  ip=192.168.1.10:192.168.1.88:192.168.1.1:255.255.255.0:dpnfs:eth0:on console=ttyAMA0,115200 init=/init mtdparts=hi_emmc:1M(fastboot),1M(partition),1M(bootargs),10M(recovery),2M(deviceinfo),8M(baseparam),20M(logo),20M(logobak),40M(fastplay),40M(fastplaybak),40M(kernel),20M(misc),500M(system),1024M(userdata),100M(cache),-(sdcard)

配置了,板子核心就可以自動識別到gw,ipaddr,serverip。可能這些環境變數都是為bootargs服務的。

貌似bootargs是放在一個單獨的分割槽中的,所以改動了之後,即使重新燒錄fastboot也不會改變這些引數。

(5)燒寫kernel

hitools有個問題,就是serverip設定了不管用,因為我在fastboot中設定的serverip是我虛擬機器的ip,不是pc windows64的ip,所以tftp伺服器/hitools ,收不到請求。

所以要把fastboot的serverip設定為執行tftp伺服器的ip。這個不影響fastboot的bootargs的,而且又能讓hitools正常工作。

(6)核心掛根檔案系統

這些檔案必須是這樣的許可權:


否則:

=================許可權不對======會有這樣的報錯==============

ALSA device list:
  #0: HISI-AIAO
VFS: Mounted root (nfs filesystem) on device 0:10. 已經掛了NFS
Freeing init memory: 1728K
init: skipping insecure file '/init.rc'  
mmc1: new high speed MMC card at address 0001
mmcblk0: mmc1:0001 MMC04G 3.57 GiB 
mmcblk0boot0: mmc1:0001 MMC04G partition 1 2.00 MiB
mmcblk0boot1: mmc1:0001 MMC04G partition 2 2.00 MiB
 mmcblk0: p1 p2 < p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 p18 >
 mmcblk0boot1: unknown partition table
 mmcblk0boot0: unknown partition table
init: Timed out waiting for /dev/.coldboot_done
init: Unable to open persistent property directory /data/property errno: 2
eth0: no IPv6 routers present

然後就卡主了。

========================================


參考

In jellybean, init.rc, default.prop etc should be writable only by the owner. You need to change the file permission to 644 (owner writable, world read-only) when you write the filesystem.
http://e2e.ti.com/support/embedded/android/f/509/p/204567/759121.aspx

(7)掛載成功

18:40:44])
ADDRCONF(NETDEV_UP): eth0: link is not ready
PHY: mdio0:02 - Link is Up - 100/Full
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
IP-Config: Complete:
     device=eth0, addr=192.168.1.10, mask=255.255.255.0, gw=192.168.1.1
     host=dpnfs, domain=, nis-domain=(none)
     bootserver=192.168.1.88, rootserver=192.168.1.88, rootpath=
ALSA device list:
  #0: HISI-AIAO
VFS: Mounted root (nfs filesystem) on device 0:10.
Freeing init memory: 1728K
init (1): /proc/1/oom_adj is deprecated, please use /proc/1/oom_score_adj instead.
mmc1: new high speed MMC card at address 0001
mmcblk0: mmc1:0001 MMC04G 3.57 GiB 
mmcblk0boot0: mmc1:0001 MMC04G partition 1 2.00 MiB
mmcblk0boot1: mmc1:0001 MMC04G partition 2 2.00 MiB
 mmcblk0: p1 p2 < p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 p18 >
 mmcblk0boot1: unknown partition table
 mmcblk0boot0: unknown partition table
EXT4-fs (mmcblk0p15): recovery complete
EXT4-fs (mmcblk0p15): mounted filesystem with ordered data mode. Opts: (null)
EXT4-fs (mmcblk0p16): recovery complete
EXT4-fs (mmcblk0p16): mounted filesystem with ordered data mode. Opts: (null)
EXT4-fs (mmcblk0p17): recovery complete
EXT4-fs (mmcblk0p17): mounted filesystem with ordered data mode. Opts: (null)
init: cannot find '/system/bin/rild', disabling 'ril-daemon'
init: cannot find '/system/etc/install-recovery.sh', disabling 'flash_recovery'
init: cannot find '/system/bin/dtvserver', disabling 'dtvserver'
[email protected]:/ # ufsd: module license 'Commercial product' taints kernel.
ufsd:: trace mask set to 0000000f
ufsd: driver (UFSD_HEAD UFSD_HEAD_9, LBD=ON, delalloc, acl, ioctl, sd, fua, tr) loaded at bf000000
NTFS support included
optimized: speed
Build_for__Huawei_Hi3716cv200_k3.4.35_2013-05-09_with_lock_debugging_UFSD_HEAD_9
 'Evaluation version - not for resale!'


[email protected]:/ # 
[email protected]:/ # 
[email protected]:/ # 

[email protected]:/ # ls -aleth0: no IPv6 routers present

原文地址:http://blog.csdn.net/commshare/article/details/13766515

相關推薦

核心直接NFS掛載Android檔案系統啟動

(1)首先構建檔案系統   採用根檔案系統,然後將system和data覆蓋根檔案系統中的system和data(這倆在根檔案系統中是空的) 掛載方法為 mount //遠端IP/檔案目錄 本地目錄 -o username=***,password=**** (2)

QEMU模擬Mini2440開發板執行環境(二):NFS掛載檔案系統

前言 原創文章歡迎轉載,請保留出處。 若有任何疑問建議,歡迎回復。 郵箱:[email protected] 緊接著第一篇(http://blog.csdn.net/maxwell_nc/article/details/44279553),我們使用網路檔案系統NFS掛載根檔案

wlh- beagle bone 通過uboot tftp 載入zImage 裝置樹 及 nfs 掛載檔案系統

首先重啟Ubuntu 伺服器的 tftp 和nfs  sudo /etc/init.d/xinetd restart 命令              重啟 xinetd  tftp服務 sudo&nbs

nfs掛載檔案系統

1.安裝NFS      nfs原理是通過網路,將遠端主機共享的檔案系統,掛載到本機。Ubuntu 12.04上預設是沒有安裝NFS伺服器的,首先要安裝NFS服務程式:    先執行 # apt-get update

JZ2440設定從開發板啟動或使用NFS作為根檔案系統啟動

進入u-boot介面,選擇q退出主介面,進入 OpenJTAG>  1、從開發板根檔案系統正常啟動:    OpenJTAG> set bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console

使用nfs作為根檔案系統啟動遇到的問題

在通過 flash 上的根檔案系統啟動後,手工 mount  NFS是沒有問題的,但是直接使用NFS作為根檔案系統啟動時會遇到問題,初次的問題是提示伺服器無響應,即 server  ******  n

linux開發環境搭建(3)-nfs掛載檔案系統

前面講解了網絡卡配置和使用tftp下載核心,這次要講的是使用nfs掛載根檔案系統。 1、什麼是根檔案系統 所謂根檔案系統,也就是系統啟動後第一個掛載的目錄,根檔案系統包括Linux啟動時所必須的目錄和關鍵性的檔案,例如Linux啟動時都需要有init目錄下的

beaglebone black tftp與nfs掛載檔案系統

原文連結: http://blog.csdn.net/zy812248258/article/details/39291835 我的板子是beaglebone black  rev.c 啟動方式: 在win下用am335x-evm-01.00.00.00.img.zip裡的

Xlinx-Zedboard使用NFS掛載檔案系統

安裝nfs-kernel-server和tftpd-hpa服務 有安裝包情況下   sudo dpkg -i *.deb 建立共享目錄tftpboot 1.sudo mkidr /tftpboot 2

NFS掛載網路檔案系統

1.首先將電腦本地ip、ubuntu虛擬系統ip、開發板的ip地址設在同一網段,通過路由器連線開發板和電腦,然後互ping確保三者互聯。 2.重新啟動開發板進入boot選單,按q退出選單,輸入print命令可以看到列印資訊: 其中: bootarg

Beaglebone Black——理論篇beaglebone black啟動——從串列埠獲得SPL、U-BOOT,TFTP伺服器獲得核心NFS伺服器掛載檔案系統

          一般來講啟動一個系統所需的bootloader(SPL/MLO、u-boot.img)和根檔案系統(/boot下包含核心zImage)要麼是放在NAND Flash,或者是SD卡,或者是eMMC,或者是USB中,那麼還有一種方式,就是所需要的這些檔案全部

nfs啟動:u-boot啟動後從ubuntu tftp下載核心及裝置樹,檔案系統掛載nfs伺服器目錄

U-Boot# setenv netargs "setenv bootargs console=${console} ${optargs}    root=/dev/nfs  rootfstype=nfsroot    nfsroot=${serverip}:${rootpath}   ip=${ipaddr

u-boot通過nfs從伺服器下載核心,並且啟動核心,掛載檔案系統的方法

http://www.linuxidc.com/Linux/2013-08/89154.htm http://blog.csdn.net/sinat_31500569/article/details/53120530 參考連結 首先要在電腦上安裝nfs伺服器 1.執行命令

《Linux啟動過程分析》核心掛載檔案系統

說明:本文基於Linux2.6.29核心分析;其他核心版本僅供參考。   前邊通過原始碼情景分析,看過了匯流排、裝置、驅動及其發現機制,Linux2.6核心udev裝置節點建立相關;對於檔案系統,一直望而生畏,但核心學習、這部分又不可能繞的過去。目前對VFS中使用的has

NFS啟動Linux並掛載檔案系統

要搞嵌入式NFS確實必不可少,否則每次都要重啟煩都煩死。這裡總結在NFS建立過程中遇到的幾個問題。 下面記錄幾個遇到的問題 VFS: Cannot open root device “

[置頂] 《Linux啟動過程分析》核心掛載檔案系統 http://blog.csdn.net/tankai19880619/article/details/12093239

說明:本文基於Linux2.6.29核心分析;其他核心版本僅供參考。   前邊通過原始碼情景分析,看過了匯流排、裝置、驅動及其發現機制,Linux2.6核心udev裝置節點建立相關;對於檔案系統,一直望而生畏,但核心學習、這部分又不可能繞的過去。目前對VFS中使用的hash表還未做研究,它在dent

檔案系統啟動掛載目錄

ubuntu與開發板之間設定為同一網段中的Ip, 這裡將ubuntu設定為: ifconfig eth0 200.200.4.233 開發板設定為: ifconfig eth0 200.200.4.234 互相ping一下,確保能互相ping通; 虛擬機器要實現上網,需要設定為NAT模式;

怎樣從網路上核心和根檔案系統啟動開發板

首先在ubuntu虛擬機器上要有nfs伺服器 1.啟動開發板uboot,輸入 下面的命令 set bootargs console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.19:/work/nfs_root/tmp/fs_mini

NFS作為根檔案系統掛載超時

NFS伺服器配置正確後,使用ramfs,通過mount能夠正常掛載NFS,但是作為ROOTFS無法正常掛載,顯示超時。   經檢視log,RPC報錯-120。   分析結果: 在Ubuntu1804上,nfsserver支援v3,v4,在UBuntu1304上,nfsserver

ARM開發板與PC機Ubuntu系統建立連線,採用NFS(網路檔案系統掛載

        Linux中最常用的方法就是採用NFS來執行各種程式,這樣可以不必花費很多時間下載程式,如果應用程式變的越來越大,就會發現NFS執行的方便所在。 首先要搭建NFS伺服器,步驟如下: (1)安裝nfs伺服器和客戶端           #sudo apt-ge