Linux入门教程,从0开始

​​​​​​​​​​​

基础入门

        操作系统

                操作系统是计算机最基本的系统软件,它负责管理计算机硬件资源,提供基本操作接口,并负责管理和控制计算机的各种硬件和软件资源。操作系统是用户和计算机硬件之间的接口,它提供了许多基本的系统服务,如进程管理、内存管理、文件管理、设备管理等。此外,操作系统还提供了许多重要的功能,如并发性、虚拟化、容错性和安全性等,以确保计算机系统的稳定性和可靠性。不同的操作系统有不同的特点和功能,它们适用于不同的应用场景和需求。常见的操作系统包括Windows、Linux、macOS等。

        Linux

                Linux是一种开源的类Unix操作系统内核,最早由芬兰计算机科学家Linus Torvalds于1991年开发。Linux内核是构建在Unix操作系统设计原理的基础上,以开放源代码的方式发布,允许用户自由使用、修改和分发。

                Linux操作系统具有以下特点

  1. 开源性:Linux操作系统的内核和大部分组件都是开源的,用户可以自由查看、修改和分发代码,促进了技术共享和协作。
  2. 多样性:由于Linux内核的开源性,许多不同的Linux发行版(如Ubuntu、Fedora、CentOS等)根据自己的需求和目标构建了自己的Linux操作系统,以适应各种应用场景。
  3. 稳定性和安全性:Linux操作系统在设计上注重稳定性和安全性,在服务器和嵌入式系统等关键领域广泛应用。开放的编程环境也促进了广大技术人员对Linux系统的安全性进行审核和测试,使其更加可靠。
  4. 高度可定制性:Linux操作系统允许用户根据自己的需求和偏好进行自定义和配置,从底层内核选项到用户界面都可以进行灵活调整。
  5.  大型开发社区:Linux拥有庞大的用户和开发者社区,用户可以从社区中获取技术支持和解决方案,分享和共享经验。

Linux已广泛应用于各个领域,包括服务器、嵌入式系统、移动设备、超级计算机等。它成为了世界上最流行的开源操作系统之一,并为许多人提供了无费且可定制的操作系统解决方案。

        虚拟机

作为一名新人,我相信大家电脑肯定都是window系统,或者是苹果电脑的mac系统,应该很少有人使用Linux系统吧,如果给电脑安装Linux系统,那么大家日常使用电脑肯定受影响。所以有了虚拟机,可以在一台物理计算机上通过软件模拟出多台虚拟计算机,每台虚拟机都具有自己的操作系统、应用程序以及资源。虚拟机可以提供一种隔离的环境,在同一台物理计算机上运行多个操作系统和软件,实现虚拟化技术。

Linux入门

       Linux的起源和发展历史

        Linux是一种基于Unix的开源操作系统,由芬兰计算机科学家Linus Torvalds于1991年首次发布。

  • 1969年:Unix操作系统由AT&T贝尔实验室的Ken Thompson和Dennis Ritchie开发。
  • 1983年:Richard Stallman发起自由软件运动,并创建了GNU计划,旨在开发一个完全自由的操作系统。
  • 1991年:Linus Torvalds发布了Linux内核的第一个版本,基于Unix的设计理念,并采用C语言编写。
  • 1992年:Linux内核与GNU计划相结合,诞生了第一个完整的Linux操作系统。
  • 1990年代中期:Linux开始在服务器领域得到广泛应用,同时也逐渐在个人电脑市场上崛起。
  • 2000年代:Linux在服务器领域占据主导地位,并开始进入嵌入式设备、移动设备和超级计算机等领域。
  • 2010年代:Linux成为了全球最受欢迎的操作系统之一,广泛应用于云计算、大数据、物联网等领域。

Linux的发展历程是一个不断演进的过程,从最初的Unix操作系统到GNU计划,再到Linus Torvalds发布Linux内核,经历了一系列的发展和改进,最终成为了今天全球最受欢迎的操作系统之一。 

Linux基础指令

