如何从NFS启动Linux及原理

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

搞嵌入式的,不懂NFS,那绝对是一个悲剧。如果你连调试一个普通的Linux C程序,都要经历“编译->打包 -> 烧写 -> 重启”这些过程,那么你离正式产品不是一天比一天远,就是产品没出,你已经厌倦了这个工作。笔者就曾经看到一个娃,在一台内存只有512MB的机器上,装 了一个VMWare虚拟机,跑了一个Red Hat 9来编译调试他的ARM Linux程序——我问他为什么不用NFS。他答曰,不知为何物——于是决定在这分享分享快乐喜悦的调试方法。

Linux 启动过程回顾

有人要多嘴了,我前面一大票文章都讲了这个过程,在这里又要重复。其实了解了Linux的启动过程,再理解别的东西,就不难了,比如Live CD,装在U盘上的Linux等等。

Linux 的工作原理

废话少说,先上图。


这很简单吧。电脑就是来运行程序的,操作系统就是(不仅仅是)负责让多个程序在一个CPU上跑的。Linux也不例外,也是操作系统内核启动完成 后,自然而然就轮到操作系统为我们自己的程序服务的时候了。

这是它的基本原理。但是我们需要为它考虑一些细节,第一个,也是本文最核心的地方,操作系统到哪里寻找程序运行

首先我们要明确我们所指的程序,是放在有目录级结构的文件系统里,为了寻找到所需要操作系统来运行的程序,我们必须告诉它,文件在哪个文件系统。一 般来说,PC机的文件就存储在硬盘上;对于Live CD而言,文件系统就藏在光盘上面。也就是说,只要操作系统能找到并正确地认识了文件系统,就可以执行里面的程序了!

设置目标机器上的NFS启动

看完了第一节,明白启动的过程了吗? 简单地说,就是内核加载内核找到一个文件系统内 核执行文件系统里的一个程序 。无论是从NFS启动,还是从硬盘启动,都是上述过程。只是NFS启动,其文件系统是放在网络上的。只要我 们告诉内核,具体放在什么地方,在网络的另一端我们设置好共享,自然可以从NFS启动。

让内核识别NFS并可从NFS启动

编译内核

在内核源代码目录树下,配置内核:

$make menuconfig

依次进入 File Systems -> Network File System中选择 NFS client support 以及 Root file system on NFS。如果找不到Root file system on NFS 选项,要打开第一级菜单下的Networking support -> Networking options -> TCP/IP networking -> IP: kernel level autoconfiguration。如果NFS要使用DHCP,还得选上 IP: DHCP support。

保存配置并重新编译即可。

配置内核参数

进入ARM开发板的设置 linux_cmd_line的地方(mini2440则为开机按 s,输入linux_cmd_line,并带着引号输入参数),或者进入PC的GRUB,设置类似参数

root=/dev/nfs rw nfsroot=192.168.1.1:/linux ip=192.168.1.5:::255.255.255.0:linux::off

该配置为静态IP设置。各参数意义如下:
root=/dev/nfs :指定根文件系统为 /dev/nfs,即NFS 。这与/dev这个目录并没有什么关系,在此仅为一个名字。
rw :根文件系统挂载为可读写。还可以有 ro 即只读的选项。
nfsroot=192.168.1.1:/linux :指明挂载哪一个NFS上的哪一个目录。这里指的是挂载IP 为192.168.1.1的电脑上导出的/linux目录。
ip=192.168.1.5:::255.255.255.0:linux::off :设置本机的IP。此举是为了 连接刚才设置的IP。这里是一个静态的配置,配置的格式为 ip=本机的IP地址::网关地址:网络掩码:本机的主机名:网络接口名:off 。一般情况下网关、网络接口名都不需要设置。如果是DHCP获取IP,那很简单,直接 ip=dhcp 即可。

设置NFS服务器

Ubuntu下看链接:http://blog.mcuol.com/User/xiaoxiaopig/article/37324_1.htm

