ubuntu-18.04 LTS嵌入式linux开发环境搭建

ubuntu-18.04 LTS于 2018年4月26号正式发布,很多网友早就迫不及待下载下来安装了,同时也在博客分享了自己的安装体验,分desktop和server的文章,写得稍微简单了一些。本人这几个月一直在忙嵌入式AI ARM+VPU平台设计,没有及时去体验ubuntu-18.04 LTS,不过本人也得跟上步伐,因为本公司去年开发的DM8127平台最新版本的SDK3.9.1需要用到64bit虚拟机,正在玩的Intel Movidius Myriad 2 VPU,里面SDK包涉及到深度学习,用到比较新的Python编程,比如Caffe和GOOGLE的Tensorflow,都需要高版本的ubuntu来支持,所以这几天下载下来安装体验了一下。在体验过程中发觉有些地方需要注意的地方,所以决定写下来分享一下,让网友提出批评指正。还有本公司侧重嵌入式linux图像识别、机器视觉的开发(TI DM8127,海思Hi3516D,Hi3519平台),本人将从嵌入式linux的角度去写这个开发环境搭建,这一点和其他网友写的文章有比较大差别,希望对一些爱好嵌入式linux的朋友有所帮助。

一、 ubuntu-18.04 LTS简单介绍
ubuntu-18.04 LTS长期支持版本代号叫仿生海狸,使用linux kernel v4.15版本,
ubuntu-16.04 LTS 的Unity被取消,被ubuntu-18.04 LTS gnome取代,其他详细的优缺点可以看看其他网友的文章和官方的介绍。下载地址:https://www.ubuntu.com/download/alternative-downloads,

下面开始我们的搭建步骤,用图说话,有些步骤和本人写的《图像识别DM8127开发攻略——开发环境搭建》里面描述的ubuntu-16.04 LTS很类似,毕竟两个版本发布时间间隔不是很长。

二、 VMware-workstation-full-14.1.2安装(仅供学习参考)
我们一直使用VMware虚拟机,以前很多开发攻略文章都提到过,为了能够正常安装ubuntu-18.04 LTS,我们只能使用这个最新虚拟机版本,刚开始本人使用VMware-workstation-full-12.5.7,发觉安装不顺利,特别是安装到VMware tools共享文件夹的时候,失败了。然后本人就试试使用VMware-workstation-full-14.1.2来重新安装ubuntu-18.04 LTS,一切顺利。
点击安装VMware-workstation-full-14.1.2,如果电脑上面有旧版本的VM虚拟机,可以先卸载,再安装这个最新的VM虚拟机,这个并不影响你以前安装正在使用的那些ubuntu *.vmdk的开发环境,比如我们以前的Ubuntu16_dm8127.vmdk,是使用VMware-workstation-full-12.5.7安装的,现在安装好VMware-workstation-full-14.1.2同样可以使用,新版本VM肯定兼容以前的版本的东西。

图-1
按图-1 选择好路径安装,比如一般放在D盘。

图-2
网上下载的版本最好不要去打钩。

图-3
安装完先不要急点击“完成”,应该使用“许可证”去处理。本人这里提供不了密钥,要的话自己网上查找,呵呵。输入密钥完成VMware-workstation-full-14.1.2安装后,先不要急马上去安装ubuntu18.04,我们需要先在WIN7下面网络属性进入属性配置界面。见下图,“共享”的地方选择VMware Network Adapter VMnet1,这样后面创建ubuntu18.04虚拟机的时候,使用桥接网口模式可以让虚拟机可以访问WIN7的共享文件夹等等。


图-4
然后重启一下电脑,再安装ubuntu-18.04 LTS,效果估计更好

三、 ubuntu-18.04 LTS安装


图-5


图-6


图-7


图-8


图-9
本公司开发部电脑基本都是8G内存以上,我们一般建议使用3G内存给虚拟机,最低要求是2G。


图-10


图-11


图-12


图-13


图-14
老话题,保存虚拟机单独一个文件,在WIN7下好管理,好压缩保存虚拟机进行备份。在WIN7下找一个比较大空间的分区,分至少50G空间给虚拟机,因为以后要装很多东西。


图-15


图-16
先点击“自定义硬件”,按图-17,图-18设置,再点击完成。


图-17
找到你下载好的ubuntu-18.04-desktop-amd64.iso镜像文件。


图-18
图-18选择这个虚拟化Intel VT-x/EPT,是保证后面开始安装ubuntu-18.04 64位操作系统,一开始安装不成功的问题,见图-20的显示。


