`
isiqi
  • 浏览: 16495202 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Linux 开发入门

阅读更多

本文是linux开发的一个入门文档,介绍了从nfs启动android操作系统的相关步骤。

1. 开发环境

虚拟机:ubuntu8.10
虚拟机IP:172.16.10.73 网关:172.16.10.1 子网掩码:255.255.255.0 广播地址:172.16.1.255
开发板IP:172.16.10.211 广播地址:172.16.10.255 子网掩码 255.255.255.0
建立Linux虚拟机

关键设置:在虚拟机里一定要选上Bridged:connected directly to the physical network。

clip_image002

2.建立NFS服务
1.安装NFS
Ubuntu上默认是没有安装NFS服务器的,首先要安装NFS服务程序:
$ sudo apt-get install nfs-kernel-server
安装nfs-kernel-server时,apt会自动安装nfs-common和portmap
这样,宿主机就相当于NFS Server
2.配置NFS
(1)配置portmap
方法1: 编辑/etc/default/portmap, 将 -i 127.0.0.1 去掉.
方法2: $ sudo dpkg-reconfigure portmap , 对Should portmap be bound to the loopback address? 选N.
(2)配置/etc/hosts.deny
禁止任何host(主机)能和你的NFS服务器进行NFS连接,加入:
### NFS DAEMONS
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
(3)配 置/etc/hosts.allow
允许那些你想要的主机和你的NFS服务器建立连接。下列步骤将允许任何IP地址以172.16.10开头的主机(连 接到NFS服务器上),也可以指定
特定的IP地址,加入:
### NFS DAEMONS
portmap: 172.16.8. *
lockd: 172.16.8.*
rquotad: 172.16.8.*
mountd: 172.16.8.*
statd: 172.16.8. *
/etc/hosts.deny 和 /etc/hosts.allow 设置对portmap的访问. 采用这两个配置文件有点类似"mask"的意思. 现在/etc/hosts.deny中禁止所有用 户对portmap的访问. 再在/etc/hosts.allow 中允许某些用户对portmap的访问.
$sudo /etc/init.d/portmap restart
重启portmap daemon.
(4)配置/etc/exports
NFS挂载目录及权限由/etc/exports文件定义
比如我要将将我的/home/android/nfsroot目录让所有的IP共享, 则在该文件末尾添加下列语句:
/root/share/nfsroot *(rw,sync,no_root_squash,no_subtree_check)
若更改了/etc/exports, 运行$sudo exportfs -r 更新 运行

$ sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务
(5)测试NFS
可以尝试一下挂载本地磁盘
我前面开始时已经提到了我的虚拟机IP172.16.10.73

#sudo mkdir nfsroot

将原来的文件系统的内容拷贝到这个目录。

#sudo mount –o loop ramdisk /mnt (注:这里有ramdisk文件系统由陈美友提供)

#sudo cp –rf /mnt /home/android/nfsroot

#sudo umount /mnt
我现在试把/home/android/nfsroot目录挂载到/mnt目录下
#mount -t nfs 172.16.8.67:/root/share/nfsroot /mnt
成功的挂载上的话你会在/mnt目录下看到nfsroot这个文件夹下的内容

sudo gedit /rootfs/etc/init.d/rcS

#! /bin/sh

mount –o remount,rw/

/sbin/ifconfig eth0 172.16.10.211

3.建立tftp服务

由于在uboot执行tftp命令时选用的是虚拟机里的文件,所以建立了tftp服务。

sudo apt-get install tftp tftpd xinetd tftp-hpa tftpd-hpa

cd /etc/xinetd.d/

sudo vim tftp

更改后如下:

service tftp

{

disable = no

socket_type = dgram

protocol = udp

wait = yes

user = root

server = /usr/sbin/in.tftpd

server_args = -s /home/android/tftpboot -c

per_source = 11

cps = 100 2

flags = IPv4

}

建立tftp服务文件目录

在/home/android/下建立sudo mkdir /tftpboot

sudo chmod 777 /tftpboot -R

重新启动服务

sudo /etc/init.d/xinetd restart

测试:

cd /home

(/tftpboot 下存放文件zImage)

sudo tftp 192.16.10.211

tftp> get zImage

如果在home目录下看到zImage说明配置正确。

4.内核配置

用了最新的dm9000.c文件(由陈美友提供),替换driver\net\dm9000.c文件.

在执行make menuconfig命令后,

在boot options里写入(如图所示)

noinitrd root=/dev/nfs rw nfsroot=172.16.10.73:/home/android/nfsroot ip=172.16.10.73:172.16.10.211:255.255.255.0 console=ttyS0,115200 init=/linuxrc mem=64M

clip_image004

在NetworkingàNetworking optionsà选上以下选项:

clip_image006

在Device DriversàNetwork device supportàEthernet(10 or 100Mbit)里选上:

clip_image008

在File systemsàNetwork File Systems里选上:

clip_image010

clip_image012

注:以上在make menuconfig中有些选项可能不是必须的,待进一步研究!

5.通过NFS启动开发板
当NFS 服务设置好并启动后,我们就可以把NFS 作为根文件系统来启动开发板了 通过使用NFS 作为根文件系统,开发板的“硬盘”就可以变得很大,因为您使用的是主机的硬盘 。这个时候把已有的文件系统
这是使用linux 作为开发经常使用的方法 ,打开串口终端,进入Uboot,设置虚拟机的IP

Ø setenv serverip 172.16.10.73

设置开发板的IP :

Ø setenv ipaddr 172.16.10.211

Ø 设置启动参数:

Ø setenv bootargs console=ttyS0 root=/dev/nfs nfsroot=172.16.10.73:/home/android/nfsroot ip=172.16.10.211:172.16.10.73:172.16.10.1:255.255.255.0:www.cn-emb.cn:eth0:off

这里解释下这条命令里面的意思:

1)nfsroot=172.16.10.73这个是我的虚拟机IP
2)ip=172.16.10.211:172.16.10.73:172.16.10.1:255.255.255.0
第一个IP是开发板的IP(开发板的IP不要与局域网内其它IP冲突),第二个是虚拟机的IP,第三个也是虚拟机的IP,第四个是开发板的子网掩码
执行完这条命令后再继续执行

>boot tftp 20400000 androidimg;bootm 20400000
如果一切顺利的话将会进入到开发板上去
进入到开发板后你就可以去mount你主机的共享目录了

下面是启动时的信息。

……
Looking up port of RPC 100005/1 on 172.16.10.73

VFS: Mounted root (nfs filesystem).

Freeing init memory: 124K

init started: BusyBox v1.11.1 (2009-03-04 14:12:26 CST)

starting pid 221, tty '': '/etc/init.d/rcS'

Processing etc/init.d/rc.S

Mount all

Start mdev....

Start network...

starting pid 227, tty '': '-/bin/sh'

Processing /etc/profile... Set search library path

Set user path

Done

# ls

bin etc home lost+found root tmp

boot gdbserver lib mnt sbin usr

dev hello linuxrc proc sys var

分享到:
评论

相关推荐

    嵌入式linux开发入门

    嵌入式Linux开发入门主要涉及以下几个方面: 1. **Linux基础知识**:Linux是一种开源的操作系统,其内核由林纳斯·托瓦兹开发。了解Linux的基本概念,如文件系统、命令行操作、权限管理等,是嵌入式Linux开发的基础...

    嵌入式LINUX开发入门

    嵌入式LINUX开发入门嵌入式LINUX开发入门嵌入式LINUX开发入门嵌入式LINUX开发入门

    制作Linux发行版----MagicLinux开发入门指南参照.pdf

    Magic Linux开发入门指南 Magic Linux开发入门指南是制作Linux发行版的入门指南,旨在帮助读者从零开始制作自己的Linux发行版。 本指南假定读者对Linux有基本了解,拥有基本的命令使用经验,例如cp、mv、rm等,...

    嵌入式Linux开发入门

    嵌入式Linux开发入门是进入嵌入式系统领域的一个重要起点,它涵盖了操作系统、硬件、编程和设备驱动等多个方面的知识。Linux作为一个开源的操作系统,因其稳定性、灵活性和强大的社区支持,被广泛应用于各种嵌入式...

    嵌入式LINUX开发入门V1.5

    在这个入门教程中,"嵌入式LINUX开发入门V1.5.pdf"很可能是包含上述所有内容的详细指导文档。这份资料可能涵盖了从环境搭建(如交叉编译工具链)、基础C编程、设备驱动模型介绍、内核模块开发,到实际的驱动示例和...

    嵌入式Linux开发入门(课件).zip

    本课程的"嵌入式Linux开发入门(课件).zip"是针对初学者设计的教学资源包,旨在帮助学习者快速掌握嵌入式Linux的基本概念和实践技能。以下是基于提供的压缩包文件内容的详细知识点解析: 1. **嵌入式系统基础**: ...

    Linux开发入门与实战.zip

    Linux开发入门与实战

    Magic Linux 开发入门指南

    ### Magic Linux 开发入门指南知识点总结 #### 一、工具链的制作 ##### 1.1 准备环境 在开始构建Magic Linux之前,需要确保有一台能够上网的386以上的计算机,并且具备基本的Linux操作技能。此外,熟悉一些基本的...

    linux开发入门

    总的来说,Linux开发入门涉及的内容广泛,从操作系统基础、编程语言、系统编程到硬件平台的理解和系统移植,都需要逐步学习和实践。通过合理的学习路径和有效的学习方法,可以逐步掌握这一领域的知识,成为一名成功...

    嵌入式linux开发入门.pdf

    嵌入式linux开发入门.pdf

    嵌入式Linux开发 入门

    本文将从入门角度出发,详细介绍嵌入式Linux开发的基本概念、开发环境搭建、常用工具以及核心技能。 一、嵌入式系统与Linux 嵌入式系统是指集成在设备中的专用计算机系统,它们通常具有特定的功能,如智能家居控制...

    Tinalinux系统简介与开发入门.pdf

    TinaLinux系统适合初次接触全志平台的用户进行开发入门。 首先,TinaLinux系统的核心理念是智能硬件。智能硬件是指通过软硬件结合的方式,对传统设备进行智能化改造的科技概念。这类设备通常具有连接互联网的能力,...

    嵌入式Linux开发入门.ppt

    嵌入式Linux开发是将Linux操作系统与特定硬件平台相结合,以实现特定功能的软件系统。在嵌入式领域,Linux因其开源、稳定、高效而受到广泛欢迎。本篇内容主要涵盖了嵌入式Linux开发的基本概念、开发模式、系统构成、...

    linux项目开发入门案例-linux项目开发入门案例-linux项目开发入门案例

    linux项目开发入门案例 linux项目开发入门案例 linux项目开发入门案例linux项目开发入门案例 linux项目开发入门案例 linux项目开发入门案例 linux项目开发入门案例

    Linux 开发入门案例教程.txt

    Linux 是一个开源的操作系统,于 1991 年由林纳斯·托瓦兹(Linus Torvalds)创建。Linux 是一个免费、可自由修改和分发的操作系统,广泛应用于服务器、个人计算机、智能手机等领域。

Global site tag (gtag.js) - Google Analytics