最近在复习嵌入式Linux的基础知识,为了巩固学习,我决定写一篇博文,方便自己的同时也方便他人。
一、什么是Linux?
这里需要从贝尔实验室的UNIX说起。
1969年,AT&T公司的贝尔实验室与MIT合作开发的Unix,旨在创建一个用于大型、并行、多用户的操作系统。
Unix的推广是从校园走进企业
那时候的版本主要有两个:
AT&T System V ——就是俗称的“系统5”
Berkley Software Distribution (BSD)
下面是Unix家庭树👇
Linux是一种操作系统。
1991年,芬兰赫尔辛基大学的学生Linus Torvals为了能让在家的PC机使用跟学校一样的操作系统开始编写了类UNIX.
1991.8.25,Linus就在comp.os.minix新闻 组中首次发布了一个Linux内核的公共版 本。
最初Linus编写的程序只适用于Intel386处理器,且不能移 植。由于人们的鼓励,继续编写可移植的Linux系统。
之后,就有越来越多的计算机爱好者、程序员通过网络参 与到Linux系统的不断完善之中。通过社区、邮件列表、 论坛、WIKI等。
- Linux可以做什么?
①个人桌面系统
- 管理桌面(菜单、图标、窗口等)
- 听音乐、看视频
- 使用文字处理、电子表格等办公软件
- 浏览网页、发送电子邮件
- 网络聊天
- 玩游戏等等
②系统服务器
- 连接Internet网络
- 使用Linux作为防火墙、路由器和DHCP服务器来保护和管理专用网络
- 运行WEB服务器(Apache、MySQL和PHP)
- 运行邮件服务器(使用exim或其他邮件传输代理)
- 运行打印服务器(使用CUPS)
- 运行文件服务器(使用FTP、samba、NFS)
③嵌入式系统
嵌入式以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
二、为什么Linux如此出色?
它有出色的特性:
- 自由、免费、开源
- 无需不停的重新引导
- 在不干扰其他服务器的情况下启动或停止服务
- 软件的可移植性
- 可下载的应用程序——绿色软件
- 没有隐藏在代码或寄存器中的设置
- 成熟的桌面系统:GNOME、KDE、X Window
- 不受病毒的困扰
三、Linux操作系统的组件👇
Linux内核
内核是Linux系统的最底层,提供了系统的核心功能并允许进程以一种有序的方式访问硬件。
用于控制进程、输入、输出设备、文件系统操作、管理内存。
不需要用户参与,系统自动完成
Linux内核支持多用户、多任务模式运行
多用户:同时有多个用户访问系统
多任务:某个时刻有多个程序运行
Linux内核是为特定硬件构建的
能够支持Linux的主要的CPU架构 I386/ ARM/PPC/MIPS
下载内核地址👇
http://www.kernel.org (内核官方网站)
wget http://kernel.org/pub/linux/kernel/...
wget http://kernel.org/.../.../linux-*.bz2.sign
gpg –verify linux-2.xx.tar.bz2.sign
tar jxvf linux-2.xx.tar.bz2 ftp://166.111.8.229/ (教育网内)
四、Shell命令
Shell是一个命令行解释器,它使得用户能够与操作系统进行交互
shell类型:Bourne Shell(最早的Shell)、C Shell、Ksh、Z Shell
实用程序:
- 图形用户界面(GUI)——X window、KDE、GNOME
- 管理程序(控制中心):设置桌面系统的外观、功能、行为、感觉等
- 应用程序:Linux中可以安装的应用程序有很多很多。Openoffice、firefox、Gaim、XPlay等
- 编辑工具:包括用来创建专业接口的应用程序和库的编辑应用程序GCC,Java Elcalisp
- 配置服务器
shell就是我们的控制终端,贝壳,shell主要起到保护内核与解析用户控制指令的作用
想查看Ubuntu系统的shell是什么类型:
me@ubuntu:~$ echo $SHELL
/bin/bash
me@ubuntu:~$ ll /bin/sh
lrwxrwxrwx 1 root root 4 Dec 13 22:22 /bin/sh -> dash*
me@ubuntu:~$
shell命令格式: 命令 选项 参数
ls -al filename
普通 ls 显示当前文件夹下面的文件与文件,不显示隐藏文件或这文件夹
ls -a 显示所有的文件夹文件夹,包括隐藏的
ls -l 显示当前文件夹下面的文件与文件的详细信息,一表格形式显示
ls -l 文件名
ls -l 文件夹名
/etc/netplan
命令行提示符:me @ ubuntu : ~ $
登录的用户名称 分隔符 主机名字 分隔符 目录名 权限
~是主目录的缩写 $--普通用户权限
/home/me #--超级管理员权限 root
普通用户权限 :只能操作自己的文件
超级管理员权限 :能操作所有人的文件
五、vim—老牌文本编辑工具
vi——Linux编辑器
vi是Linux中最基本的编辑器,虽然不像图形 界面编辑器那样美观,没有使用鼠标那样方便。 但vi编辑器在系统管理、服务器配置工作中永远都 是无可替代的。一旦图形桌面系统崩溃,vi也许就 是惟一可以依靠的编辑器了。
①vi—开始编辑
新增(append)
--a 从光标所在位置后面开始新增资料,光标后的资料随新增资料向后移动。
--A 从光标所在列最后面的地方开始新增资料
插入(insert)
--i 从光标所在位置前面开始插入资料,光标后的资料随新增资料向后移动
--I 从光标列的第1个非空白字符前面开始插入资料
开始(open)
--o 在光标所在列下新增1列并进入输入模式
--O在光标所在列上方新增1列并进入输入模式
②vi—删除与修改
x 删除光标所在位置
dd 删除光标所在行
r 修改光标所在字符,r后接着要修正的字符
R 进入取代状态,新增资料会覆盖原来资料,直到按【ESC】回到指定模式下为止
s 删除光标所在字符,并进入输入模式
S 删除光标所在列,并进入输入模式
③vi—退出命令
<:q> 不保存退出
<:q!> 不保存强制性退出
<:w> 保存编辑
<:w filename> 存入文件filename中
<:w! filename> 强制性存入文件filename中
<:wq>(<:x>) 保存并退出
④vi—光标移动命令
<b> 移动到当前单词的开始
<e> 移动到当前单词的结尾
<w> 向前移动1个单词
<h> 向前移动1个字符
<j> 向上移动1行
<k> 向下移动1行
<l> 向后移动1个字符
⑤vi—改变与替换操作命令
<r> 替换光标所在的字符
<R> 替换字符序列
<cw> 替换1个单词
<ce>同<cw>
<cb> 替换光标所在的前1字符
<c$> 替换自光标位置至行尾的所有字符
<C>同<c$>
<cc> 替换当前行
⑥拷贝与粘贴命令
</yw> 将光标所在单词拷入剪贴板
<y$> 将光标至行尾的字符拷入剪贴板
<Y>同 <y$>
<yy> 将当前行拷入剪贴板
<p> 将剪贴板中的内容粘贴在光标后
<P> 将剪贴板中的内容粘贴在光标前
六、流行的两种软件包管理机制
最初,基于Linux系统的开发者在完成应用程序开发后,将 很多二进制文件发给用户,用户使用之前需要将很多程序 逐个安装。
因此,Debian Linux首先提出“软件包”的管理机制—— Deb软件包,将应用程序的二进制文件、配置文档、 man/info帮助页面等文件合并打包在一个文件中,用户使 用软件包管理器直接操作软件包,完成获取、安装、卸载、 查询等操作。
随即,Redhat Linux基于这个理念推出了自己的软件包管 理机制——Rpm软件包。当然,Redhat采用了自己的打包 格式生成Rpm包文件,由Rpm包管理器负责安装、维护、 查询,甚至是软件包版本管理。不过,由于Redhat Linux系 统的普及,Rpm软件包被广泛使用。甚至出现第三方开发 的软件管理工具,专门管理Rpm格式的软件包。
随着Linux操作系统规模的不断扩大,系统中软件 包间复杂的依赖关系,导致Linux用户麻烦不断。
Debian Linux开发出了APT软件包管理器。
检查和修复软件包依赖关系
利用Internet网络帮助用户主动获取软件包
APT工具再次促进了Deb软件包更为广泛地使用, 成为Debian Linux的一个无法替代的亮点
6.1 软件包的类型
Debian包文件包含了二进制可执行文件、库文件、配置文 件和man/info帮助页面等文档。通常Debian包文件的后缀为 “.deb” ,因此称为“Deb软件包” 。Ubuntu有两种类型的 软件包:二进制软件包(deb)和源码包(deb-src)
二进制软件包(Binary Packages):它包含可执行文件、库文件、 配置文件、man/info页面、版权声明和其它文档。
源码包(Source Packages):包含软件源代码、版本修改说明、构 建指令以及编译工具等。先由tar工具归档为.tar.gz文件,然后再打 包成.dsc文件。
在用户不确定一个软件包类型时,可以使用file命令查看文件类型。例 如下面命令用于证实一个软件包的文件类型是否是Deb软件包文件
wdl@UbuntuFisher:~$ file g++_4.1.2-9ubuntu2_i386.deb g++_4.1.2-9ubuntu2_i386: Debian binary package (format 2.0)
6.2 软件包的命名
6.3 软件包的优先级
6.4
七、软件源
7.1 根据软件包的开发组织对该软件的支持程度,以及遵从的开源程度,划分为如 下四类:
核心(Main):官方维护的开源软件,是由Ubuntu官方完全支持的软件, 包括大多数流行的、稳定的开源软件,是Ubuntu默认安装的基本软件包;
公共(Universe):社区维护的开源软件,是由Ubuntu社区的计算机爱 好者维护的软件,是Linux世界中完全自由和开源部分,包括了绝大多数的开 源软件。这些软件都是以“Main”中的软件包为基础,编写而成,因此不会与 “Main”软件包发生冲突。但是这些软件包没有安全升级的保障。用户在使用 Universe软件包时,需要考虑这些软件包存在的不稳定性;
受限(Restricted):官方维护的非开源软件,是专供特殊用途,而且 没有自由软件版权,不能直接修改软件,但依然被Ubuntu团队支持的软件;
多元化(Multiverse):非Ubuntu官方维护的非开源软件,是指那些非 自由软件,通常不能被修改和更新,用户使用这些软件包时,需要特别注意版 权问题
7.2 根据软件包的必要性和安全性,将软件包从另一个角度划分为四类:
安全更新(Security): 稳定的、安全的软件包,是必须要安装的;
最新更新(Updates): 最新完成的更新软件包,建议安装的;
推荐更新(Proposed):提前释放出的更新,处于alpha测试阶段的软件包;
修补性更新(Backports):在Ubuntn旧版本中部分地添加新功能,该类软件包无任何技术支持