關於S3C2410 NFS應用

我們生活周遭存在太多太多的 embedded system ,過去 embedded system 有專屬的 OS,現在 linux 也可以應用在嵌入式環境,不過本版將廣泛討論所有嵌入式系統不只 linux 喔,歡迎有這方面經驗或有興趣的朋友一同進來討論。

版主: chester

關於S3C2410 NFS應用

文章foxlin » 週二 8月 28, 2007 12:36 am

目前我想要在我手邊的一套S3C2410進行與HOST PC作NFS(NETWORK FILESYSTEM)應用,可是有下列問題,不知是否有人遭遇過?!

系統描述:

1. 開發版 S3C2410 已裝載Bootload 、Linux Kernel 2.4.18 與 一套內建Filesystem

2.在個人電腦端Host PC : 使用WinXP並安裝VMWare5.0並已經可以利用Samba在兩作業平台傳遞資料
( 就是Linux編譯完的核心程式可以透過Samba Server傳遞到Winxp進行Kernel燒錄動作)

3.最終目的:當目標版S3C2410完成開機後,我在HOST PC端利用 NFS Mount將 Host PC內資料Mount
到目標版上

針對上述目標,我嘗試下列操作步驟:
1.在Host PC內VMWare的LINUX環境下,我修改了 /etc/exports內容為 /mnt/nfs *(rw,sync,no_root,squash)。並執行了 service portmap start(開啟Host PC的RPC)與執行 service nfs restart(並且開啟NFS Server)

2.在Host PC端我修改所在IP位址為 192.168.71.150 === 同時也修改我目標版 IP為192.168.71.100

3.在Host PC端Ping 目標版有獲得回應,且在目標版Ping Host PC也有回應

4.在Host PC端我執行 mount 192.168.71.100:/ /mnt/nfs (想要將目標版的root mount到Host PC下的/mnt/nfs目錄下)

5.結果等待一段時間後,Host PC端顯示 RPC呼叫路徑錯誤......

請問我哪裡做錯嗎?還是有哪一觀念錯誤呢?
foxlin
可愛的小學生
可愛的小學生
 
文章: 21
註冊時間: 週三 7月 11, 2007 1:38 am

Re: 關於S3C2410 NFS應用

文章foxlin » 週五 8月 31, 2007 11:41 am

foxlin 寫:目前我想要在我手邊的一套S3C2410進行與HOST PC作NFS(NETWORK FILESYSTEM)應用,可是有下列問題,不知是否有人遭遇過?!

系統描述:

1. 開發版 S3C2410 已裝載Bootload 、Linux Kernel 2.4.18 與 一套內建Filesystem

2.在個人電腦端Host PC : 使用WinXP並安裝VMWare5.0並已經可以利用Samba在兩作業平台傳遞資料
( 就是Linux編譯完的核心程式可以透過Samba Server傳遞到Winxp進行Kernel燒錄動作)

3.最終目的:當目標版S3C2410完成開機後,我在HOST PC端利用 NFS Mount將 Host PC內資料Mount
到目標版上

針對上述目標,我嘗試下列操作步驟:
1.在Host PC內VMWare的LINUX環境下,我修改了 /etc/exports內容為 /mnt/nfs *(rw,sync,no_root,squash)。並執行了 service portmap start(開啟Host PC的RPC)與執行 service nfs restart(並且開啟NFS Server)

2.在Host PC端我修改所在IP位址為 192.168.71.150 === 同時也修改我目標版 IP為192.168.71.100

3.在Host PC端Ping 目標版有獲得回應,且在目標版Ping Host PC也有回應

4.在Host PC端我執行 mount 192.168.71.100:/ /mnt/nfs (想要將目標版的root mount到Host PC下的/mnt/nfs目錄下)

5.結果等待一段時間後,Host PC端顯示 RPC呼叫路徑錯誤......

請問我哪裡做錯嗎?還是有哪一觀念錯誤呢?


試了幾天總算有點成果,分享請您們參考一下!關於如何mount NFS,我想只要會編輯busybox文件,其他應該沒有太大問題

掛入自製的文件檔案系統(File System)
Editor by Fox Lin
一、實驗目的:
利用Busybox建構出一個自訂的Root File System(rootfs)