NFS服务器可以是任意操作系统,只要能提供NFS服务即可(WINDOWS可以使用 WSU —— Windows Services for Unix来实现,具体请参考接下来本站要发表的文章)。在这里以Fedora为例,希望别的发行版的用户触类旁通。

对于Fedora来说,有图形界面的工具进行设置,在管理-》服务器设置-》NFS中添加一个共享即可。
更通用的作法,就是修改 /etc/exports文件,之后再启动NFS服务器。

/etc/exports文件格式如下

导出的文件夹 导出的网段(对该导出的网段的选项)

所谓导出的网段就是只向哪个网段导出,保证安全性。一个例子为:

/linux 192.168.1.0/24(rw,sync,no_root_squash)

就是将 /linux 导出到网段为192.168.1.0,子网掩码为255.255.255.0 (即24)的网络。其中可用的选项为(翻译自man文档):

secure和insecure : secure选项下,所有连接的端口均小于1024。默认打开。
rw和ro : Read/Write和Read Only
async和sync async将使用异步数据存取,数据并非马上写入服务器的。sync则相反。使用async需要注意服务器不能随意不正常地关闭,否则可能导致数据丢失。
no_wdelay :不使用延迟写入。NFS服务器会将写入写入请求缓冲起来,可以提高性能。如果async已经打开那么该选项无效。
no_subtree_check :不进行子树检查(使用该选项易引起安全问题)
root_squash和no_root_squash、all_squash :root_squash选项使得客户端以root权限访问 文件系统时,转换为服务器端的匿名用户。这选项打开一定要设置好服务器的权限。

之后再重新启动NFS服务。Fedora下使用 /etc/init.d/nfs restart
使用 exports查看导出的文件。

常见应用层服务工作原理Linux系统 一、Linux系统启动过程 1.加载BIOS 计算机电源加电质检,首先加载基本输入输出系统(Basic Input Output System,BIOS),BIOS中包含硬件CPU、内存、硬盘等相关信息,包含设备启动顺序信息、硬盘信息、内存信息、时钟信息、即插即用(Plug-and-Play,PNP)特性等。加载完BIOS信息,计算机将根据顺序进行启动。 2.读取MBR 读取完BIOS信息,计算机将会查找BIOS所指定的硬盘MBR引导扇区,将其内容复制到0x7c0... 阅读详情

相关推荐

LinuxNFS服务器的搭建与配置

这是因为当服务器启动 NFS 时会随机取用数个埠口,并主动的向 RPC 注册,因此 RPC 可以知道每个埠口对应的 NFS 功能,然后 RPC 又是固定使用 port 111 来监听客户端的需求并回报客户端正确的埠口, 所以当然可以让 NFS启动更为轻松愉快了!因为 NFS 支持的功能相当的多,而不同的功能都会使用不同的程序来启动, 每启动一个功能就会启用一些端口来传输数据,因此, NFS 的功能所对应的端口才没有固定住, 而是随机取用一些未被使用的小于 1024 的埠口来作为传输之用。

qq_34285319的博客 1261

linux启动nfs的方法,nfs启动Linux的具体操作

nfs启动Linux的方法大家是否了解呢?我们都知道NFS的应用非常广泛,进来对于Linux方面的这类应用也被关注很多。Linux发展快速,很多人开始学习。学习Linux时,你可能会遇到Linux系统问题,这里将介绍用qemu通过nfs启动Linux问题的解决方法,在这里拿出来和大家分享一下。希望你能学会qemu通过nfs启动Linux的方法。假设开发机安装的是Fedora 91.设置网络-使qe...

weixin_29344197的博客 3412

squash文件系统打包和解包

squash 文件系统linux系统内编译成功了, 能生成打包和解包工具, 分享文件系统的属性

linux实现NFS启动,LinuxNFS的搭建

文章目录[隐藏]一、环境搭建1. 编辑配置文件/etc/exports2. 修改固定端口二、搭建NFS1. 创建nfs共享目录2. 启动nfs3. 在客服端查询4. 重启nfs5. 客服端查询6. 挂载7. 检查三、nfs其他配置1. 其他报错2. 按需自动挂载(间接映射)3. 开机挂载4. 卸载nfs挂载NFS是Network File System的简称,即网络文件系统NFS系统间进行文件...

