硬嗑HarmonyOS开篇之Linux内核

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了硬嗑HarmonyOS开篇之Linux内核相关的知识,希望对你有一定的参考价值。

参考技术A 鸿蒙(Harmony OS)是华为自2012年开发的一款可兼容android 应用程序的跨平台操作系统. 截至2019年6月14日, 华为高管证实了新系统的存在以及华为在全球申请“Hongmeng”商标一事, 并且说明主要是用于物联网, 未必会发展为手机系统. 2019 年 8 月 9日华为开发者大会上,华为消费者业务首席执行官余承东正式宣布发布自有操作系统鸿蒙,内核为Linux内核、鸿蒙微内核和LiteOS. 未来将摆脱Linux内核和LiteOS, 只有鸿蒙微内核.

从此,Harmony OS(鸿蒙操作系统,简称鸿蒙)正式进入公众视野. 与支持者相对的各种黑化声音同样不绝于耳,相对于这些无脑黑,节奏黑, 难道我们不能好好的找找资料,真正了解鸿蒙是个啥. 后面将从 Linux 内核, 鸿蒙微内核, 兼容 Android, 全场景交互体验等方向来一次 HarmonyOS 的学习之旅...

PS: 这几篇所有整理的内容都基于网络上的公开资料(维基百科等),为了基本上所有非技术人员也都能无障碍看懂.

要想了解操作系统,必然先了解一下操作系统的发展 历史 ,不过是不查不知道,一查吓一跳,这世上的操作系统是真的好多啊,因此肯定是没必要一一道来的, 一些 历史 脉络部分,我这里大致的梳理一下一些关键的标志性系统,辅助我们来了解 HarmonyOS,从此不再人云亦云.

目前大家接触比较多的常见操作系统也就那几个, 大致分类有, 电脑端: Unix, Linux, MacOS,Windows, 手机端:Android, ios.

1969年在AT&T的贝尔实验室开发Unics, 1973年, 用C重新编写后正式命名为 Unix, 标志着通用操作系统的到来, 一开始和学术界有合作(加州伯克利大学),从而快速在各大高校传开;

1977年,伯克利大学的Bill Joy 教授获得Unix的核心原始码后, 修改成适合自己机器的版本,并增加了编译工具和很多功能软件,最终命名为BSD;

1979年 AT&T 公司发行Unix7.0, 出于商业考量将Unix的版权收了回去. 这也导致了BSD的后裔一直跟AT&T 相关公司产生了法律纠纷,直到1994年1月才了结.

1994年6月,4.4BSD 以两种形式发布:可自由再发布的4.4BSD-Lite, 不包含AT&T源码; 另有 4.4BSD-Encumbered,跟以前的版本一样,遵照AT&T的许可证。几种基于4.4BSD的包(比如FreeBSD、OpenBSD和NetBSD)也得以继续维护。

这期间, 学术界自力更生, 在1986年一个叫 Andrew Tanenbaum(安德鲁·塔能鲍姆)教授就参照Unix的功能编写完成并发布一个Minix系统, 用于教学用途, 并于次年发布了相关书籍。

1991年,一个叫 Linus Torvalds 的学生对只能用于教学用途的 Minix 系统不满足,于是就基于Minix开始编写自己操作系统, 并于9 月份开源, 也就是 Linux。

Linux 有多牛, 今天的Linux系统掌管着超级计算机和大部分服务器、主机,再加上 Android 的智能移动设备, 还有桌面系统,嵌入式设备,以及纯粹的上网本, Linux王国的领土几乎扩展到了整个网络系统,搜索,购物,聊天等全球数十亿人离不开的服务,都运行在Linux之上。

到此,所以鸿蒙的内核里有 Linux 内核的存在,有毛病吗?

首先,前面有了解到 Linux 之所以成功, 在于其技术的更加先进,但是这种先进它并不是颠覆,他本身就是基于 Minix 的基础之上, 它在一开始的一段时间内是必须要有 minix 才能运行的起来的,

其次, 是有这么一个长达两年多的 Unix 的版权之争, 从而给 Linux 提供一个绝佳的成长时间, 毕竟就像Linus 自己说的那样,当时如果有可用的 386BSD,他也不会选择自己再去重新开发一个 Linux.

再者, Linux 1991 年开发并开源出来, 到 1993 年大约有100余名程序员参与了Linux内核代码编写/修改工作,其中核心组由5人组成,此时Linux 0.99的代码大约有十万行,用户大约有10万左右。到鸿蒙正式公开的2019年, Linux 内核已有大约2500万行代码。

