最近跑了一个操作系统,系统是跑起来了,基本命令都有了,但是ifconfig的时候发现,并没有显示,ifconfig -a的时候发现有显示,但是并没有没有自动分配IP地址,
分析:ifconfig没有显示command not found,说明不是命令本身出了问题,要想有ip地址,必须有网卡,网卡必须要有驱动
添加驱动:
vim /arch/arm/mach-s3c2440/mach-smdk2440.c
#include <linux/dm9000.h>
........
/*Add DM9000 ethernet drivers*/
#define DM9000_BASE (S3C2410_CS4 + 0x300)
static struct resource s3c_dm9000_resource[] = {
[0] = {
.start = DM9000_BASE,
.end = DM9000_BASE + 3,
.flags = IORESOURCE_MEM
},
[1] = {
.start = DM9000_BASE + 4,
.end = DM9000_BASE + 7,
.flags = IORESOURCE_MEM
},
[2] = {
.start = IRQ_EINT7,
.end = IRQ_EINT7,
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
}
};
/*
* The DM9000 has no eeprom, and it's MAC address is set by
* the bootloader before starting the kernel.
*/
static struct dm9000_plat_data s3c_dm9000_pdata = {
.flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
};
static struct platform_device s3c_device_dm9000 = {
.name = "dm9000",
.id = -1,
.num_resources = ARRAY_SIZE(s3c_dm9000_resource),
.resource = s3c_dm9000_resource,
.dev = {
.platform_data = &s3c_dm9000_pdata,
},
};
..........
static struct platform_device *smdk2440_devices[] __initdata = {
&s3c_device_ohci,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
+ &s3c_device_dm9000,/*添加dm9000网卡支持*/
};
vim include/linux/dm9000.h
添加头文件
#include <linux/io.h>
这样驱动就添加好了
但是编译烧录之后ifconfig -a
并没有分配到ip地址,于是就去检查我的分配地址的脚本S10_network
1 #!/bin/bash
2 ifconfig eth0 192.168.1.250 netmask 255.255.255.0 up
刚开始我是这样编写的,用的是bash的脚本解释器,之后发现好像并不能
自启动初始化ip,
~ >: ifconfig -a
eth0 Link encap:Ethernet HWaddr 08:00:3E:26:0A:5B
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:51 Base address:0x2300
lo Link encap:Local Loopback
LOOPBACK MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
然后改成了!/bin/sh就可以了,
~ >: ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:3E:26:0A:5B
inet addr:192.168.1.250 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:19 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1912 (1.8 KiB) TX bytes:0 (0.0 B)
Interrupt:51 Base address:0x2300
sh是bash的软链接,比较快的执行但是兼容性不好。