二、系統環境描述:
A. IBM PC / 60GB DISK / 1G RAM / Etherner card *3 / cross RJ45 cable
B. DMA-2410學習套件 --- 以下簡稱Target Board
B. 在 WinXP下安裝 VMware 5.0 + RedHat 9.0,並建立Samba Service,利用其來作檔案交換。
(RedHat9.0環境負責核心與軟體編譯、WinXP下負責與Target Board燒錄與監視)

三、軟體版本:
A. Linux Kernel 2.4.20.8
B. Arm-linux-toolchain gcc 3.3.2
C. Busybox – 1.2.1

四、操作步驟與設定

A. 前置作業:
請先至 http://www.busybox.net/downloads/ 下載適合自己系統的busybox版本
所謂適合是指 (a)Busybox內有提供自己想要的文件系統 (b)配合自己編譯環境的版本
如cross-2.95.3就不能與 Busybox-1.00-pre10來交叉編譯(至少我試出來是這樣的結果)

B. 安裝 cross-3.3.2 => /usr/local/arm/3.3.2 並在 /etc/bashrc內加入
export PATH=/usr/local/arm/3.3.2/bin:$PATH 已便讓系統在每次開機都會指向我們想要的預設 cross-compiler

安裝Busybox 1.2.1 => /usr/src/busybox-1.2.1

C.開始建立基本文件系統

(a)在製作文件系統時,有一項請注意。因為FHS對Linux的目錄具有一些規範設定,建議需參
考之

(b)在 root下建立一個 bootcd目錄
root@localhost /> mkdir bootcd

(c) 在bootcd下建立 ramdisk
root@localhost bootcd> mkdir ramdisk (Target board根目錄)


(d)在ramdisk內建立Target Board內的根目錄文件系統 (root filesystem)
root@localhost ramdisk > mkdir bin/ dev/ etc/ mnt/ proc/ sbin/ usr/ lib/
另外還有二個必要的目錄:/var 與 /tmp,由於這二個目錄都需要具備寫入權限,所以在這裡我們是以 ramdisk 的做法來 mount 這二個目錄。
root@localhost ramdisk > cd dev //進入dev目錄
root@localhost ramdisk > mknod console c 5 1
root@localhost ramdisk > mknod fb0 c 29 0
root@localhost ramdisk > mknod null c 1 3
root@localhost ramdisk > mknod ram0 b 1 0
root@localhost ramdisk > mknod tty c 5 0
root@localhost ramdisk > mknod tty0 c 4 0

(e)製作根文件開機設定
(i) 請先到 busybox 1.2.1目錄下 編輯 init/init.c
Busybox1.2.1 > vi init/init.c

#define INITTAB “/etc/inittab”
#ifndef INIT_SCRIPT
#define INIT_SCRIPT “/etc/init.d/rcS” =>改為“/etc/rc.d/rc.init”
(設定當Kernel mount root filesystem時,首先執行的script)
#endif

(ii) 設定開機檔 /etc/fstab 、 /etc/inittab
etc/fstab內容如下:
/dev/ram0 / ext2 defaults 1 1
none /proc proc defaults 0 0
/dev/ram1 /tmp ramfs defaults 0 0
/dev/ram2 /var ramfs defaults 0 0
fstab 第一行設定,目的在將 /dev/ram0 重新附掛成 ‘/’(root),此動作用意在於重新指定 ‘/’ 的檔案系統為 ext2。最後二行的目的是為了以 ramfs 來 mount 重要的二個目錄:/var 與 /tmp;如此一來,就算開機沒做 remount root(詳見後文說明),也能對 /tmp 與 /var 目錄做寫入的動作
etc/inittab內容如下:
:0:sysinit:/etc/rc.d/rc.init
:0:respawn:/bin/ash
根據這個 inittab 設定,當系統開機後便會進入 run level 0,在 run level 0 模式下,init process會執行2個動作:(1) 執行 /etc/rc.d/rc.init,此即「init script」;(2) 執行 /bin/sh,即進入 shell 模式。 在此我們並沒有參照 LSB 的標準來設定 run level,而且也沒有使用 getty 來讓使用者登入(多使用者模式)。

