嵌入式linux修改IP地址无法保存的问题,请教

时间:2022-11-05 20:18:18
ARM9260开发板,linux系统
1、
我用ifconfig修改了ip,系统重启之后又恢复到原来的ip了
网上搜了一下,发现ifconfig只能临时修改ip

2、
进入U-boot,使用命令setenv ipaddr命令修改ip,然后saveenv
重启之后也恢复到原来的ip了

再上网搜,基本出现比较一致的解决方法,就是vi修改配置文件
大概有一下这些文件,修改哪个都可以
  /etc/sysconfig/networking/profiles/default/ifcfg-*   
  /etc/sysconfig/networking/profiles/default/*   
  /etc/sysconfig/networking/default/ifcfg-*   
  /etc/sysconfig/networking/default/*   
  /etc/sysconfig/network-scripts/ifcfg-*   
  /etc/sysconfig/network-scripts/* 

但问题是在嵌入式linux里这些个文件统统的不存在(或者是我没找到?)
还望大虾们多多指点
 

10 个解决方案

#1


顺便再问个问题
我在pc上开了tftp server
在板子linux上需要设置tftp server的ip
请问root登陆之后怎么操作?

U-boot下可以用setenv serverip命令来修改,但和上面问题一样,重启之后就没了

我root登录使用
ifconfig eth0 serverip 192.……
结果修改的是IP地址,囧

#2


这里没有做嵌入式linux的吗?
难道大家都没有碰到过这种问题……

#3


你的uboot里面允许保存环境变量了吗?没有的话就要开启
如果的嵌入式里没有文件系统,那么ifconfig你是在那里执行的?
你搜索的那些ip配置文件并不是都需要,只是FHS里定义的
即使在发行版linux中直接用ifconfig也保存不了ip地址,必须有相应的程式来完成

#4


一般情况下嵌入式的ip设置都是暂时的,即设置后就马上使用,我也没有尝试用
你要求那样来做过,但是的确有一个默认的设置,理论上可以得到实现!

#5


需要修改你的根文件系统里面的网络配置文件。一般嵌入式系统启动后可以在启动脚本里面使用ifconfig命令配置IP地址,
这个可以在很多地方配置,比如像我的就在在/etc/rc.d/init.d/local 脚本里面,有些更简单的可以/etc/rc.d/rc.sysinit。
你也可以把IP地址保存在flash的mtd分区上面,然后在系统启动的时候读取IP地址再用ifconfig命令设置。

u-boot里面一般在flash上有个存储环境变量值的空间,你如果保持不了可能是在u-boot的代码里面没有设置好这段空间吧.

#6


首先需要明确一个问题,U-boot下的ip和进入Linux后的ip并不一定是相同的,打个不是很恰当的比方,这就好比你的电脑上装了双系统,一个windows一个Linux,但是两者的ip设置可能并不一样。通过setenv serverip xxx.xxx.xxx.xxx setenv ipaddr xxx.xxx.xxx.xxx 然后save之后,设置的是uboot的ip,可以用于tftp。这个ip在进入Linux后就不会再起作用了。进入系统后可以通过ifconfig修改Linux下的ip,但是这时修改的只是运行在内存里的系统,重启后会将flash中内核重新读到内存中去,所以要想永久改变Linux的ip需要重新编译内核并烧写进flash。

#7


不知道你是不是用的busybox作的系统 如果是的话 它的配置文件是/etc/network/interfaces

#8


学习 

#9


我修改了ramdisk,把etc/init.d/hostname.sh里面的ip信息改成我需要的ip
然后重新烧到板子上就可以了
详见
http://blog.csdn.net/Comgarden/archive/2008/12/16/3528673.aspx
多谢各位支持!

引用 5 楼 leeyiqun 的回复:
需要修改你的根文件系统里面的网络配置文件。一般嵌入式系统启动后可以在启动脚本里面使用ifconfig命令配置IP地址, 
这个可以在很多地方配置,比如像我的就在在/etc/rc.d/init.d/local 脚本里面,有些更简单的可以/etc/rc.d/rc.sysinit。 
你也可以把IP地址保存在flash的mtd分区上面,然后在系统启动的时候读取IP地址再用ifconfig命令设置。 

u-boot里面一般在flash上有个存储环境变量值的空间,你如果保持不了可能是在u-b…

#10


浅显易懂,多谢!

引用 6 楼 outblue 的回复:
首先需要明确一个问题,U-boot下的ip和进入Linux后的ip并不一定是相同的,打个不是很恰当的比方,这就好比你的电脑上装了双系统,一个windows一个Linux,但是两者的ip设置可能并不一样。通过setenv serverip xxx.xxx.xxx.xxx setenv ipaddr xxx.xxx.xxx.xxx 然后save之后,设置的是uboot的ip,可以用于tftp。这个ip在进入Linux后就不会再起作用了。进入系统后可以通过ifconfig修改Linux下的ip,但是这时修改的只是运行在内存里的…

#1


顺便再问个问题
我在pc上开了tftp server
在板子linux上需要设置tftp server的ip
请问root登陆之后怎么操作?

U-boot下可以用setenv serverip命令来修改,但和上面问题一样,重启之后就没了

我root登录使用
ifconfig eth0 serverip 192.……
结果修改的是IP地址,囧

#2


这里没有做嵌入式linux的吗?
难道大家都没有碰到过这种问题……

#3


你的uboot里面允许保存环境变量了吗?没有的话就要开启
如果的嵌入式里没有文件系统,那么ifconfig你是在那里执行的?
你搜索的那些ip配置文件并不是都需要,只是FHS里定义的
即使在发行版linux中直接用ifconfig也保存不了ip地址,必须有相应的程式来完成

#4


一般情况下嵌入式的ip设置都是暂时的,即设置后就马上使用,我也没有尝试用
你要求那样来做过,但是的确有一个默认的设置,理论上可以得到实现!

#5


需要修改你的根文件系统里面的网络配置文件。一般嵌入式系统启动后可以在启动脚本里面使用ifconfig命令配置IP地址,
这个可以在很多地方配置,比如像我的就在在/etc/rc.d/init.d/local 脚本里面,有些更简单的可以/etc/rc.d/rc.sysinit。
你也可以把IP地址保存在flash的mtd分区上面,然后在系统启动的时候读取IP地址再用ifconfig命令设置。

u-boot里面一般在flash上有个存储环境变量值的空间,你如果保持不了可能是在u-boot的代码里面没有设置好这段空间吧.

#6


首先需要明确一个问题,U-boot下的ip和进入Linux后的ip并不一定是相同的,打个不是很恰当的比方,这就好比你的电脑上装了双系统,一个windows一个Linux,但是两者的ip设置可能并不一样。通过setenv serverip xxx.xxx.xxx.xxx setenv ipaddr xxx.xxx.xxx.xxx 然后save之后,设置的是uboot的ip,可以用于tftp。这个ip在进入Linux后就不会再起作用了。进入系统后可以通过ifconfig修改Linux下的ip,但是这时修改的只是运行在内存里的系统,重启后会将flash中内核重新读到内存中去,所以要想永久改变Linux的ip需要重新编译内核并烧写进flash。

#7


不知道你是不是用的busybox作的系统 如果是的话 它的配置文件是/etc/network/interfaces

#8


学习 

#9


我修改了ramdisk,把etc/init.d/hostname.sh里面的ip信息改成我需要的ip
然后重新烧到板子上就可以了
详见
http://blog.csdn.net/Comgarden/archive/2008/12/16/3528673.aspx
多谢各位支持!

引用 5 楼 leeyiqun 的回复:
需要修改你的根文件系统里面的网络配置文件。一般嵌入式系统启动后可以在启动脚本里面使用ifconfig命令配置IP地址, 
这个可以在很多地方配置,比如像我的就在在/etc/rc.d/init.d/local 脚本里面,有些更简单的可以/etc/rc.d/rc.sysinit。 
你也可以把IP地址保存在flash的mtd分区上面,然后在系统启动的时候读取IP地址再用ifconfig命令设置。 

u-boot里面一般在flash上有个存储环境变量值的空间,你如果保持不了可能是在u-b…

#10


浅显易懂,多谢!

引用 6 楼 outblue 的回复:
首先需要明确一个问题,U-boot下的ip和进入Linux后的ip并不一定是相同的,打个不是很恰当的比方,这就好比你的电脑上装了双系统,一个windows一个Linux,但是两者的ip设置可能并不一样。通过setenv serverip xxx.xxx.xxx.xxx setenv ipaddr xxx.xxx.xxx.xxx 然后save之后,设置的是uboot的ip,可以用于tftp。这个ip在进入Linux后就不会再起作用了。进入系统后可以通过ifconfig修改Linux下的ip,但是这时修改的只是运行在内存里的…