linux
Linux系统家族中下哪些系统比较好用?
一、Linux系统家族中下哪些系统比较好用?
1. 前言
图形子系统是linux系统中比较复杂的子系统之一:对下,它要管理形态各异的、性能各异的显示相关的器件;对上,它要向应用程序提供易用的、友好的、功能强大的图形用户界面(GUI)。因此,它是linux系统中少有的、和用户空间程序(甚至是用户)息息相关的一个子系统。
本文是图形子系统分析文章的第一篇,也是提纲挈领的一篇,将会从整体上,对linux显示子系统做一个简单的概述,进而罗列出显示子系统的软件构成,后续的文章将会围绕这些软件一一展开分析。
注1:本文所有的描述将以原生linux系统为例(如Ubuntu、Debian等),对其它基于linux的系统(如Android),部分内容会不适用。
注2:本文很多图片都是从网上搜集而来的(很多是从维基百科)。虽然蜗窝的宗旨是用自己的语言表述,尽量自己画图,但是linux图形子系统太复杂了,蜗蜗的理解有限,而老外的图画的实在太好了哈哈哈。
【文章福利】小编推荐自己的Linux内核源码交流群:【869634926】整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!!!前50名可进群领取,并额外赠送一份价值600的内核资料包(含视频教程、电子书、实战项目及代码)!
学习直通车:Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈
2. 概念介绍
2.1 GUI(Graphical User Interface,图形用户界面)
linux图形子系统的本质,是提供图形化的人机交互(human-computer interaction)界面,也即常说的GUI(Graphical User Interface)。而人机交互的本质,是人脑通过人的输出设备(动作、声音等),控制电脑的输入设备,电脑经过一系列的处理后,经由电脑的输出设备将结果输出,人脑再通过人的输入设备接收电脑的输出,最终实现“人脑<-->电脑”之间的人机交互。下面一幅摘自维基百科的图片(可从“这里”查看比较清晰的SVG格式的原始图片),对上述过程做了很好的总结:
该图以一个非常前卫的应用场景----虚拟现实(VR,Virtual Reality)游戏,说明了以图形化为主的人机交互过程:
1)人脑通过动作、声音(对人脑而言,是output),控制电脑的输入设备,包括键盘、鼠标、操作杆、麦克风、游戏手柄(包含加速度计、陀螺仪等传感器)。2)电脑通过输入设备,接收人脑的指令,这些指令经过kernel Input subsystem、Middleware Gesture/Speech recognition等软件的处理,转换成应用程序(Game)可以识别的、有意义的信息。3)应用程序(Game)根据输入信息,做出相应的反馈,主要包括图像和声音。对VR游戏而言,可能需要3D rendering,这可以借助openGL及其相应的用户空间driver实现。4)应用程序的反馈,经由kernel的Video subsystem(如DRM/KMS)、audio subsystem(如ALSA),输出到电脑的输出设备上,包括显示设备(2D/3D)、扬声器/耳机(3D Positional Audio)、游戏手柄(力的反馈)等。5)输出到显示设备上时,可能会经过图形加速模块(Graphics accelerator)。
注3:图中提到了VR场景的典型帧率(1280×800@95fps for VR),这是一个非常庞大的信息输出,要求图形子系统能10.5ms的时间内,生成并输出一帧,以RGBA的数据格式为例,每秒需要处理的数据量是1280x800x95x4x8=3.11296Gb,压力和挑战是相当大的(更不用提1080P了)。
2.2 Windowing system(窗口系统)
窗口系统,是GUI的一种(也是当前计算机设备、智能设备广泛使用的一种),以WIMP (windows、icons、menus、pointer) 的形式,提供人机交互接口。Linux系统中有很多窗口系统的实现,如X Window System、Wayland、Android SurfaceFlinger等,虽然形态各异,但思路大致相同,包含如下要点:
1)一般都使用client-server架构,server(称作display server,或者windows server、compositor等等)管理所有输入设备,以及用于输出的显示设备。2)应用程序作为display server的一个client,在自己窗口(window)中运行,并绘制自己的GUI。3)client的绘图请求,都会提交给display server,display server响应并处理这些请求,以一定的规则混合、叠加,最终在有限的输出资源上(屏幕),显示多个应用程序的GUI。3)display server和自己的client之间,通过某种类型的通信协议交互,该通信协议通常称作display server protocol。4)display server protocol可以是基于网络的,甚至是网络透明的(network transparent),如X Window System所使用的。也可以是其它类型的,如Android SurfaceFlinger所使用的binder。
有关Windowing system的详细解释,请参考:https://en.wikipedia.org/wiki/Windowing_system。
2.3 X Window System
似乎终于要进入正题了。
X Window System是Windowing System一种实现,广泛使用于UNIX-like的操作系统上(当然也包括Linux系统),由MIT(Massachusetts Institute of Technology,麻省理工学院)在1984年发布。下图(可从“这里”查看比较清晰的SVG格式的原始图片)是它的典型架构:
1)X Window System简称X,或者X11,或者X-Windows。之所以称作X,是因为在字母表中X位于W之后,而W是MIT在X之前所使用的GUI系统。之所以称作X11,是因为在1987年的时候,X Window System已经进化到第11个版本了,后续所有的X,都是基于X11版本发展而来的(变动不是很大)。为了方便,后续我们都以X代指X Window System。2)X最初是由http://X.org(XOrg Foundation)维护,后来基于X11R6发展出来了最初专门给Intel X86架构PC使用的X,称作XFree86(提供X服务,它是自由的,它是基于Intel的PC平台)。而后XFree86发展成为几乎适用于所有类UNIX操作系统的X Window系统,因此在相当长的一段时间里,XFree86也是X的代名词。再后来,从2004年的时候,XFree86不再遵从GPL许可证发行,导致许多发行套件不再使用XFree86,转而使用Xorg,再加上Xorg在X维护工作上又趋于活跃,现在Xorg由成为X的代名词(具体可参考“http://www.x.org/”)。3)X设计之初,制定了很多原则,其中一条----"It is as important to decide what a system is not as to decide what it is”,决定了X的“性格”,即:X只提供实现GUI环境的基本框架,如定义protocol、在显示设备上绘制基本的图形单元(点、线、面等等)、和鼠标键盘等输入设备交互、等等。它并没有实现UI设计所需的button、menu、window title-bar styles等元素,而是由第三方的应用程序提供。这就是Unix的哲学:只做我应该做、必须做的事情。这就是这么多年来,X能保持稳定的原因。也是Linux OS界面百花齐放(不统一)的原因,各有利弊吧,后续文章会展开讨论。4)X包括X server和X client,它们之间通过X protocol通信。5)X server接收X clients的显示请求,并输出到显示设备上,同时,会把输入设备的输入事件,转递给相应的X client。X server一般以daemon进程的形式存在。6)X protocol是网络透明(network-transparently)的,也就是说,server和client可以位于同一台机器上的同一个操作系统中,也可以位于不同机器上的不同操作系统中(因此X是跨平台的)。这为远端GUI登录提供了便利,如上面图片所示的运行于remote computer 的terminal emulator,但它却可以被user computer的鼠标键盘控制,以及可以输出到user computer的显示器上。注4:这种情况下,user computer充当server的角色,remote computer是client,有点别扭,需要仔细品味一下(管理输入设备和显示设备的是server)。7)X将protocol封装为命令原语(X command primitives),以库的形式(xlib或者xcb)向client提供接口。X client(即应用程序)利用这些API,可以向X server发起2D(或3D,通过GLX等扩展,后面会介绍)的绘图请求。
2.4 窗口管理器、GUI工具集、桌面环境及其它
前面讲过,X作为Windowing system中的一种,只提供了实现GUI环境的基本框架,其它的UI设计所需的button、menu、window title-bar styles等基本元素,则是由第三方的应用程序提供。这些应用程序主要包括:窗口管理器(window manager)、GUI工具集(GUI widget toolkit)和桌面环境(desktop environment)。
窗口管理器负责控制应用程序窗口(application windows)的布局和外观,使每个应用程序窗口尽量以统一、一致的方式呈现给用户,如针对X的最简单的窗口管理程序--twm(Tab Window Manager)。
GUI工具集是Windowing system之上的进一步的封装。还是以X为例,它通过xlib提供给应用程序的API,仅仅可以绘制基本的图形单元(点、线、面等等),这些基本的图形单元,要组合成复杂的应用程序,还有很多很多细碎、繁杂的任务要做。因此,一些特定的操作系统,会在X的基础上,封装出一些更为便利的GUI接口,方便应用程序使用,如Microwindows、GTK+、QT等等。
桌面环境是应用程序级别的封装,通过提供一系列界面一致、操作方式一致的应用程序,使系统以更为友好的方式向用户提供服务。Linux系统比较主流的桌面环境包括GNOME、KDE等等。
2.5 3D渲染、硬件加速、OpenGL及其它
渲染(Render)在电脑绘图中,是指:用软件从模型生成图像的过程。模型是用严格定义的语言或者数据结构对于三维物体的描述,它包括几何、视点、纹理以及照明信息。图像是数字图像或者位图图像。
上面的定义摘录自“百度百科”,它是着重提及“三维物体”,也就是我们常说的3D渲染。其实我们在GUI编程中习以为常的点、线、矩形等等的绘制,也是渲染的过程中,只不过是2D渲染。2D渲染面临的计算复杂度和性能问题没有3D厉害,因此渲染一般都是指3D渲染。
在计算机中,2D渲染一般是由CPU完成(也可以由专门的硬件模块完成)。3D渲染也可以由CPU完成,但面临性能问题,因此大多数平台都会使用单独硬件模块(GPU或者显卡)负责3D渲染。这种通过特定功能的硬件模块,来处理那些CPU不擅长的事务的方法,称作硬件加速(Hardware acceleration),相应的硬件模块,就是硬件加速模块。
众所周知,硬件设备是多种多样的,为了方便应用程序的开发,需要一个稳定的、最好是跨平台的API,定义渲染有关的行为和动作。OpenGL(Open Graphics Library)就是这类API的一种,也是最为广泛接纳的一种。
虽然OpenGL只是一个API,但由于3D绘图的复杂性,它也是相当的复杂的。不过,归根结底,它的目的有两个:
1)对上,屏蔽硬件细节,为应用程序提供相对稳定的、平台无关的3D图像处理API(当然,也可以是2D)。2)对下,指引硬件相关的驱动软件,实现3D图像处理相关的功能。
另外,openGL的一个重要特性,是独立于操作系统和窗口系统而存在的,具体可以参考后面软件框架相关的章节。
3. 软件框架
通过第2章的介绍,linux系统中图形有关的软件层次已经呼之欲出,具体如下:
该层次图中大部分的内容,已经在第2章解释过了,这里再补充说明一下:
1)该图片没有体现3D渲染、硬件加速等有关的内容,而这些内容却是当下移动互联、智能化等产品比较关注的地方,也是linux平台相对薄弱的环节。后续会在软件框架有关的内容中再着重说明。2)从层次结构的角度看,linux图形子系统是比较清晰的,但牵涉到每个层次上的实现的时候,就比较复杂了,因为有太多的选择了,这可归因于“提供机制,而非策略”的Unix软件准则。该准则为类Unix平台软件的多样性、针对性做出了很大的贡献,但在今天这种各类平台趋于整合的大趋势下,过多的实现会导致用户体验的不一致、开发者开发精力分散等弊端,值得我们思考。3)虽然图形子系统的层次比较多,但不同的人可能关注的内容不太一样。例如对Linux系统工程师(驱动&中间件)而言,比较关注hardware、kernel和display server这三个层次。而对Application工程师来说,可能更比较关心GUI Toolkits。本文以及后续display subsystem的文章,主要以Linux系统工程师的视角,focus在hardware、kernel和display server(可能包括windows manager)上面。
以X window为例,将hardware、kernel和display server展开如下(可从“这里”查看比较清晰的SVG格式的原始图片):
对于软件架构而言,这张来自维基百科的图片并不是特别合适,因为它包含了太多的细节,从而显得有些杂乱。不过瑕不掩瑜,对本文的描述,也足够了。从向到下,图中包括如下的软件的软件模块:
1)3D-game engine、Applications和Toolkits,应用软件,其中3D-game engine是3D application的一个特例。2)Display Server图片给出了两个display server:Wayland compositor和X-Server(http://X.Org)。X-Server是linux系统在PC时代使用比较广泛的display server,而Wayland compositor则是新设计的,计划在移动时代取代X-Server的一个新的display server。3)libX/libXCB和libwayland-clientdisplay server提供给Application(或者GUI Toolkits)的、访问server所提供功能的API。libX/libXCB对应X-server,libwayland-client对已Wayland compositor。4)libGLlibGL是openGL接口的实现,3D application(如这里的3D-game engine)可以直接调用libGL进行3D渲染。libGL可以是各种不同类型的openGL实现,如openGL(for PC场景)、openGL|ES(for嵌入式场景)、openVG(for Flash、SVG矢量图)。libGL的实现,既可以是基于软件的,也可以是基于硬件的。其中Mesa 3D是OpenGL的一个开源本的实现,支持3D硬件加速。5)libDRM和kernel DRMDRI(Direct Render Infrastructure)的kernel实现,及其library。X-server或者Mesa 3D,可以通过DRI的接口,直接访问底层的图形设备(如GPU等)。6)KMS(Kernel Mode Set)一个用于控制显示设备属性的内核driver,如显示分辨率等。直接由X-server控制。
4. 后续工作
本文有点像一个大杂烩,丢进去太多的东西,每个东西又不能细说。觉得说了很多,又觉得什么都没有说。后续蜗蜗将有针对性的,focus在某些点上面,更进一步的分析,思路如下:
1)将会把显示框架限定到某个确定的实现上,初步计划是:Wayland client+Wayland compositor+Mesa+DRM+KMS,因为它们之中,除了Mesa之外,其它的都是linux系统中显示有关的比较前沿的技术。当然,最重要的,是比较适合移动端的技术。2)通过单独的一篇文章,更详细的分析Wayland+Mesa+DRM+KMS的软件框架,着重分析图像送显、3D渲染、Direct render的过程,以此总结出DRM的功能和工作流程。3)之后,把重心拉回kernel部分,主要包括DRM和KMS,当然,也会顺带介绍framebuffer。4)kernel部分分析完毕后,回到Wayland,主要关心它的功能、使用方式等等。5)其它的,边学、边写、边看吧。
上文介绍了linux图形子系统基本的软件框架,以及GUI、Windowing system、3D渲染等基本概念。
我觉得,DRI在当前(或者说将来)的linux图形子系统中,有着举足轻重的地位,甚至可以说是新的linux图形框架核心思想的体现。本文将基于linux图形框架的发展历程,从Why、What和How三个角度,介绍DRI框架。
5.为什么需要DRI
在GUI环境中,一个Application想要将自身的UI界面呈现给用户,需要2个步骤:
1)根据实际情况,将UI绘制出来,以一定的格式,保存在buffer中。该过程就是常说的“Rendering”。不知道为什么,wowo一直觉得“Render”这个英文单词太专业、太抽象了,理解起来有些困难。时间久了,也就不再执著了,看到它时,就想象一下内存中的图像数据(RGB或YUV格式),Rendering就是生成它们的过程。通常来说,Rendering有多种表现形式,但可归结为如下几类:a)2D的点、线、面等绘图,例如,“通过一个for循环,生成一个大小为640x480、格式为RGB888、填充颜色为红色的矩形框”,就是一个2D rendering的例子。b)3D渲染。该过程牵涉比较复杂的专业知识,这里先不举例了。c)图片、视频等多媒体解码。d)字体渲染,例如直接从字库中抽出。
2)将保存在buffer中的UI数据,显示在display device上。该过程一般称作“送显”。
然后问题就来了:这两个步骤中,display server要承担什么样的角色?回答这个问题之前,我们需要知道这样的一个理念:
在操作系统中,Application不应该直接访问硬件,通常的软件框架是(从上到下):Application<---->Service<---->Driver<---->Hardware。这样考虑的原因主要有二:安全性和共享硬件资源(例如显示设备只有一个,却有多个应用想要显示)。
对稍微有经验的软件开发人员(特别是系统工程师和驱动工程师)来说,这种理念就像杀人偿命、欠债还钱一样天经地义。但直到X server+3D出现之后,一切都不好了。因为X server大喊的着:“让我来!”,给出了这样的框架:
先不考虑上面的GLX、Utah GLX等术语,我们只需要理解一点即可:基于OpenGL的3D program需要进行3D rendering的时候,需要通过X server的一个扩展(GLX),请求X server帮忙处理。X server再通过底层的driver(位于用户空间),通过kernel,访问硬件(如GPU)。其它普通的2D rendering,如2D绘图、字体等,则直接请求X server帮忙完成。
看着不错哦,完全满足上面的理念。但计算机游戏、图形设备硬件等开发人员不乐意了:请让我们直接访问硬件!因为很多高性能的图形设备,要求相应的应用程序直接访问硬件,才能实现性能最优[1]。
好像每个人都是对的,怎么办?妥协的结果是,为3D Rendering另起炉灶,给出一个直接访问硬件的框架,DRI就应运而生了,如下:
上面好像讲的都是Rendering有关的内容,那送显呢?还是由display server统一处理比较好,因为显示设备是有限的,多个应用程序的多个界面都要争取这有限的资源,server会统一管理、叠加并显示到屏幕上。而这里叠加的过程,通常称作合成(Compositor)。
6.软件架构
DRI是因3D而生,但它却不仅仅是为3D而存在,这背后涉及了最近Linux图形系统设计思路的转变,即:
从以前的:X serve是宇宙的中心,其它的接口都要和我对话。转变为:Linux kernel及其组件为中心,X server(如Wayland compositor等)只是角落里的一员,可有可无。
最终,基于DRI的linux图形系统如下
该框架以基于Wayland的Windowing system为例,描述了linux graphic系统在DRI框架下,通过两条路径(DRM和KMS),分别实现Rendering和送显两个显示步骤。从应用的角度,显示流程是:
1)Application(如3D game)根据用户动作,需要重绘界面,此时它会通过OpenGL|ES、EGL等接口,将一系列的绘图请求,提交给GPU。
a)OpenGL|ES、EGL的实现,可以有多种形式,这里以Mesa 3D为例,所有的3D rendering请求,都会经过该软件库,它会根据实际情况,通过硬件或者软件的方式,响应Application的rendering请求。b)当系统存在基于DRI的硬件rendering机制时,Mesa 3D会通过libGL-meas-DRI,调用DRI提供的rendering功能。c)libGL-meas-DRI会调用libdrm,libdrm会通过ioctl调用kernel态的DRI驱动,这里称作DRM(Direct Rendering Module)。d)kernel的DRM模块,最终通过GPU完成rendering动作。
2)GPU绘制完成后,将rendering的结果返回给Application。
rendering的结果是以image buffer的形式返回给应用程序。
3)Application将这些绘制完成的图像buffer(可能不知一个)送给Wayland compositor,Wayland compositor会控制硬件,将buffer显示到屏幕上。
Wayland compositor会搜集系统Applications送来的所有image buffers,并处理buffer在屏幕上的坐标、叠加方式后,直接通过ioctl,交给kernel KMS(kernel mode setting)模块,该模块会控制显示控制器将图像显示到具体的显示设备上。
7.DRM和KMS
DRM是Direct Rendering Module的缩写,是DRI框架在kernel中的实现,负责管理GPU(或显卡,graphics card)及相应的graphics memory,主要功能有二:
1)统一管理、调度多个应用程序向显卡发送的命令请求,可以类比为管理CPU资源的进程管理(process management)模块。
2)统一管理显示有关的memory(memory可以是GPU专用的,也可以是system ram划给GPU的,后一种方法在嵌入式系统比较常用),该功能由GEM(Graphics Execution Manager)模块实现,主要包括:
a) 允许用户空间程序创建、管理、销毁video memory对象(称作“"GEM objects”,以handle为句柄)。b)允许不同用户空间程序共享同一个"GEM objects”(需要将不唯一的handle转换为同一个driver唯一的GEM name,后续使用dma buf)。c)处理CPU和GPU之间内存一致性的问题。d)video memory都在kernel管理,便于给到display controller进行送显(Application只需要把句柄通过Wayland Compositor递给kernel即可,kernel会自行获取memory及其内容)。
KMS是Kernel Mode Setting的缩写,也称作Atomic KMS,它是一个在linux 4.2版本的kernel上,才最终定性的技术。从字面意义上理解,它要实现的功能比较简单,即:显示模式(display mode)的设置,包括屏幕分辨率(resolution)、颜色深的(color depth)、屏幕刷新率(refresh rate)等等。一般来说,是通过控制display controller的来实现上述功能的。
也许大家会有疑问:这些功能和DRI有什么关系?说实话,关系不大,之所以要在DRI框架里面提及KMS,完全是历史原因,导致KMS的代码,放到DRM中实现了。目前的kernel版本(如4.2之后),KMS和DRM基本上没有什么逻辑耦合(除了代码位于相同目录,以及通过相同的设备节点提供ioctl之外),可以当做独立模块看待。
参考文档[1]: https://en.wikipedia.org/wiki/Direct_Rendering_Infrastructure[2]: https://en.wikipedia.org/wiki/Wayland_(display_server_protocol)[3]: http://wayland.freedesktop.org/architecture.html[4]: Linux_kernel_and_daemons_with_exclusive_access.svg[5]: Wayland_display_server_protocol.svg
相关文章视频推荐:
深度:一文看懂Linux内核!Linux内核架构和工作原理详解
超细节!十年码农讲述Linux网络新技术基石——eBPF and XDP
【详细整理】数字通信中的同步技术:帧同步、载波同步、位同步 (建议收藏)
面对秋招,你准备好了吗?|简历梳理|offer选择|嵌入式开发|底层原理|Linux内核|驱动开发|架构师_哔哩哔哩_bilibili(版权归原作者所有,侵删)
二、CentOS 家族——Linux 操作系统的优秀分支
CentOS 家族是一个备受推崇的 Linux 操作系统分支,以其稳定性、安全性和兼容性而闻名于世。本文将介绍 CentOS 家族成员、特点以及它们在企业和个人用户中的应用。
什么是 CentOS 家族?
CentOS 家族是基于 Red Hat Enterprise Linux (RHEL) 源代码的一系列开源免费操作系统。它包含了一些精心挑选的软件包,提供了类似于 RHEL 的功能和特性,同时也具备了自身的一些独特之处。
CentOS 家族成员
当前,CentOS 家族主要有三个主要成员:
- CentOS Linux:最受欢迎的 CentOS 家族成员,为用户提供一个稳定、安全且易于管理的操作系统。它广泛应用于企业服务器、Web 服务器、数据库服务器以及个人电脑。
- CentOS Stream:CentOS Stream 是一个连续发布的发行版,它为用户提供了更即时的软件更新。开发人员和技术爱好者可以使用 CentOS Stream 提前体验最新的功能和特性。
- CentOS Atomic Host:CentOS Atomic Host 是一个用于容器化应用的精简操作系统。它专为部署容器集群场景而设计,提供了一个轻量级、高度安全、易于管理的环境。
CentOS 家族的特点
CentOS 家族有以下几个重要特点:
- CentOS 家族是开源免费的,用户可以免费获得并自由使用、分发和修改这些操作系统。
- CentOS 家族以稳定性为特点,经过严格测试和验证的软件包保证了系统的可靠性和长期支持。
- CentOS 家族具备与 RHEL 相同的软件兼容性和开发生态,用户可以无缝迁移和在两个系统之间共享软件。
- CentOS 家族的社区庞大活跃,用户可以从社区中获取技术支持以及分享和交流使用经验。
CentOS 家族的应用
由于其稳定性和兼容性,CentOS 家族在企业和个人用户中被广泛应用:
- 企业服务器:CentOS Linux 是企业级服务器的首选操作系统之一。它提供了强大的安全性和稳定性,能够满足企业对性能和可靠性的严格要求。
- Web 服务器:许多网站和云服务商选择 CentOS Linux 作为其 Web 服务器的操作系统。它提供了卓越的性能和稳定性,能够应对高流量和大规模的访问请求。
- 数据库服务器:CentOS Linux 作为数据库服务器操作系统,能够提供卓越的性能和数据安全性。它广泛地支持各种关系型数据库管理系统。
- 个人电脑:CentOS Linux 也适用于个人用户,提供了强大的桌面环境和丰富的应用程序。它可以替代传统的商业操作系统,给用户带来更好的体验。
总之,CentOS 家族作为一个优秀的 Linux 操作系统分支,以其稳定性、安全性和兼容性在用户中享有盛誉。无论是企业用户还是个人用户,都可以从 CentOS 家族中找到适合自己的操作系统,满足各种需求。
感谢您阅读本文,相信通过了解 CentOS 家族的成员、特点和应用,您能更好地理解并选择适合���己的操作系统,获得更好的使用体验。
三、Linux--Arch Linux安装?
原来默认是编译适合编译的主机运行的二进制文件,改为"ARCH=arm""CROSS_COMPILE = arm-linux-"表示用交叉编译工具
四、曾国藩家族的家族?
父亲曾麟书
曾麟书(1790年10月9日—1857年2月4日),派名毓济,字竹亭, 是曾玉屏的长子。曾麟书自幼受到其父曾玉屏的严格家训,指望他通过读书获取功名,但他天资愚钝,平生虽勤劳于学,考过十次童试,但都名落孙山,直至43岁那年,参加第17次乡试,才以得补县学生员, 获“大界曾氏”几百年来第一个秀才,曾氏家族自此科门大开。他自知才短,无望跻身仕途的更高阶梯,遂发愤教育督促诸子,曾麟书很重视对其子弟的基础教育,督课非常耐心细致。常对曾国藩等人说:“吾固钝拙,训告尔辈钝者,不以为烦苦也。”曾国藩兄弟五人,从小就在其严格训导之下刻苦读书,打下了较为扎实的家学根底。曾麟书反复告诫其子弟,读书是为了光大曾家门弟,是为了尽忠报国,是为了做一个明理君子。
叔父曾骥云
曾骥云是曾玉屏的第三子,一生于功名不得志,一直在乡间协助父亲和兄长主理家事。他一生无所出,后兄长曾麟书将第三子曾国华过继给他。
四弟曾国潢
曾国潢,原名国英,字澄侯,为曾国藩大弟,因在族兄弟中排行第四,故曾国藩依族谱称其“四弟”。曾国潢天分不高,曾国藩劝其不必求取功名,专心在家主理家事即可。曾国潢遵循兄长的教诲,协助父亲与叔父管理家务,将家里打点得井然有序。
六弟曾国华
曾国华,字温甫,为曾国藩二弟,因在族兄弟中排行第六,故曾国藩依族谱称其“六弟”。因叔父曾骥云无子,曾国华出生后过继给叔父为子。咸丰五年在乡办团练,当湘军被困于江西时,他率军赴赣解围。咸丰十月十日,曾国华于三河镇“力战,死之”“骸未收”。清廷悯惜国华忠烈,特旨赐谥“愍烈”。
九弟曾国荃
曾国荃,字沅甫,号叔纯,又名子植,为曾国藩三弟,因在族兄弟中排行第九,故曾国藩依族谱称其“九弟”。曾国荃为湘军主要将领之一,因善于挖壕围城有“曾铁桶”之称。早年随兄曾国藩筹建湘军,咸丰六年起独领一军,因攻打太平军“有功”赏“伟勇巴图鲁”名号和一品顶戴。同治三年以破城“功”加太子少保,封一等伯爵。同治间与郭嵩焘等修纂《湖南通志》。后历任陕西、山西巡抚,署两广总督。光绪十年署礼部尚书、两江总督兼通商事务大臣。光绪十五年加太子太保衔。翌年,卒于位,谥“忠襄”。
季弟曾国葆
曾国葆,字季洪,又字事恒,为曾国藩最小的弟弟。因悲愤兄国华战殁于三河镇,曾国葆在1859年加入湘军作战且改名为曾贞干,于讨剿太平天国“包围南京”之前哨战以寡击众,大破各路来援李秀成
五、诛仙手游家族系统详解:家族成员福利、家族建设和家族活动
家族系统介绍
《诛仙手游》作为一款角色扮演类的手机游戏,引入了家族系统,玩家可以通过加入家族和参与家族活动来获得一定的福利和乐趣。
家族成员福利
家族成员可以在家族商店中购买到一些珍稀物品,并且在家族副本中获得丰厚的奖励。此外,家族成员之间可以互相协助,共同提升实力。
家族建设
家族可以通过家族建设来提升家族等级,解锁更多的家族福利,并且可以在家族领地中种植资源,为家族成员提供收益。
家族活动
家族还会定期举办一些家族活动,比如家族boss挑战、家族联赛等,参与活动可以获得丰厚的奖励,同时也能增进家族成员之间的团结和交流。
通过加入家族,玩家不仅可以获得游戏内的各种福利和乐趣,还能结识更多志同道合的游戏伙伴,共同体验游戏的精彩之处。
感谢您阅读本文,希望对您了解《诛仙手游》家族系统有所帮助。
六、快乐家族?
还是匿了吧,毕竟很怂~
何老师,维嘉,海涛,吴昕我觉得都很好。以前看的时候就很心疼海涛和吴昕,站在角落里,没事,一些小缺点时不时就被拉出来diss,两位的路越来越好~
何老师~很喜欢,到处圆场,也是蛮厉害的
维嘉,嗯,不争不抢的感觉,嘉爷也是很厉害的,有梗接梗,主持这方面很服。
最后一位,可能是个人不喜欢那种风格吧,虽然这是个娱乐节目,但是在我看来有点疯疯癫癫的感觉…而且不知道从什么时候开始,cue到那位就会提到现在的老公…甚至还有她的那个外号。回来之后看了几期,“一孕傻三年”吧…
不好意思,我说了自己的看法,希望她的粉丝别喷我
peace&love
七、arm linux和linux的区别?
相对于ARM linux,我们说的普通linux指的是X86 linux,他们都是linux系统,但是由于ARM和X86是不同的CPU架构,他们的指令集不同,所以软件编译环境不同,软件代码一般不能互用,一般需要进行兼容性移植。
X86是经典的CISC指令集,指令集复杂,功能多,串行执行,但是也意味着执行效率低下,但性价比突出,所以称为民用终端的主流处理器内置指令集。Intel和AMD的家用处理器都是X86指令集。以X86为代表的CISC,理论并发线程1-2条。ARM是Advanced RISC Machine 的缩写。它的指令集比RISC还要精简。通常使用ARM架构处理器的机型,多为嵌入式或者便携机。主频通常不高,现在高通公司的ARM架构处理器有1.0GHz的,已经算相当高了。另外,ARM 7沿用冯·诺依曼结构;而从ARM 9以后,就都采用了哈佛结构。ARM的并发线程,理论上有4条左右,处理效率较X86高不少。八、linux+linux如何共享磁盘?
1、首先打开电脑的虚拟机,再打开物理机的虚拟网卡。
2、然后选择虚拟机的连接方式为nat,再开启两台Linux虚拟机,然后检查ip地址。
3、然后更改两台虚拟机的ip地址,在设置ip地址为手动。
4、然后配置ip地址,再重新启动网卡服务。
5、然后查看ip地址的更改情况,再用ping命令进行检查连通性。
九、宝塔linux面板与linux区别?
linux是一个操作系统,像windows,安卓,ios都是操作系统。
“宝塔linux面板”是指用于linux操作系统的服务器软件管理配置面板,宝塔是该面板的软件名称。宝塔可以用来安装web服务器、开发语言、数据库、安全功能,等等
十、Linux Kernel (Linux内核)怎么安装?
1、下载新内核源码:到官网www.kernel.org,下载最新版本linux内核,保存到/usr/src/kernels目录,大约54MB。
2、#cd/usr/src/kernels
3、#tarjvxflinux-2.6.31.5.tar.bz2
4、进入系统原内核目录,把其中的隐藏文件.config复制到新内核目录中。
5、cd进入新内核目录,然后执行#makeoldconfig 此时所有提示均按回车,选项提示都默认。
6、#makexconfig此时弹出一个内核配置窗口,里面全是英文,我看不懂,干脆就直接把这个窗口关掉,继续往下做。
7、#makebzImage&&makemodules&&makemodules_install&&makeinstall第七步编译时间比较长,要30到50分钟不等,要看机器情况了。
8、#uname-r查看内核版本,完成上面步骤后就可以重启系统了,启动时会在GRUB菜单里出现新内核选项了。 此方法安装新内核后同时也会保留旧内核,启动时,可以在新老内核间选择,相当的实用
热点信息
-
在Python中,要查看函数的用法,可以使用以下方法: 1. 使用内置函数help():在Python交互式环境中,可以直接输入help(函数名)来获取函数的帮助文档。例如,...
-
一、java 连接数据库 在当今信息时代,Java 是一种广泛应用的编程语言,尤其在与数据库进行交互的过程中发挥着重要作用。无论是在企业级应用开发还是...
-
一、idea连接mysql数据库 php connect_error) { die("连接失败: " . $conn->connect_error);}echo "成功连接到MySQL数据库!";// 关闭连接$conn->close();?> 二、idea连接mysql数据库连...
-
要在Python中安装modbus-tk库,您可以按照以下步骤进行操作: 1. 确保您已经安装了Python解释器。您可以从Python官方网站(https://www.python.org)下载和安装最新版本...