1.  文件操作指令:
     -  ls:列出目录中的文件和子目录。
     -  cd:更改当前目录。
     -  pwd:打印当前工作目录。
     -  mkdir:创建新目录。
     -  rmdir:删除空目录。
     -  rm:删除文件或目录。
     -  cp:复制文件或目录。
     -  mv:移动文件或目录。
     -  touch:创建文件。

2.  系统管理指令:
     -  shutdown:关闭系统。
     -  reboot:重启系统。
     -  logout:注销用户。

3.  文件查看指令:
     -  cat:查看文件内容。
     -  more:分屏查看文件内容。
     -  less:分屏查看文件内容。
     -  tail:查看文件尾部内容。
     -  grep:查找文件中包含指定字符串的行。

4.  压缩与解压缩指令:
     -  gzip:压缩文件。
     -  unzip:解压压缩文件。
     -  rar:压缩和解压文件。
     -  zip:压缩文件。

5.  网络操作指令:
     -  ifconfig:查看和配置网络接口。
     -  ping:测试网络连通性。
     -  traceroute:显示数据包在网络上的路径。
     -  netstat:查看网络状态信息。

6.  文件权限指令:
     -  chmod:修改文件或目录的权限。
     -  chown:修改文件或目录的所有者。

7.  用户管理指令:
     -  useradd:创建用户。
     -  userdel:删除用户。
     -  usermod:修改用户信息。
     -  passwd:修改用户密码。

8.  系统日志指令:
     -  dmesg:查看系统内核缓冲区的消息。
     -  tail:查看日志文件。
     -  grep:在日志文件中查找指定内容。

  9.   文件查找指令:
       -   find:在指定目录下查找文件。
       -   locate:快速查找文件和目录。
       -   updatedb:维护数据库,用于加速locate命令的查询速度。

10.  文本处理指令:
       -   wc:统计文件的行数、词数和字节数。
       -    tail:查看文件尾部内容。
       -   head:查看文件头部内容。
       -   grep:查找文件中包含指定字符串的行。
       -   sed:流编辑器,用于对文本文件进行处理。
       -   AWK:文本分析工具,用于处理文本数据。

11.  系统性能测试指令:
       -   ping:测试网络连通性。
       -   df:查看磁盘空间使用情况。
       -   du:查看文件和目录占用的磁盘空间。
       -   vmstat:查看系统虚拟内存状态。
       -   iostat:查看系统磁盘I/O状态。

12.  软件包管理指令:
       -   rpm:RPM包管理器,用于安装、卸载和管理Linux软件包。
       -   yum:基于RPM的软件包管理器,用于安装、卸载和管理Linux软件包。
       -    apt:Debian和Ubuntu软件包管理器,用于安装、卸载和管理Linux软件包。

13.  系统安全指令:
       -   ssh:安全远程登录。
       -   scp:安全复制文件。
       -   sudo:以其他用户身份执行命令。
       -   chmod:修改文件和目录的权限。

14.  图形界面指令:
       -   startx:启动图形界面。
       -   startkde:启动KDE桌面环境。
       -   startxfce4:启动Xfce桌面环境。

有人可能看的云里雾里,但没事,我随机挑几个指令实验给大家看

大家看,我输入ls,终端就会列出目录中的文件和子目录。

那么为什么要指令呢,这个打开看看就知道有哪些文件了。注意!!!这是Ubuntu,可视化界面,如果是xshell呢!

这是一块米联客开发板,开机后只有终端,没有可视化界面。

普通的嵌入式系统是没用可视化界面的,我们不会指令,便寸步难行。

 Linux操作系统的组成

Linux操作系统主要是由四大部分组成

  • 内核
  • shell
  • 文件系统
  • 应用程序

他们关系见上图,随便画画,将就看看吧奥,别挑剔了奥

我来解释一下啥叫内核

Linux内核是Linux操作系统最核心的部分,它负责管理系统的基本资源和提供用户接口。它是操作系统的核心,管理进程、内存、文件和设备等资源,并控制硬件和软件之间的交互。

我们用的是4.19版本的内核

通过编译,可以做成镜像