对比之下, 挺有意思的是, 余承东也说过 HarmonyOS 一开始并没有打算放到手机上, 相较于 Unix 闭源后逼出来的这个 Linux, HarmonyOS 却是美国的打压和制裁逼出来的, 而鸿蒙的今后的成长, 我们是可以共同见证得到并也可以参与得了的.

思考二: Linux 这么牛,为什么在电脑时代的桌面操作系统上,没有竞争过 Windows 和 MacOS 呢? 但是到了手机时代, Linux 内核的 Android 却可以和 iOS 平分天下? 原因同样也很多, 其中也有两个公认的关键点,

另一个最重要的关键点则是有一家强有力的公司所支撑的系统开发和生态建设, 桌面时代 Windows 有微软,MacOS 有苹果, Linux 呢是一个松散的开源社区, 但是到了手机时代,iOS 有苹果, Android 有谷歌;

这篇先留点坑,鸿蒙的微内核和智能生态先不表, 我们依然从 Linux 这条线, 再来看一下 Android

大家一般都知道的, Android 是一个基于 Linux 的、由 Google 主导的开源系统。那么为什么谷歌还能掐华为的脖子,而华为却还是能兼容 Android 呢?

其实严格意义上来说,Android=AOSP+GMS, 谷歌的手机 Pixel 出厂自带的系统即为Android,而一般来说,谷歌在自己(主导)开发的新一代Android系统成型时,都会放出其中的aosp代码。也就是Android系统等于开源的aosp,加上额外的闭源部分(其中包括GMS)的组合。AOSP 全名为Android Open-Source Project, 华为的开放源代码 OpenHarmony 是一种概念的. GMS 全名为 Google Mobile Service(谷歌手机服务),而这也就是谷歌限制华为的关键之处,GMS 是谷歌的应用和服务全家桶,包括电话,邮件,应用商店等一系列应用和消息推送服务,海外的手机没有这些东西,就跟砖头没什么两样了.

这个服务本身在国内是无法使用的, 国内的各种定制 ROM(如小米的 MIUI,华为的 EMUI 等)都是基于AOSP 加上自家的云服务的定制修改.各大品牌的操作系统如下:

苹果--iOS

谷歌--Android(AOSP+GMS)

三星--Android(AOSP+GMS)

小米--MIUI(基于AOSP)

OPPO--Color OS(基于AOSP)

VIVO--Funtouch OS(基于AOSP)

一加--H2 OS(基于AOSP)

锤子--Smartisan OS(基于AOSP)

魅族--Flyme(基于AOSP)

联想--ZUI(基于AOSP)

华为--国内: EMUI(基于AOSP),国外 Android(AOSP+GMS), HarmonyOS2

其一,看到这里,那些一直老是质疑鸿蒙就是安卓(AOSP)套壳的质疑是怎么回事,估计大家也都清楚了.其实啊,大家都知道,技术发展的现在,开发一款系统并不能难倒这些 科技 大厂,生态的支撑才是决定一个体统生死的关键,鸿蒙兼容安卓,有错吗?鸿蒙兼容安卓本来就是一个正确的决策嘛. 当然,这里是在做科普,而非为了争辩什么. 因为其实有些东西它就在那里,有公开的资料.

其二,看到这里,其实也能看到国内的手机厂商没有第一时间去响应鸿蒙一个原因了,一个明显的问题就是支持鸿蒙是有两套方案的:一是组织团队基于Open Harmony开发呢?还是说直接放弃已有的生态直接用HarmonyOS2?如果是你,你会第一时间选择这其中的一项吗?最近魅族宣布接入鸿蒙的,不是魅族手机,而是其Lipro品牌下的智能家居生态产品。

关于生态还是放到下次在统一聊,还是回到主线,我们再来梳理一下安卓的大致 历史 。

2005年 7 月 11 日,Google 收购了 Android 科技 公司,Android的关键人物包括安迪·鲁宾、利奇·米纳尔和克里斯·怀特,以及所有Android 科技 公司的员工都一并加入Google,作为收购的一部分。

2007年11月5日,在Google的领导下,成立了开放手持设备联盟(Open Handset Alliance),那是包括Google在内的 科技 公司联盟,其他成员包括HTC、摩托罗拉、Samsung等设备制造商,无线运营商则包括Sprint及T-Mobile,芯片制造商高通及德州仪器,目标是为移动设备开发“首个真正开放和全面的移动设备平台”。随后,其他厂商加入,包括Broadcom、Intel、LG、Marvell等。联盟开放手持设备联盟的创建目的是为了创建一个更加开放自由的移动电话环境。而在开放手持设备联盟创建的同一日,联盟对外展示了他们的第一个产品:一部搭载了以Linux 2.6为核心基础的Android操作系统的智能手机。

2008年12月9日,新一批成员加入开放手持设备联盟,包括ARM、华为、索尼等公司.

