OpenWrt 大作业(详细)(四)
大作业
步骤一:编译openwrt X86 架构配置
1.1首先获取源代码:输入命令: git clone -b chaos_calmer git://github.com/openwrt/chaos_c
1.2 增加软件源:先进入/etc/apt目录下,编辑文件sources.list文件,把刚下载的文件sources.list.trusty的内容,拷贝到sources.list文件里。
(source.list.trusty文件的下载,请参考 http://mirrors.163.com/.help/ubuntu.html)
1.3 执行安装命令:
(下面的步骤可参考: https://wiki.openwrt.org/doc/howto/buildroot.exigence)
1.3.1 先输入命令,进行更新,更新Ubuntu软件仓库中软件包的索引文件: sudo apt-get update
1.3.2 然后输入命令,安装编译工具:
sudo apt-get install git-core build-essential libssl-dev libncurses5-dev unzip gawk zlib1g-dev
1.3.3 进入文件夹chaos_calmer(“cc”文件夹),为了使openwrt支持更多的软件,需要更新和安装其他源上的软件,输入命令:
cd chaos_calmer
./scripts/feeds update -a (更新最新的包定义)
./scripts/feeds install -a (安装所有的包)
1.3.4 编译配置,这里会检查所需要的编译工具是否齐备,根据CPU和路由器进行配置,配置后生成默认的编译配置文件.config:
make defconfig
1.3.5 选择X86架构
输入命令: make menuconfig(Target System选择X86)
1.3.6 输入 make命令就可以开始编译。(编译的时间会很久,大概需要3个小时)
make -j2 | V=s 或者 make
( make V=s 可以输出编译工程中的步的执行工作,出错后显示详细的错误信息)
( make -j2 使用2个线程进行编译,这样速度将大大加快)
( 编译完成后,在源码的bin目录下,openwrt-15.05-x86-generic-combined-ext4.img.gz,这就是我们想要的镜像文件)
1.4 利用生成的镜像建立虚拟机
1.4.1 首先将编译完成后的镜像文件包openwrt-x86-generic-combined-ext4.img.gz解压缩。
1.4.2 将解压后的.img文件复制到windows下并转换为virtual所支持的vdi文件,找到Virtual Box的安装路径,并且找到VBoxManager.exe应用程序,运行cmd命令提示符,输入命令: (VBoxManage.exe的路径) convertfromraw -format VDI (*.img映像文件的位置) (转换后vdi文件的位置)
例如:
输入命令: E:\VirtualBox\VirtualBox\VBoxManage.exe convertfromraw -format VDI f:\openwrt-15.05-x86-generic-combined-ext4.img d:\openwrt15.vdi
1.4.3 使用刚生成的openwrt15.vid,在virtual box建立OpenWrt。
1.4.5 建立后,选择设置,并设置两个网卡接口,接口类型分别为 网卡1:“网络地址转换(NAT)”,网卡2:“仅主机(Host-Only)网络”。
1.4.6 启动OpenWrt,通过opkg命令进行安装,配置:
opkg update
opkg install luci
/etc/init.d/uhttpd enable
/etc/init.d/uhttpd start (启动http服务,使用NAT端口转发)
/etc/init.d/firewall stop (关闭防火墙)
输入完命令 reboot 重启OpenWrt。
1.4.7 配置network
输入命令: vim /etc/config/network
然后重启网络服务,输入命令: /etc/init.d/network restart
1.4.8 检查是否拼通ping。
1.5 修改配置,加入helloworld模块
1.5.1 将helloworld工程拷贝到chaos_calmer/package目录。
目录helloworld/src/Makefile
目录helloworld/src/helloworld.c
目录helloworld/Makefile (helloworld模块的Makefile)
2 重新配置加入hellowrold模块:
2.1 回到chaos_calmer目录: cd /home/sl/chaos_calmer
2.2 输入命令 make menuconfig。
2.3 请选择 Utilities --->选项。
(为什么要选这个选项?因为在Makefile中提到:CATEGORY:=Utilities)
2.4 在下列选项中,找到helloworld选项,然后输入M或者输入空格,直到尖括号<>里面是M。(以模块的方式插入内核)
2.5 选择目标文件的系统,选择X86。(进入Target System选项,然后只勾选X86选项)
2.6 然后按下右键,选择<Exit>选项,然后再选择<Exit>选项,最后选择<Yes>选项,保存你的新的配置。
2.7 单独编译helloworld
输入命令: make package/helloworld/compile V=99
2.7 编译完后会生成helloworld_1.0_x86.ipk文件
这个文件在 chaos_calmer/bin/x86/packages/base目录下
2.8 在openwrt系统中安装vsftpd
输入命令:
opkg update
opkg install vsftpd
2.9 在windows的cmd命令提示符使用ftp把helloworld_1.0_x86.ipk安装文件上传到openwrt系统中
2.9.1 把helloworld_1.0_x86.ipk安装文件拷贝到C:\Users\Administrator目录下
2.9.2 打开cmd命令提示符,输入 ftp 192.168.56.2命令(openWrt的ip),然后输入用户名和密码
2.9.3 输入lcd命令,可查看目前的本地目录
目前的本地目录 C:\Users\Administrator。
2.9.4 输入dir命令,可查看服务器(openWrt系统)的当前目录
2.9.5 上传helloworld_1.0_x86.ipk安装文件到openWrt系统中
输入命令: put helloworld_1.0_x86.ipk
2.9.6 使用opkg命令安装helloworld_1.0_x86.ipk文件,并且使用which命令查看helloworld安装在哪里,最后输入helloworld即可看到输出“hello world!”
输入命令:
opkg install helloworld_1.0_x86.ipk
which helloworld
helloworld
3 安装UCI支持编译环境(UCI软件依赖libubox)
3.1 下载libubox库和uci库
libubox-2017-02-24-96305a3c.tar
uci-2016-07-04-e1bf4356.tar
(下载库参考: http://openwrt.bjbook.net/download/ )
3.1.1 把他们拷贝到Ubuntu虚拟机上。
3.1.2 先安装 apt-get install cmake。(cmake用于在脚本文件中配置)
3.1.3 编译libubox:(进入libubox-2017-02-24-96305a3c目录)
输入命令:
cd libubox-2017-02-24-96305a3c
cmake -D BUILD_LUA:BOOL=OFF -D BUILD_EXAMPLES:BOLL=OFF .
make
make install
3.1.4 安装uci软件:(进入uci-2016-07-04-e1bf4356目录)
输入命令:
cd uci-2016-07-04-e1bf4356
cmake -D BUILD_LUA:BOOL=OFF .
make
make install
ldconfig
4 修改HelloWorld项目( 使用UCI API 编程接口,从配置文件中读取内容并输出自己的名字和学号)
4.1 进入helloworld工程: cd helloworld
4.2 编辑helloworld目录下的Makefile: gedit Makefile
(helloworld模块的Makefile)
增加代码: DEPENDS:=+libuci
4.3 进入源码目录: cd src
gedit helloworld.c
其实就是对一个uci标准配置文件进行简单读取:读取helloworld配置文件,printf是一个配置节的名称,name是选项对。(配置文件由配置节(section)组成,配置节由多个”name/values”选项对组成。)
ptr.o->v.string
备注:
strdup(char *str):主要是拷贝字符串str的一个副本,由函数返回。
uci_alloc_context():动态申请一个uci上下文结构。
uci_free_context():释放一个uci上下文结构。
uci_lookup_ptr(ctx, &ptr, a, true):分割字符串并查找,提供查询功能,如果查到则通过获取ptr变量的值来获取配置的值。ptr,存放元素查询结果的结构体指针。str,待查找的uci元组字符串。extended,是否允许扩展语法查询
4.4 编写src目录下的Makefile: gedit Makefie
4.5 编译
4.5.1 首先输入命令: make package/helloworld/clean V=99
4.5.2 再使用命令 make package/helloworld/compile V=99,单独编译hellowrold工程:
4.5.3 最后使用命令cp /bin/x86/packages/base/helloworld_1.0_x84.ipk拷贝到windows下
4.5.4使用cmd上传新的helloworld_1.0_x86.ipk安装文件到OpenWrt中
首先 rm * (把之前的ipk文件删除掉)
4.5.5 先把之前的helloworld删掉了,并且把文件删除了。
opkg remove helloworld
4.5.6 安装helloworld_1.0_x86.ipk:
opkg install helloworld_1.0_x86.ipk
4.5.7 我们可以使用两个putty,两种途径打开/etc/config/network,将下图进行对比(从中可以发现异同)
vi /etc/config/network
uci show network
4.5.8 借用network的配置文件作为基础
cp networkd helloworld
vi helloworld
修改为:
config interface ‘printf’(配置节(section)的name是printf)
option name ‘ding wei ye’(选项对(option)的value是ding wei ye )
(配置文件由配置节(section)组成,配置节由多个”name/values”选项对组成)
4.5.9 最后效果图:
uci show helloworld
helloworld
OpenWrt 大作业(详细)(四)相关推荐
- 北京交通大学Python课程设计大作业(四)——典籍词频统计
北京交通大学Python课程设计大作业(四)--典籍词频统计 文章目录 北京交通大学Python课程设计大作业(四)--典籍词频统计 一.词频统计任务介绍 二.典籍词频统计python源代码如下 三. ...
- 人工智能与机器学习课程大作业(四、函数优化)
本文为人工智能与机器学习课程大作业第四部分(四.函数优化) 本文仅作学习参考使用! 其他章节跳转: 一.知识工程基础 二.函数逼近 三.模糊逻辑 四.函数优化 目 录 四.函数优化 4.1 函数可视化 ...
- DHU Python Curriculumly Learning【5】——大作业_key_by_TA
文章目录 写在前面 第一次大作业 第二次大作业 第三次大作业 第四次大作业 第五次大作业 第六次大作业 第七次大作业 第八次大作业 第九次大作业 第十次大作业 写在前面 助教写的参考答案,嗯~ o( ̄ ...
- DHU Python Curriculumly Learning【1】——大作业_own work
文章目录 写在前面 第一次大作业 第二次大作业 第三次大作业 第四次大作业 第五次大作业 第六次大作业 第七次大作业 第八次大作业 第九次大作业 第十次大作业 写在前面 本博客用于记录(或者说是用来备 ...
- _【超详细指北】python大作业!
[超详细指北]python大作业! 这是笔者最近写python大作业时写的一个实现过程笔记,也就是基本上可以说是本人从0开始上手的一个python练习.程序和本文档从 4.29-5.15日 总共历 ...
- kaggle经典题--“泰坦尼克号”--0.8275准确率--东北大学20级python大作业开源(附详细解法与全部代码以及实验报告)
kaggle经典题--"泰坦尼克号"--0.8275准确率--东北大学20级python大作业开源(附详细解法与全部代码以及实验报告) 前言 开发环境 一.导入包: 二.实验数据的 ...
- 软件工程大作业(完整详细)火车订票管理系统
目录 1.1课题背景及意义 1.2研究现状 1.2.1国内研究现状 1.2.2国外研究现状 2.1可行性研究过程 2.2项目在经济上的可行性 2.3项目在法律允许的可行性 3.1功能性需求 3.1.1 ...
- 移动开发技术第四次大作业
移动开发技术第四次大作业 --百度地图定位 开发步骤: 1.从百度开发者网站下载模块包并导入 2.创建一个新activity并设计与之绑定的界面: 3.编写location_activity.clas ...
- MATLAB第四次作业详细内容
MATLAB第四次作业详细内容 1. M文件的选择 选择 Image Processing Toolbox中的 Imnoise函数--图像噪声函数. 以下为该函数的函数名, F1行以及函数说明行. f ...
最新文章
- 剑指offer:面试题17. 打印从1到最大的n位数
- 【小妙招】【旧版】欢庆网自动搜索请柬console方法
- 【Codevs1322】单词矩阵
- 手把手教你搭建Linux开发环境(VMware+Ubuntu)(二)——安装VMwareTools并设置共享文件夹
- Redis的复制详解
- Css标题中图片居中,图片居中:任意图片在div里的上下垂直都居中!
- SAP Cloud for Customer的后台作业
- matlab knnsearchidx,matlab查找最临近搜索knnsearch
- HTML+CSS+JS实现 ❤️九宫格图片悬停遮罩层特效❤️
- JS-数组和函数冒泡排序递归函数
- java例程练习(多线程[线程同步问题])
- 实战详解WSUS2.0+SP1部署:WSUS2.0系列之一
- 【转】 Oracle中分区表的使用
- struts2教程_Struts 2教程– Struts2教程
- 牛客网–华为机试在线训练4:字符串分隔
- springboot下使用拦截器和过滤器
- tushare获取沪深300指数历史_tushare正确爬取 指数数据
- idea 找出TODO
- 腾达无线路由器连不上服务器,腾达无线路由器中继失败怎么办?
- (3.8)一个按键所能涉及的:内核按键标准驱动gpio-keys