根據 inittab 的設定,我們 root filesystem 的 init script 位於 /etc/rc.d/rc.init。以下提供一個供 Embedded Linux 使用的 init script 範本:
#!/bin/ash <<<<<<<<<<<<<<<<<<<<<<<<<<配合busybox所選的shell環境設定
# automount (/etc/fstab)
mount -a
# remount root
mount -o remount rw /
#
mkdir /var/lock
mkdir /var/lock/subsys
mkdir /var/run
# start other applications (Running application automatically during
# booting up.
# eg. /bin/thttpd –p 80 –d /var/www
當我們執行「mount –a」後,mount 便會去讀取前一步驟所設定的 fstab,並根據此表格的內容來做 mount 的動作。另外,這裡有一個 remount 的動作:
# mount -o remount rw /
此動作的目的是將 root(’/’)重新 mount 成可讀寫,此動作是選擇性的,若省略不做,請務必保持 /var 與 /tmp 目錄是能寫入的(建議以 ramdisk 方式實作為佳)。
若 root filesystem 未包含 inittab 設定檔,則 Busybox 會使用以下的內建設定:
::sysinit:/etc/init.d/rcS
::askfirst:/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r
::restart:/sbin/init
不過,還是建議編寫自己的 inittab 設定檔。



(iii) 製作busybox文件
在Build Options裏面
Build busybox as a staic binary (no shared libs) =>select
Build shared libbusybox =>select
Do you want to build BusyBox with a Cross Compiler =>select
填寫/usr/local/arm/3.3.2/bin/arm-linux-
Shells >
Choose your default shell (ash) >
(X) ash 選中ash,這樣生成的時候才會生成bin/ash檔
註一:請注意,init 與 shell 是必選的項目,請檢查是否有勾選這二個功能。
註二:此外我們最終目的是要 root filesystem能夠支援NFS,以便讓我們能自由在Host端
添加Driver或是filesystem,所以 在 Networking Utilities中的 ipconfig、ping文件與 Linux
System Utilities中的mount / umount 針對NFS選項也請勾選
選定後開始編譯busybox
make TARGET_ARCH=arm all
make instll (將在_INSTLL生成 bin,sbin兩個檔夾和一個linuxrc檔)
將上述_install內的 /bin /sbin linuxrc三個檔案複製到 bootcd/ramdisk/
(iv) copy cross-3.3.2/lib到 root filesystem/lib下
• libc.so.6:C library標準程式庫。
• ld-linux.so.2:Native dynamic loader。

cp –a /usr/local/arm/3.3.2/lib/libc.so* /bootcd/ramdisk/lib

cp –a /usr/local/arm/3.3.2/lib/ ld-linux.so* /bootcd/ramdisk/lib

P.S.請注意檔案連結,是否有何檔案沒有一起拷貝至 ramdisk/lib

(v) 將 ramdisk製作成 cramfs
mkcramfs ramdisk xxxx.cramfs
foxlin
可愛的小學生
可愛的小學生
 
文章: 21
註冊時間: 週三 7月 11, 2007 1:38 am

文章youngjw » 週四 10月 04, 2007 11:37 am

您好:
請問您有把您的問題解決了嗎?
因為我碰到跟你一樣的問題說,可以把你的方法跟我講一下嗎?謝謝...
youngjw
可愛的小學生
可愛的小學生
 
文章: 1
註冊時間: 週四 10月 04, 2007 11:36 am

文章gwanlin » 週四 10月 18, 2007 10:08 am

我也是剛換成linux環境不久,前陣子也是碰到要mount NFS時出現RPC不work的情況,後來找到原因分別是portmap與防火牆沒有設定好。

建議你用這些指令去確認一下
chkconfig
netstat
rpcinfo

還有,從網路上得知,Fedora 7的portmap已經改名為rpcbind,如果你的host跟我一樣是Fedora 7,也要確認一下。

防火牆當然是用iptables檢查囉....

希望有幫助。
這個人很懶,沒有簽名檔。
gwanlin
可愛的小學生
可愛的小學生
 
文章: 7
註冊時間: 週三 7月 25, 2007 5:39 pm

文章winni » 週一 6月 30, 2008 3:02 pm

你好...我想請問,你們是用新華arm920t s32410這塊開發版嗎??
因為我們畢業需要做專題,剛好用到這塊板子,
可是我們用了5個多月了,還是無法將kernel燒進去,我們試了很多版本如:
2.4.20 ,2.6.14 ...等等,很多...
但最後發現,他只能用光碟附贈2.4.18的kernel,我們真的不知道該怎麼辦?想請問各位有用過這塊實驗版嗎???
winni
可愛的小學生
可愛的小學生
 
文章: 2
註冊時間: 週一 6月 30, 2008 2:54 pm
來自: 台南


回到 embedded system

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客