就是这个东西啦。

Linux内核源码

arch

架构相关目录

block块设备相关目录
crypto加密相关目录
documentation文档目录
drivers

驱动目录

firmeare固件目录
fs

文件系统目录

include头文件相关目录
init初始化相关目录
kernel内核相关目录

重点讲一下arch和drivers文件,其他自己去看,实在不行有documentation文件供参考

arch文件夹存放了不同架构的相关代码和配置文件,随便打开一个

我打开了arm和loongarch架构,arm现在是市场主流架构,loongarch是国产架构。注意看,所有架构都包含,boot,config,kernel,lib,kconfig文件或目录。这些文件有什么作用,自己百度去,太多了,我讲不过来……

接下来我们看看drivers文件

Linux内核的drivers文件夹是用来存放不同硬件设备的驱动程序的文件夹。这个文件夹包含了多个子文件夹,每个子文件夹代表了一种类型的硬件设备或者设备驱动程序的框架。

例如,drivers/net子文件夹包含了网络设备的驱动程序,drivers/usb子文件夹包含了USB设备的驱动程序,drivers/gpio子文件夹包含了GPIO设备的驱动程序等等。

在每个子文件夹中,还可能存在多个子文件夹,用来区分不同的硬件品牌或者型号。比如,在drivers/net子文件夹中,可以找到ethernet子文件夹,再进入ethernet子文件夹,可以看到多个文件夹,每个文件夹代表了一种不同的以太网卡驱动程序。

此外,drivers文件夹中还有一些重要的文件如Makefile、Kconfig、Kbuild等,用于编译和配置驱动程序。

Linux内核的drivers文件夹是一个包含了各种硬件设备驱动程序的目录,用于支持不同类型的硬件设备的正常运行。这个很重要,为什么重要呢?因为我觉得!

Linux文件系统

Linux的文件系统层次结构定义了在Linux操作系统中,各个文件和目录的组织结构。这个层次结构是一个树形结构,从根目录开始,包含了多个目录和子目录,以及文件和链接等。

以下是Linux文件系统层次结构的主要目录:

  •  /:根目录,包含了整个文件系统的根。
  •  bin:二进制可执行文件,包含了常用的系统命令。
  •  boot:引导加载程序的配置文件和静态文件。
  • dev:设备文件,包含了系统中的各种设备文件和设备驱动程序。
  • etc:系统配置文件和目录,包含了系统的各种配置文件和子目录,如网络配置、用户配置等。
  • home:用户主目录,包含了系统中每个用户的主目录。
  • lib:共享库文件,包含了系统和应用程序所需的共享库文件。
  • media:可移动媒体设备的挂载点,用于挂载光盘、USB驱动器等可移动设备。
  • mnt:临时挂载点,用于临时挂载其他文件系统。
  • opt:可选应用程序软件包的安装目录。
  • proc:虚拟文件系统,提供了内核和进程的信息。
  • root:超级用户(root用户)的主目录。
  • sbin:系统二进制可执行文件,包含了系统管理员使用的命令。
  • tmp:临时文件目录,包含了各种临时文件。
  • usr:UNIX软件资源目录,包含了系统的共享文件、库文件、头文件以及应用程序。
  • var:可变数据目录,包含了系统运行时生成的文件、日志文件等。

这些目录及其子目录的组织方式和内容是根据Linux标准文件系统层次结构(Filesystem Hierarchy Standard,FHS)来定义的,以保证不同的Linux发行版在文件系统组织上的一致性。

Linux软链接和硬链接

刚刚介绍了那么多文件,他们肯定要连接的,接下来我们介绍一下Linux连接

硬链接

在Linux中,硬链接(hard link)是一种特殊的文件连接方式,可以创建多个文件名指向同一个inode(索引节点),从而共享同一份数据和元数据。与软链接不同,硬链接不受原始文件的更改或删除的影响。

创建硬链接的命令是`ln`,使用`-l`选项。以下是创建硬链接的示例:

ln 原始文件 硬链接文件名

注意,原始文件和硬链接文件必须位于同一文件系统