为了跟iPhone 3G能互相媲美,诺基亚和黑莓手机于2008年均宣布有关触摸屏的智能手机的信息,Android的焦点最终也转向触摸屏。第一款运行Android系统的商用智能手机是HTC Dream,亦名为T-Mobile G1,该智能手机于2008年9月23日发布

同时,一个负责持续发展Android操作系统的开源代码项目成立了AOSP(Android Open Source Project)。除了开放手持设备联盟之外,Android还拥有全球各地开发人员组成的开源社区来专门负责开发Android应用程序和第三方Android操作系统来延长和扩展Android的功能和性能。

之后便是大家熟悉的各种基于 AOSP 的安卓智能机出现在了大家的手上.

至此,大家应该真正都明白 Android 和 AOSP 的关系了,也能理解 OpenHarmony 和 HarmonyOS2 的关系了吧.

OpenHarmony 是不兼容安卓的,至于很多人一直还在质疑 HarmonyOS2 是安卓套壳这个事, 我是有点奇怪的, OpenHarmony的开源代码已经放出来了, 华为的官方解释也就是在那里?他们都视而不见.HMS Core(华为移动服务)是基于华为终端设备和安卓平台,对应用开发者开放并提供各种服务能力的移动服务框架。, 适用产品是手机和平板, 并且其升级不涉及系统版本,HMS Core (华为移动服务)同GMS(谷歌移动服务)一样,可以在安卓开源项目(安卓系统)上运行,支持安卓应用,但部分需要GMS支持的安卓应用,在HMS Core平台下可能无法运行。

作为结尾,想说明一下,到现在为止,所有的关于对鸿蒙的解读还只是按照安卓的框架和场景设定来思考的, 实际上,鸿蒙的定位是服务于物联网. 关于鸿蒙微内核,全场景交互体验我们放到下一篇,这里还涉及到 iOS,以及谷歌的新系统.

linux开篇

什么是Linux:技术分享图片

严格意义上讲Linux指的是内核 版本 基于一个Linux内存做的修改

为什么使用Linux:

  1. 稳定:内核 服务分开 独立的 保证的系统最核心的稳定性
    Linux可以把所以不需要的软件(包括GUI)卸载掉
    通过命令直接内核发送数据
    效率:只要分配了内存(或磁盘)?运行状态填满 完全使用,cpu
  2. 免费 或少许收费 ----Linux开源
    Windows 大部分都是闭源的 软件/服务
    软件有 .exe文件 和exe有配套的很多文件 但你没法查看和修改

Linux开源?整个程序和源代码完全公布,可以查看,修改 并且修改后可再次发布成自己的

  1. 漏洞少且快速修复 ?基于开源(最源码修改 属于开发方向)
  2. 多用户多任务 --?一个用户可以同时允许多个任务
    一个系统可以同时多个用户操作 互不影响(每个用户都有自己管理的区域—home目录)
  3. 权限:Linux非常重要的 可读 R 可写 W 可执行 X(可以理解为wndows的.EXE)
  4. 适合小内核程序嵌入系统,相对不消耗资源(可以把一些不需要的去掉)

桥接--->把网卡 当作交换机 实现虚拟机和本机(物理机)互联 同时上网
NAT--->把网卡看作路由器(运行NAT服务) 物理机算外网 虚拟机算内网
host-only仅主机 --->不能上网---> 本地局域网

磁盘分区--->通常三个 特殊会有(/home /var)
/boot 开机引导文件存放处(引导文件、软件 几十兆大小) 200-300M
/ 根分区--->Linux系统的最根本位置
swap 交换分区--->一般是内存的1.5-2倍
作用:当系统内存完全占据- 把一些不用的文件放入swap中 使得其他程序继续运行

用Xshell连接虚拟机--->
1.IP地址---固定IP
2.关闭防火墙 Iptables –F
Setenfororce 0
3.知道用户名 和 密码

自动获取IP地址 :dhclient 使用过在使用会提示错误 用dhclient –r 重置
查看IP地址 Route -n
1.配置虚拟机的网卡--->固定IP
[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
RHEL6版本中网卡配置文件存储的位置 网卡命名ethX
RHEL7 enoXXXXX ensXXXXXX

DEVICE=eth0
HWADDR=00:0C:29:B8:70:C4
TYPE=Ethernet
UUID=e1004b6d-8f98-458d-88fb-4005f44385c4
ONBOOT=yes ---启用网卡
NM_CONTROLLED=yes
BOOTPROTO=static ---静态模式--->把虚拟机当作物理机使用
IPADDR=192.168.1.180 ---IP地址(IPADDR必须大写)
NETMASK=255.255.255.0 ---NETMASK掩码
GATEWAY=192.168.1.1 ---网关GATEWAY
DNS1=114.114.114.114 ---DNS1 主DNS服务器
DNS2=8.8.8.8 备用

a/i/o字母进入编辑--->Esc键退出编辑--->:w :q --->:wq !强制

重启网卡!
[[email protected] ~]# /etc/init.d/network restart ----->5、6版本 /etc/init.d/服务名
[[email protected] ~]# service network restart

7版本--->
systemctl restart network.service
service network restart

纯净系统 没有软件需要自己下载下载方法 RPM管理:
Linux--->使用yum安装/源码安装/rpm安装

1) 源码安装--->把程序和源代码都给你 自己编译安装
优势:代码透明,可以自己配置安装路径
缺点:需要很多依赖包(系统环境)--->下载安装
最常见--->gcc环境--->c语言的一个编译环境