weixin_39634508的博客 508

通过nfs启动linux

1:uboot烧写到SD卡 烧写工具 imxdownload chmod 777 imxdownload //给imxdownload可执行权限 ls /dev/sd* //查看SD卡设备 ./imxdownload u-boot.bin /dev/sdx //sdx为SD卡 2:设置uboot网络环境变量 setenv ipaddr 192.168.1.50设置开发板ip地址 setenv ethaddr 00:04:9f:04:d2:35 开发...

guanyq1的博客 560

Linux+nfs配置开机启动,Linux系统NFS服务器的配置方法

一、NFS服务器的安装检查linux系统中是否安装了nfs-utils和portmap两个软件包(RHEL4系统默认已经安装了这两个软件包)命令#rpm –q nfs-utils portmap二、查看NFS服务器是否启动命令#service nfs starus#service portmap status三、如果服务器没有启动,则开启服务(默认服务下nfs没有完全开启)命令#service n...

weixin_36486007的博客 3087

Linux 主机NFS 启动以及相关配置

  By:Ailson Jack Date:2014.05.08 22:30             我的个人博客:www.only2fire.com,里面的其他内容可能有你需要的哦 。       这篇文章在我博客的网址是:http://www.only2fire.com/archives/5.html,排版更好,不信的话,打开看看吧 ^_^。好了,如果不愿去我的博客看,那么下面就是正...

Ailson Jack的专栏 1326

转载_如何从NFS启动Linux原理

搞嵌入式的,不懂NFS,那绝对是一个悲剧。如果你连调试一个普通的Linux C程序,都要经历“编译->打包 -> 烧写 -> 重启”这些过程,那么你离正式产品不是一天比一天远,就是产品没出,你已经厌倦了这个工作。笔者就曾经看到一个娃,在一台内存只有512MB的机器上,装 了一个VMWare虚拟机,跑了一个Red Hat 9来编译调试他的ARM Linux程序——我问他为什么不用NFS。他答曰,不知

williamwanglei的专栏 744

nfsd linux是什么进程,如何从NFS启动Linux原理

搞嵌入式的,不懂NFS,那绝对是一个悲剧。如果你连调试一个普通的LinuxC程序,都要经历“编译->打包 -> 烧写->重启”这些过程,那么你离正式产品不是一天比一天远,就是产品没出,你已经厌倦了这个工作。笔者就曾经看到一个娃,在一台内存只有512MB的机器上,装了一个VMWare虚拟机,跑了一个Red Hat 9来编译调试他的ARMLinux程序——我问他为什么不用NFS。他答...

weixin_34070026的博客 1480

Linux+nfs配置开机启动,linux NFS配置:NFS开机自动启用及其原理

这节我们讲NFS开机自动启动及其原理NFS服务器端已经配置好了,但机器重启以后我们还要重新开启NFS服务。为了不这么麻烦,我们要让NFS和portmap服务在开机时自动启动,这样就会避免出现mount clntudp_create: RPC: Program not registered这样的错误了。让脚本在开机时自动运行需要对linux系统启动过程有所了解。我们知道系统加载内核以后运行的第一个...

weixin_30475939的博客 1409

Linux运维系列总结-Linux系统启动过程、WEB工作原理、DHCP工作原理、DNS解析原理NFS网络文件系统、FTP文件传输协议、PXE+KICKSTART自动安装系统

1.Linux系统启动过程 1.计算机通电,载入ROM芯片的BIOS程序,BIOS程序读取CMOS

weixin_43726831的博客 1237

Linux启动过程+web工作原理+DHCP+dns+nfs+ftp+pxe

1、 系统启动过程 BIOS加电自检 加载主引导加载程序(MBR) 加载次引导加载程序(GRUB) Linux内核映像 init进程 X86计算机在启动后首先进行POST加电自检,检测计算机的硬件设备。自检完成后读取CMOS中的BIOS查找可启动设备,加载主引导目录MBR,加载GRUB,然后加载内核,初始化initrd,内核会进行探测硬件->加载驱动->挂载根文件系统->切换至根文件系统(rootfs)–>运行/sbin/init完成系统初始化。 2、 web工作原理 Web服务

