前言
最近在拜读宋宝华老师的《Linux设备驱动开发详解-基于最新的linux4.0内核》,但是他只提供了windows下的虚拟机,因此mac用户就有点难受了。昨天自己鼓捣了一下,完成了mac上整个环境的搭建,今天在windows上重新搭建一下环境,并记录于此
mac上可以用parallel安装虚拟机,过程和windows这边差不多
在ubuntu上安装qemu的好处是,可以很方便的调试linux内核,不需要额外购买开发板,韦东山老师最近也在搞qemu这个东西,也可以看看他这边提供的资料
http://wiki.100ask.org/Qemu
ubuntu镜像获取
http://mirrors.aliyun.com/ubuntu-releases/
在阿里云镜像中,下载14.04的最新版本14.04.6(14.04版本发布以后,也会有一些补丁,所以有了第二个小数点)
面对如此多的镜像文件该如何选择呢,首先看最上面的MD5SUM和SHA*SUM,这都是用来进行校验的,检查下载后的镜像文件有没有出错,这个步骤我就省略掉了。
下面是镜像文件,分为desktop和server两类,分别是桌面版和服务器版,我们现在要使用桌面版,选择desktop
然后选择系统是32位还是64位,i386对应32位,amd64对应64位(因为i386是因特尔最先搞出来的,amd64是amd整出来的)
直接选择ubuntu-14.04.6-desktop-i386.iso进行下载,大小只有1.1G,如果你网速好的话,几分钟应该能搞定
官方资料的获取
宋老师的微信公众号是《Linux阅马场》,里面有篇文章提供了下载地址
FAQ《Linux设备驱动开发详解:基于最新的Linux 4.0内核》
https://pan.baidu.com/s/1472ejtnyguaKiULOWPahhw
提取码:moua
我们只需要Baohua_Linux.part1.rar和Baohua_Linux.part2.rar,前提是你已经安装好了虚拟机软件VMware或者VirtualBox
如果你不会整虚拟机的话,可以先去网上学习一下,宋老师的百度网盘当然也提供了VMware和VirtualBox的下载,这两个软件都是可以的
安装步骤
其实可以参考一下该书的1.5章节,讲的还算详细
安装原生的ubuntu
把我们之前下载的14.04版本进行安装,此过程用图片形式记录
兼容版本不用选太高,否则你挪个地方可能用不了
如果不想全自动安装(简易模式),可以选这个,建议选最后一个
处理器数量其实随意,看你电脑配置,这个会影响内核编译的速度
内存选择0.5-2G,根据电脑配置量力而为
桥接网络的意思是跟你主机在一个网段,可以作为网络邻居相互访问
NAT就是共享IP,两个机器IP一样
建议使用桥接模式
对于普通的linux系统,磁盘大小50G应该够了,如果跑安卓的话,至少100G
注意CD/DVD设置好了,开机即可进入系统安装界面
一定选择英语安装
一定选择英语安装
一定选择英语安装
因为选汉语的话,它会去下载语言包,有可能是从国外的服务器下载,所以这个过程非常慢
安装完成后,我会教大家如何快速切换成中文
不要勾选下载安装更新和第三方软件,同样的道理,因为慢
放心的选擦除,因为不会擦除你硬盘的其它东西,只会擦除之前分配给它的那50G的空间
弹了一个警告,不要管他
它说如果你安装完了,就移除掉安装盘,然后按ENTER键
因此很简单,在左边对应虚拟器的设置中,切换一下CD设置,然后进去回车重启
开机后又提醒我更新,别搞了好不好
现在来调整系统成中文版,进入设置中的软件更新,先选一个国内的源
让系统给你测试一下,会自动选择网速最快的源
选择服务器的时候,要你输入密码,就是之前安装系统的那个密码
完了之后,可以看到我的服务器已经设置为阿里云的
最后一步确认的时候,一定要点close,否则前功尽弃
现在开始更新现有的软件,打开终端
以下步骤需要用到两个指令,依次进行
sudo apt-get update
sudo apt-get upgrade
第一步update检查本地软件和服务器的差别,按要求输入密码
完了后,upgrade更新本地的所有软件,要求输入Y则输入Y
更新已经完成,下一步,安装工具链和qemu
依次执行以下指令
sudo apt-get install gcc-arm-linux-gnueabi
sudo apt-get install gcc-arm-linux-gnueabihf
sudo apt-get install gcc-arm-none-eabi
sudo apt-get install qemu
系统会提醒你是否安装,以及需要的空间大小,输入Y即可
接下来进行语言的更新
有一个提醒,先不要管它,remind me later
选择安装和移除语言
选择简体中文,应用更改
将汉语拖拽到最上面,应用到整个系统
重启一下,发现此时界面已经全部变成中文,这里选保留旧的名称,文件夹用中文名非常的不方便
其实还可以安装一下虚拟机工具,在VMware的菜单虚拟机->安装vmware-tool工具,具体过程就不说了,安装这玩意儿的好处,是可以从和主机相互拖拽文件,很方便
拷贝所需资料
重新创建一个虚拟机,所有流程同上,但是这次不要指定CD/DVD的镜像路径,删除它默认创建的硬盘
添加一个SATA硬盘
提前将宋老实提供的ubuntu虚拟机解压好,注意路径最好别中文
开机后,分辨率是有很大问题的,这个先不管,上下左右拖动一下,输入密码进入系统
打开终端
将家目录下的develop目录进行压缩,指令为
sudo tar zcvf develop.tar.gz develop
想办法把这个压缩文件复制到之前安装的ubuntu上
方法有很多,可以两边都装上vmware tool,通过windows系统进行中转
也可以在这边装上samba服务,另一边通过网络直接获取到
也可以尝试用U盘等移动工具
具体情况就不演示了
拷贝到系统桌面后,解压到家目录
sudo tar xvf ~/Desktop/develop.tar.gz -C .
为了不因为权限问题报错,更改一下权限
sudo chmod 777 develop -R
内核编译
尝试编译一下内核看看
没有问题
在这个脚本中,执行了make LDDD3_vexpress_defconfig后,会将这个配置文件,复制一份到当前目录,名字为.config
因此后面的内核编译,就不需要这句话了,需要屏蔽掉
修改的时候,有可能vi的上下左右用不了,可以执行以下指令解决
sudo apt-get remove vim-common
sudo apt-get install vim-gtk
然后进入图形化配置界面,报错了
make menuconfig
glx@glxOS:~/develop/linux$ make menuconfig
HOSTCC scripts/kconfig/mconf.o
In file included from scripts/kconfig/mconf.c:23:0:
scripts/kconfig/lxdialog/dialog.h:38:20: fatal error: curses.h: 没有那个文件或目录
#include CURSES_LOC
^
compilation terminated.
make[1]: *** [scripts/kconfig/mconf.o] 错误 1
make: *** [menuconfig] 错误 2
需要安装一个软件后就OK了
sudo apt-get install libncurses5-dev
启动qemu
挂载qemu的根文件系统到本地
查看一下module.sh,这个脚本把之前编译的内核等内容,放到一个名为vexpress.img的根文件系统中
cat module.sh
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules
sudo mount -o loop,offset=$((2048*512)) extra/vexpress.img extra/img
sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules_install INSTALL_MOD_PATH=extra/img
sudo umount extra/img
执行sudo mount -o loop,offset=$((2048*512)) extra/vexpress.img extra/img
即可完成挂载,挂载后,可以把本地文件放进去,然后就可以在qemu中进行操作
在启动qemu之前,记得先执行build.sh,再执行module.sh脚本
到linux/extra目录下
不带GUI
./run-nolcd.sh
执行完后,进入qemu模拟的开发板系统
带GUI
./run-nolcd.sh
会额外开启一个窗口,和不带gui的差不了太多