大作业

步骤一:编译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 大作业(详细)(四)相关推荐

  1. 北京交通大学Python课程设计大作业(四)——典籍词频统计

    北京交通大学Python课程设计大作业(四)--典籍词频统计 文章目录 北京交通大学Python课程设计大作业(四)--典籍词频统计 一.词频统计任务介绍 二.典籍词频统计python源代码如下 三. ...

  2. 人工智能与机器学习课程大作业(四、函数优化)

    本文为人工智能与机器学习课程大作业第四部分(四.函数优化) 本文仅作学习参考使用! 其他章节跳转: 一.知识工程基础 二.函数逼近 三.模糊逻辑 四.函数优化 目 录 四.函数优化 4.1 函数可视化 ...

  3. DHU Python Curriculumly Learning【5】——大作业_key_by_TA

    文章目录 写在前面 第一次大作业 第二次大作业 第三次大作业 第四次大作业 第五次大作业 第六次大作业 第七次大作业 第八次大作业 第九次大作业 第十次大作业 写在前面 助教写的参考答案,嗯~ o( ̄ ...

  4. DHU Python Curriculumly Learning【1】——大作业_own work

    文章目录 写在前面 第一次大作业 第二次大作业 第三次大作业 第四次大作业 第五次大作业 第六次大作业 第七次大作业 第八次大作业 第九次大作业 第十次大作业 写在前面 本博客用于记录(或者说是用来备 ...

  5. _【超详细指北】python大作业!

    [超详细指北]python大作业! ​ 这是笔者最近写python大作业时写的一个实现过程笔记,也就是基本上可以说是本人从0开始上手的一个python练习.程序和本文档从 4.29-5.15日 总共历 ...

  6. kaggle经典题--“泰坦尼克号”--0.8275准确率--东北大学20级python大作业开源(附详细解法与全部代码以及实验报告)

    kaggle经典题--"泰坦尼克号"--0.8275准确率--东北大学20级python大作业开源(附详细解法与全部代码以及实验报告) 前言 开发环境 一.导入包: 二.实验数据的 ...

  7. 软件工程大作业(完整详细)火车订票管理系统

    目录 1.1课题背景及意义 1.2研究现状 1.2.1国内研究现状 1.2.2国外研究现状 2.1可行性研究过程 2.2项目在经济上的可行性 2.3项目在法律允许的可行性 3.1功能性需求 3.1.1 ...

  8. 移动开发技术第四次大作业

    移动开发技术第四次大作业 --百度地图定位 开发步骤: 1.从百度开发者网站下载模块包并导入 2.创建一个新activity并设计与之绑定的界面: 3.编写location_activity.clas ...

  9. MATLAB第四次作业详细内容

    MATLAB第四次作业详细内容 1. M文件的选择 选择 Image Processing Toolbox中的 Imnoise函数--图像噪声函数. 以下为该函数的函数名, F1行以及函数说明行. f ...

最新文章

  1. 剑指offer:面试题17. 打印从1到最大的n位数
  2. 【小妙招】【旧版】欢庆网自动搜索请柬console方法
  3. 【Codevs1322】单词矩阵
  4. 手把手教你搭建Linux开发环境(VMware+Ubuntu)(二)——安装VMwareTools并设置共享文件夹
  5. Redis的复制详解
  6. Css标题中图片居中,图片居中:任意图片在div里的上下垂直都居中!
  7. SAP Cloud for Customer的后台作业
  8. matlab knnsearchidx,matlab查找最临近搜索knnsearch
  9. HTML+CSS+JS实现 ❤️九宫格图片悬停遮罩层特效❤️
  10. JS-数组和函数冒泡排序递归函数
  11. java例程练习(多线程[线程同步问题])
  12. 实战详解WSUS2.0+SP1部署:WSUS2.0系列之一
  13. 【转】 Oracle中分区表的使用
  14. struts2教程_Struts 2教程– Struts2教程
  15. 牛客网–华为机试在线训练4:字符串分隔
  16. springboot下使用拦截器和过滤器
  17. tushare获取沪深300指数历史_tushare正确爬取 指数数据
  18. idea 找出TODO
  19. 腾达无线路由器连不上服务器,腾达无线路由器中继失败怎么办?
  20. (3.8)一个按键所能涉及的:内核按键标准驱动gpio-keys

热门文章

  1. 如何用Word做流程图?
  2. 西门子WinCC PS7 V9.0安装与破解教程,如有需要联系
  3. 【Django】—QQ登录
  4. LINUX 下移动conda文件执行conda命令报错处理
  5. 基于小波变换的数字水印技术研究
  6. BNO055数据读取之二:USART
  7. Oracle数据库学习之事务,去重,空值处理,基本操作符(五)
  8. Janus官方DEMO介绍
  9. ORACLE基础知识(2--5)章节
  10. 欧莱雅将拨款1.5亿欧元应对社会环境问题;浪潮闪存存储出货量增速跃居中国第一 | 美通企业日报...