我们删除了文件1时候,文件2不会受影响,同理文件2被删,文件1也不会受影响。

软链接

Linux软链接(symbolic link)是一种特殊类型的文件,也称为符号链接或软链接。它是一种指向另一个文件或目录的路径,允许用户通过软链接来访问和操作目标文件或目录。

软链接文件通常以符号链接的特殊文件扩展名(通常是`.lnk`或`~`)结尾。创建软链接的命令是`ln`。可以使用以下命令创建软链接:

ln -s 目标文件(或目录) 软链接文件名

其实文件2只是文件1的一个快捷方式,它指向的是文件1,所以显示的是 文件1 的内容,但其实文件2的inode与文件1并不相同。如果我们删除了 文件2的话,文件1是不会受影响的,但如果删除文件1的话,文件2会变成死链接,因为指向的文件不见了。

Linux用户和权限管理

基本上分成两种用户,一种是普通用户,还有一种是超级用户,也就是root。废话不多说直接上图

我们在虚拟机打开一个终端

注意看Ubuntu前面名称,uisrc就是普通用户,当然也可以叫其他名字,除了root

如果更换成超级用户,指令前加sudo,或者登录上去

ps:登录前一定要记得注册哦!

makefile

makefile文件主要是调用make工具,编译文件,通常一个文件夹下就有几十个文件甚至是几十个文件夹​​​​​​​,看下图,我只是打开其中一个,其实还有几千个文件夹,就问你多不多!

 如果挨个对此进行编译,比如编译hello.c文件,我们就需要运行指令

gcc -c hello.c -o hello.o

全部编译成功再做成镜像,估计没个几十个小时,你出不来的。所以我们就用到了makefile文件,把需要编译的文件或者文件夹都放进去,就简单很多。

shell

        shell介绍

shell是一种命令解释器,是用户与计算机操作系统进行交互的一种方式,它接受用户的命令,并将其转化为操作系统能够理解和执行的形式,shell命令和Linux指令是一样的东西。Shell也可以是一种脚本语言,允许用户编写一系列的命令和操作,以便自动化任务和批量任务。

        shell脚本作用

镜像肯定要进行编译,编译肯定要有相应的步骤,如果一步一步运行,肯定耗时耗力,打个比方,我们编译内核,通常编译内核要编译内容

  • * 内核源代码
  • * 内核模块
  • * 内核压缩文件(用于安装到目标设备)

这些内容编译步骤肯定不能一步到位,而且指令复杂,使用极不方便。

这时候如果我们拥有脚本,就可以很方便运行了。比如

只需要输入指令make_kernel.sh即可实现内核编译。当然,make_kernel.sh文件需要自己编写。

至于如何编写,自己去菜鸟教程学习,一天搞定。

Linux系统管理

Linux系统管理是指对Linux操作系统进行配置、维护、监控和优化的过程。它包括了对硬件、软件、网络和用户等方面进行管理。

以下是一些Linux系统管理任务:

1. 用户管理:创建、删除和管理用户账户,设置用户权限和所有权。
2. 软件包管理:安装、升级和删除软件包,管理软件库。
3. 系统配置:配置系统参数,如时区、网络设置、文件系统挂载点等。
4. 网络管理:配置和管理网络接口、路由、防火墙等。
5. 文件系统管理:管理磁盘空间创建和删除文件系统、挂载和卸载文件系统。
6. 性能监控:监控系统资源使用情况,如CPU、内存、磁盘和网络使用情况。
7. 安全管理:配置和监控系统安全,如防火墙、加密和访问控制等。

Linux系统管理可以通过命令行工具、图形化界面或第三方软件来实现。例如,使用`useradd`命令可以创建用户账户使用`yum`命令可以安装软件包,使用`/etc/init.d/services`可以管理服务,使用`top`命令可以监控系统性能,使用`ssh`命令可以远程连接到服务器等。

Linux系统管理对于维护Linux操作系统的稳定性和安全性非常重要。它可以让管理员更好地控制和监视系统,并及时发现和解决潜在的问题。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值