qq_42263694的博客 390

linuxnfs启动后怎么执行程序,从NFS启动Linux

Linux 启动过程回顾有人要多嘴了,我前面一大票文章都讲了这个过程,在这里又要重复。其实了解了Linux启动过程,再理解别的东西,就不难了,比如Live CD,装在U盘上的Linux等等。Linux 的工作原理废话少说,先上图。 这很简单吧。电脑就是来运行程序的,操作系统就是(不仅仅是)负责让多个程序在一个CPU上跑的。Linux也不例外,也是操作系统内核启动完成后,自然而然就轮到操作系统为我...

weixin_31119221的博客 326

Linux系统启动过程及常用服务工作原理

1.Linux系统启动过程 1.计算机通电后会载入ROM芯片中的BIOS程序,BIOS程序会读取CMOS中的内容识别硬件配置,并对其自检和初始化,并获得一个可开机的设备 2.读取并执行第一个开机设备内MBR的boot loader(grub2等) 3.依据boot loader的设定载入kernel,kernel会开始检测硬件与载入驱动程序 4.在应将驱动成功后,kernel会主动呼叫systemd程序,并以default target流程开机 systemd执行sysint.target初始化系统及ba

qq_43546813的博客 612

Linux复习(web,dhcp,dns,nfs,ftp,pxe+kickstart)

Linux系统启动过程可以分为5个阶段: 1、内核的引导。 2、运行 init。 3、系统初始化。 4、建立终端 。 5、用户登录系统。 内核引导 当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。 操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。 运行init init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。 init 程序首先是需要读取配置文件 /etc/inittab。 系统

weixin_45522644的博客 388

PXE、NFS启动LINUX的试验

PXE、NFS启动Linux的试验1.试验目的        熟悉Linux下通过PXE、NFS启动原理2.试验环境     浪潮NF420服务器2台,配置如下:Linux操作系统为EL-3.0,2块网卡(只有1块有网线),内核版本号linux-2.4.21-15   使用的软件包:tftp-hpa-0.40.tar.gz(证明linux9自带的可以用),内核linux-2.4.28 3.试验原

wldandan的专栏 4152

Linux运维基础知识(部分服务的工作原理

1、系统启动过程     通电后加载BIOS程序,该程序会读取CMOS中的内容来识别计算机的硬件配置,并对其进行自检和初始化,获得第一个可开机的设备。     计算机读取并执行第一个可开机设备MBR的boot loader(grub2等)。     根据boot loader的设置载入内核,内核程序开始检测硬件与载入的驱动程序。     硬件驱动程序

携秋水揽星河的博客 802

linux服务器基础知识及工作原理汇总

服务器基础    服务器的种类        1、按网络规模划分    按网络规模划分,服务器分为工作组级服务器、部门级服务器、企业级服务器        2、按架构划分    按照服务器的结构,可以分为CISC(复杂指令集)架构的服务器和RISC(精简指令集)架构的服务器 &nb

Han_V_Qin的博客 2749

Linux服务基础---七种服务的工作原理

1、 Linux系统启动过程 一般分为四个阶段: BIOS启动引导阶段; GRUB启动引导阶段; 内核阶段; init初始化阶段 通电—>开机自检(BIOS)—>MBR引导—>GRUB菜单—>加载内核kernel—>运行init进程(系统里其他所以进程的父进程)—>读取/etc/inittab配置文件—>执行/etc/rc.d/rc.sysinit脚本(系统初始化脚本,设置主机名和IP地址等)—>执行/etc/rc.d/rc脚本(根据系统的运行级别,

qq_43166888的博客 563
上一篇: Android在TQ2440开发板上的移植
下一篇: 虚拟机ubuntu10.04挂载nfs
tomi2010
博客等级 码龄16年 0粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值