原创:linux-2.6.30.24 移植…

来源:互联网 发布:windows 文件夹 密码 编辑:程序博客网 时间:2024/06/05 05:18
Freeing init memory: 132K
/etc/rc.d/init.d/httpd: line 15: /sbin/boa: Permissiondenied
ifconfig: SIOCGIFFLAGS: No such device
ifconfig: SIOCSIFHWADDR: No such device
ifconfig: SIOCSIFADDR: No such device
route: SIOCADDRT: Network is unreachable

网卡没有移植好,sbin/boa 权限设置错误
网卡移植参考tq出厂的linux2.6.30.4,在mach-s3c2440.c中添加dm9000 结构
static struct resource s3c_dm9k_resource[] = {
[0] = {
.start = S3C2410_CS4,
.end = S3C2410_CS4 + 3,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = S3C2410_CS4 + 4,
.end = S3C2410_CS4 + 4 + 3,
.flags = IORESOURCE_MEM,
},
[2] = {
.start = IRQ_EINT7,
.end = IRQ_EINT7,
.flags = IORESOURCE_IRQ | IRQF_TRIGGER_RISING,
}

};

static struct dm9000_plat_data s3c_dm9k_platdata = {
.flags = DM9000_PLATF_16BITONLY,
};

struct platform_device s3c_device_dm9000 = {
.name = "dm9000",
.id = 0,
.num_resources = ARRAY_SIZE(s3c_dm9k_resource),
.resource = s3c_dm9k_resource,
.dev = {
.platform_data = &s3c_dm9k_platdata,
}
};
及在static struct platform_device *smdk2440_devices[] __initdata结构中添加dm9000设备 


2.can't open /dev/ttySAC0: No such file or director
文件系统中dev下没有ttyS0;
1. 修改drivers/tty/serial/samsung.c中.dev_name="tq2440_serial"
2. 文件系统中/lib一定要完整
3. 文件系统中,/etc/inittab 中tq2440_serial0::askfirst:-/bin/sh
4. 文件系统中, /etc/init.d/rcS一定要完整,至少要有以下内容
mount -a 
mdev -s


按照上面问题仍然在!!!

参照
问题在于tq2440_serial0关键字找不到。

解决方法:在文件系统中,/etc/inittab 中tq2440_serial0::askfirst:-/bin/sh改为console::askfirst:-/bin/sh就行了。
按照上面问题仍然在!!!
can't open /dev/console: No such file or directory

参照:主机:ubuntu 8.10 x86_64
编译了busybox之后,就开始考虑制作一个最小的根文件系统了。
还是从NFS启动。
把编译busybox生成的二进制文件放在NFS目录,有bin sbin usr 和linuxrc
创建etc 目录,在etc目录新建inittab文件
# /etc/inittab
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
新建fstab文件
#/etc/fstab
# device mount-point type options dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0 
在etc目录下新建子目录init.d及init.d目录下rcS文件
mkdir init.d
cd ninit.d
vim rcS内容为
#!/bin/sh
ifconfig eth0 192.168.0.100
mount -a
保存,退出。
加上可执行属性
sudo chmod +x 
==========================
在NFS目录下创建其它目录
mkdir dev tmp proc 
=======================
在dev目录下创建必须设备文件
sudo mknod console c 5 1
sudo mknod ttyS0 c 204 64
sudo mknod null c 1 3 
=====================
启动开发板,
看到
Please press Enter to activate thisconsole. 
回车,即可进入shell控制台,
最小系统启动成功。





./compal/CodeSourcery/Sourcery_G++_Lite/bin/../arm-none-linux-gnueabi/libc/usr/include/linux/netfilter.h:56:17:error: field 'in' has incomplete type

    .../CodeSourcery/Sourcery_G++_Lite/bin/../arm-none-linux-gnueabi/libc/usr/include/linux/netfilter.h:57:18:error: field 'in6' has incomplete type

    ipsvd/tcpudp.c: In function'tcpudpsvd_main':

    ipsvd/tcpudp.c:314:10: warning: ignoring returnvalue of 'write', declared with attribute warn_unused_result

    make[1]: *** [ipsvd/tcpudp.o] 错误 1

     make:*** [ipsvd] 错误 2

    看到说在我们下载的交叉编译库中有个头文件中的 in 及 in6类型不对,解决的办法就是:

     在.../arm-none-linux-gnueabi/libc/usr/include/linux/netfilter.h的开头
添加缺少的头文件:
    #include





例子:
cp -i file1 file2            (将文档 file1 复制成 file2 .–i为提示确认。)
cp file1 dir1               将文档 file1复制到目录 dir1 下,文件名仍为 file1.
cp /tmp/file1 .            将目录 /tmp 下的文档file1复制到现行目录下,档名仍为 file1.
cp /tmp/file1 file2        将目录 /tmp 下的文档file1现行目录下,档名为file2
cp -r dir1 dir2             (recursive copy) 复制整个目录.若目录dir2 不存在,则将目录dir1,及其所有文档和子目录,复制到目录 dir2下,新目录名称为dir1.若目录dir2不存在,则将dir1,及其所有文档和子目录,复制为目录 dir2.



busybox 
make defconfig
make menuconfig
make
make install
原创粉丝点击