图-19


图-20


图-21
如果在图-18选择了虚拟化Intel VT-x/EPT还解决不了ubuntu-18.04 64位操作系统安装问题,则需要在启动电脑的时候,进入BIOS去设置,见图-21的选择,保存退出BIOS,就OK了。


图-22
进入熟悉的安装界面,继续看图说话。


图-23


图-24
允许升级安装一些第3方的软件包。


图-25


图-26


图-27


图-28
公司重点在做嵌入式AI ARM+VPU的平台,我们取的普通用户名字就叫ubuntu18vpu吧。图-28 的名字定义会体现在下图vpu@ai-vpu:,见图-29

图-29


图-30
开始长时间安装ubuntu-18.04。


图-31
ubuntu-18.04安装结束后,先不要急重启虚拟机Restart Now,应该按图-31先断开虚拟机光盘的镜像连接,即不要再让虚拟机启动的时候继续运行ubuntu-18.04-desktop-amd64.iso文件。


图-32
最后重启虚拟机。

四、 对ubuntu-18.04 LTS构建良好的开发环境

1、 ubuntu-18.04 LTS支持普通用户登录


图-33

图-34
按上面步骤安装好ubuntu-18.04后,重启虚拟机,就进入图-33的普通用户登录界面(本人发觉这个登录时间有点慢,目前还没有时间去优化ubuntu-18.04的启动脚本,网上有人说是界面管理工具,负责系统启动图形显示的plymouth-read-write.service和plymouth-quit-wait.service就占用了50多秒,有的说是虚拟机里面的显卡驱动安装问题),点击普通用户账号,输入密码登录。


图-35
接下来我们先熟悉ubuntu-18.04 LTS的界面,左下角那9个点就是:Show Applications,点击它,熟悉它。特别是settings界面见图-35,先设置有线网络,保证能在ubuntu-18.04里面能上网,否则无法进行软件包升级。其他settings可以放到后面再优化。


图-36
在图-35的settings界面,我们点击Network里面的Wired,则会出现图-36的界面,输入熟悉的网络配置,为了通过我们公司路由接到外网,这个DNS必须根据你公司连接外网的路由器分配的DNS一致。网络设置好后,我们可以点击火狐浏览器打开网页测试一下,网络通了就可以做apt install这些操作了。

2、 ubuntu-18.04 LTS支持root登录

首先在普通用户登录的情况下,使用#sudo su,然后输入普通用户ubuntu18vpu的密码1234567,临时切换到root权限下操作。
先安装vim编辑器,#apt-get install 和#apt install命令是一样的。
#apt install vim
#apt install v p n c git (v p n c 竟然被屏蔽,注意没空格)


图-37


图-38
然后按图-38进入/etc/pam.d目录下,#vim gdm-autologin


图-39
按图-39修改屏蔽,然后保存文件退出。


图-40
按图-40修改,#vim gdm-password,保存退出。


图-41
使用#passwd root,添加root,并设置root的登录密码2次,我们使用简单的1234567密码,见图-41。
然后编辑/root/.profile文件,#vim /root/.profile


图-42
按图-42红框去修改,先屏蔽mesg n || true,然后后面添加:
tty –s && mesg n || true
保存退出。
重启虚拟机,进入下面的登录界面。


图-43

图-44

图-45
点击“ Not listed?”,去选择root登录,见图-43,图-44,图-45。
做linux嵌入式开发,我们喜欢使用root权限去操作,下面其他步骤也是在root的权限下去做的。
3、 ubuntu-18.04 LTS优化界面
我们回到图-35的settings界面,继续对ubuntu-18.04 LTS环境进行优化, 比如背景设置Background,设置电源Power关闭屏保等等,

图-46

图-47
设置显示设备模式,我们选择1280*800模式。刚开始看不完整个界面,可以按下图-48去操作,

图-48
右键点击displays上边,然后再选择“Move”,

图-49

安装net-tools工具:
在ubuntu-18.04,ifconfig 已经被ip 取代,比如ifconfig –a 应该改成ip –a,但是我们有些脚本还需要用到ifconfig,后面安装VMware-tools的需要用到,
#apt-get install net-tools

图-50

安装gnome优化界面工具,这个好处可以百毒一下。
#apt install gnome-tweak-tool
#apt install gnome-shell-extensions
#apt install chrome-gnome-shell
继续安装有用的工具
#apt install make (天啊这个命令没有默认自带,还要我们自己安装)
#apt install unrar
安装文件夹和文件比较工具meld
#apt install meld