2) rpm-->属于源码包升级(将一个源码包和配套的依赖包组合成一个包)
优点:省去了查找依赖包的时间
缺点:rpm很可能只是适用于你的×××

3) yum-->软件仓库--->是rpm的集合
源码和依赖包都在里面,只需要提供服务的关键字就可以安装!
6和7大部分都是用yum安装
6有一部分使用源码安装

yum安装三种方式:
1.http 网络安装
2.ftp 文件传输--->需要一台ftp服务器(存放着所有的安装环境)
3.file 本地安装--->适用于虚拟机(读取镜像的内容)

Yum默认
[[email protected] ~]# ll /etc/yum.repos.d/
total 8
-rw-r--r--. 1 root root 529 Oct 30 2013 rhel-source.repo 默认存在的yum源

ls -l查看
ll = ls –l

[[email protected] ~]# cat /etc/yum.repos.d/CentOS-Base.repo 查看YUM获取地址
FTP形式 ftp://ftp服务器网址
[rhel-source] ---中括号--->表示网内唯一标识(和RID一个意思)不可重复
name=Red Hat Enterprise Linux $releasever - $basearch - Source --->yum的名字
baseurl=ftp://ftp.redhat.com/pub/redhat/linux/enterprise/$releasever/en/os/SRPMS/
//指定yum方式
enabled=0 //启用这个源吗? 0不启用 1启用
gpgcheck=1 //指RPM的数字证书生效,检测源完整性吗? 0不检测 1检测
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release //通过本地来检测完整性

Http形式 http://
[base]
name=CentOS-$releasever - Base
failovermethod=priority
baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7

本地yum file:///
[[email protected] ~]# vim /etc/yum.repos.d/y.repo 一定以.repo结尾 查看本地YUM
[y]
name=y
baseurl=file:///mnt mnt文件内有我镜像所有文件 但是mnt原本是空的
enabled=1
gpgcheck=0

进入yum源放置的文件夹
[[email protected] ~]# cd /etc/yum.repos.d/
[[email protected] yum.repos.d]# ls
rhel-source.repo y.repo—本地yum

软件包组管理:
yum search 包名关键字 搜索这个软件
yum –y update 包名 升级这个包
yum –y remove 包名 卸载 卸载一个包 会把所有的依赖包全部卸载

YUM软件组管理命令:
Yum grouplist 列出所有可用的软件组列表
Yum groupinstall “软件组名” 安装指定软件组
Yum groupremove 软件组名 卸载指定软件组
挂载--->把设备的资源 放到某个目录下
[[email protected] ~]# mount /dev/cdrom /mnt/
mount: block device /dev/sr0 is write-protected, mounting read-o{}nly
[[email protected] ~]# ll /mnt/

不习惯Linux的CLI命令界面 安装一个GUI图形界面
[[email protected] ~]# yum groupinstall -y "X Window System" Desktop //安装Xwindow
[[email protected] ~]# startx //启用

三种安装方式:
install groupinstall localinstall
httpd--->install 单一服务 一个软件 比较小
groupinstall--->图形界面 X windows-->比较大的安装包(有很多的安装程序)
localinstall--->和ftp-yum 结合使用

上传和下载--->服务器作为文件共享服务 下载一个源码包到windows 怎么把它上传到虚拟机上?
1.软件 WinSCP--windows端 免费 和Xshell一样--->文件夹--->把源码包拖进去
2.命令(软件) --Linux端
[[email protected] ~]# yum install -y lrzsz
上传rz
下载sz

以上是关于硬嗑HarmonyOS开篇之Linux内核的主要内容,如果未能解决你的问题,请参考以下文章

内核解读之内存管理开篇介绍

linux开篇

HarmonyOS之bytrace命令的使用

20160216自学Linux_硬件基础+历史+入门基础开篇

20160216自学Linux_硬件基础+历史+入门基础开篇

linu学习笔记--进程基础