4、 在ubuntu-18.04 LTS安装VMware-tools


图-51
运行ubuntu-18.04虚拟机,然后点击VMware Workstation菜单,见图-51。


图-52
虚拟机里面的光盘会链接到VMware tools的镜像。


图-53


图-54
在/media/root/VMware Tools目录下,去解压压缩文件包到一个临时目录。


图-55
解压完后,进入临时目录的vmware-tools-distrib文件夹,执行./vmware-install.pl。


图-56
一定要输入“Y”回车。


图-57
这个图-57的地方就是如果没预先安装apt install net-tools,就没有ifconfig常用的命令,就会出现图-57的问题,然后输入“yes”可以解决问题,但按照本文的步骤来安装,就不会出现找不到ifconfig的原因,VMware-tools安装会顺利些。


图-58

安装VMware-tools结束后,我们继续设置虚拟机。

图-59
设置和WIN7共享文件夹。


图-60

在WIN7某个盘生产一个新的共享文件夹。

图-61

到图-61的地方就基本搞定WIN7和虚拟机里面的ubuntu-18.04共享文件夹了。在ubuntu-18.04的命令行进入:
#cd /mnt/hgfs
#ls
就可以看到共享文件夹的名字ubuntu18s。

5、 解决ubuntu-18.04休眠死机的办法
有网友给出以下方法:
#apt install pm-units(ubuntu-18.04已经自带安装好的,可以不用安装)
#apt install laptop-mode-tools
#gedit /etc/laptop-mode/laptop-mode.conf

图-62
保存退出
#laptop_mode start
#cat /proc/sys/vm/laptop_mode
如果显示值为非0,那就OK了。
以上是网友提供的方法,但是本人测试后还是不行,就是本人电脑WIN7进入休眠状态后,正在虚拟机里运行的ubuntu-18.04还是死机,分析很多网友同样的问题,很可能是显卡驱动的问题,还有内核版本的问题。这里本人还没有测试在VM虚拟机里面更新显卡驱动。所以这个问题还是没有很好的解决,如果有网友能够彻底这个BUG,可以分享出来学习。
(补充说明:更新ubuntu-18.04内核版本到4.15.18和同时更新nvidia-390 nvidia-prime显卡驱动可以解决这个问题,感谢网友:https://www.cnblogs.com/maxuewei2/p/8974243.html)

五、 安装TFTP server

ubuntu-18.04安装TFTP server和ubuntu-16.04一样。
使用tftpd-hpa,它是一个功能增强的TFTP服务器,
#apt install xinetd
#apt install tftpd-hpa
(注意:不要安装tftp-hpa客户端,否则板子无法TFTP下载BIN文件)
#mkdir /tftpboot
#chmod –R 777/tftpboot
#gedit /etc/default/tftpd-hpa


图-63

然后嵌入式板子要烧写的BIN文件放到这个/tftpboot目录,在板子的u-boot去tftp下载对应文件,OK没问题,可以正常下载烧写。

六、 安装NFS server

#apt install nfs-kernel-server
#gedit /etc/exports

图-64

按上图添加板子以后要挂载的NFS文件系统的目录
还有个地方需要修改:
Ubuntu 17.10 之后 nfs 默认就只支持协议3和协议4,但是嵌入式板子 uboot 默认启动的是协议2,若想要求主机 nfs 支持协议2,就得:
#gedit /etc/default/nfs-kernel-server
尾部添加:
RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"

图-65
保存文件退出,最后做:
#/usr/sbin/exportfs –av
#/etc/init.d/nfs-kernel-server restart
然后拿我们开发的海思Hi3516D板子,在UBOOT设置好bootarg NFS登录的参数,上电启动嵌入式Hi3516D板子。

图-66
出现图-65就说明NFS设置成功了。

七、 总结

至此,ubuntu-18.04 LTS嵌入式开发环境已经搭建好一大半,为什么这么说呢?因为嵌入式板子的交叉编译环境还没搭建,本人在这里也不想追加,因为我们开发的平台有DM8127(ARM+DSP),Hi3516(ARM+IVE),Hi3519(ARM+IVE),还有支持深度学习的VPU平台,每个平台的交叉编译工具不一样,所以本人就写到这里为止。后面有兴趣再写其他Hi3516-Hi3519的交叉编译环境搭建,而DM8127的开发环境以前已经写过,只不过最新的SDK版本3.9.1需要用到64位操作系统,其他搭建步骤大同小异。我们这里重点是如何在ubuntu-18.04 LTS上面搭建嵌入式LINUX开发环境,因为ubuntu-18.04 LTS刚发布不久,很多东西需要去体验和修正,本人写出来,希望得到高手指正,让ubuntu-18.04 LTS开发环境更流畅好用。本人交流联系方式:QQ:2505133162。

Ubuntu-18.04 LTS嵌入式linux开发环境搭建的更多相关文章

  1. XCode 5远程调试OS X应用程序

    我正在使用XCode5.0.2在OSX10.9上开发一个应用程序并获得了一个我无法在这台开发机器上重现的错误报告.但是,我有一个10.7虚拟机出现崩溃,所以我想调试那里没有在这个VM中安装XCode.我搜索了有关远程调试的信息,但我没有得到有用的答案.我甚至担心它根本不受支持.但无论如何我还是要问一下.或者,除了执行完整的XCode安装等之外,还有哪些其他选项来调试这样的问题?

  2. macos – 运行brew命令充满了’同意Xcode / iOS许可证需要管理员权限,请通过sudo以root身份重新运行.’

    所以我跑了:如果滚动到底部,可以输入“同意”,然后就可以了.

  3. ios – 仅适用于iPad的Settings.bundle?

    我有一种情况需要通过设置应用程序为我的应用程序提供一个设置.我的应用程序是通用的,但这个特殊的设置只在iPad上有意义,所以我只希望我的应用程序显示在iPad上的设置中.这可能吗?

  4. ios – Swift 4设置捆绑,获取默认值

    我创建了一个包含大约8个切换开关的设置包.我想要做的是从设置包中获取默认值.目前我现在有这两种方法:我在viewDidLoad中调用这些方法然而,这并没有得到我的默认值.如果我关闭应用程序,打开设置,调整设置并重新打开应用程序,这会产生正确的值.有没有获得默认设置?

  5. Swift调用OC和C

    Swift文件:main.swiftOC文件:Root.hRoot.mC函数文件:Fun.c桥接文件:工程名称-Bridging-Header.h

  6. OC调用Swift

    修改main.m文件OC文件:Root.hRoot.mSwift文件:Person.swift

  7. cinder swift的区别

    [原]OpenStack入门以及一些资料之2014-4-29阅读1144评论0注:本文内容均来自网络,我只是在此做了一些摘抄和整理的工作,来源均有注明。它拥有自己的文件系统,通过网络文件系统NFS或通用文件系统CIFS对外提供文件访问服务。Raid,不同的raid等级在增加数据可靠性以及增加存储器(群)读写性能间取得平衡。卷组描述区域,和磁盘将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷的VGDA中。

  8. OpenStack中Swift和cinder区别

    swift是objectstorage,将object存储到bucket里,你可以用swift创建container,然后上传文件,例如视频,照片,这些文件会被replication到不同服务器上以保证可靠性,swift可以不依靠虚拟机工作。如果你把这个虚拟机terminate了,这个volume和里边的数据依然还在,你还可以把它接到其他虚拟机上继续使用里边的数据。cinder创建的volume必须被接到虚拟机上才能工作。

  9. Project Perfect让Swift在服务器端跑起来-在Linux上创建你的Perfect项目(三)

    前两篇,分别讲述了入门和在Linux下部署,现在得说说如何在Linux下开发了。在Linux下开发,相对比在Mac下开发更灵活。我们先来看看构建基于Perfect的网站服务的编译方式如图通过引用基础库PerfectLib和数据链接,中间件模块创建你的网页文件,并用makefile打包生成你的网站动态库。所以如果你只是在Linux下构建项目,你只需要先创建好你的Handlers.swift即可。根据上面的方式我们开始在Linux下创建我们的Perfect项目。这里我在Perfect文件夹创建了一个Demo文

  10. 使用 Swift 语言编写 Android 应用入门

    Swift标准库可以编译安卓armv7的内核,这使得可以在安卓移动设备上执行Swift语句代码。做梦,虽然Swift编译器可以胜任在安卓设备上编译Swift代码并运行。这需要的不仅仅是用Swift标准库编写一个APP,更多的是你需要一些框架来搭建你的应用用户界面,以上这些Swift标准库不能提供。简单来说,构建在安卓设备上使用的Swiftstdlib需要libiconv和libicu。通过命令行执行以下命令:gitclonegit@github.com:SwiftAndroid/libiconv-libi

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部