Skip to content

面向纯小白的Linux入门生存技能

Linux是一种开源的操作系统,是一种类Unix操作系统。它的内核由林纳斯·托瓦兹(Linus Torvalds)在1991年首次发布。Linux是自由软件和开源软件的代表,它的源代码可以自由获取、自由传播、自由修改。Linux的内核是Linux Torvalds开发的,但是Linux系统中包含了大量的GNU软件,因此Linux系统通常被称为GNU/Linux系统。

如果我们以研究Linux为目的,那么这无疑是一本天书;好在我们只为学习ROS机器人操作系统,所以我们只需掌握基本的Linux命令即可。也就是说,我们以“操作”Linux为目的,而不是以“研究”Linux为目的;目前只学与ROS开发必不可少的Linux技能。在日后的使用中,大家可以根据自己的需要,循序渐进。要记得随时请教我们自己的AI顾问:topic.fit.

>>>本节课程我们将按照工作步骤顺序的逻辑,一步一步地推演、学习Linux的基本操作<<<

按照工序,我们首先得有一个安装好Linux的电脑吧?那么第一件事,我们就是要学会如何安装Linux系统。而且我们上来就学习非常有极客范儿的方式:把Linux安装到优盘里,作为我们的随身操作系统。只要有宿主计算机,我们就能引导进入我们的随身Linux操作系统,开展我们的黑客编程。

01. Linux系统的U盘安装

1.1 理论基础知识:Linux操作系统的引导

以下内容来自于《2.2.3 開機流程中的 BIOS 與 UEFI 開機檢測程式》,为了读起来方便,我搬运到此:

BIOS 搭配 MBR/GPT 的開機流程

計算機概論裡面我們有談到那個可愛的BIOS與CMOS兩個東西, CMOS是記錄各項硬體參數且嵌入在主機板上面的儲存器,BIOS則是一個寫入到主機板上的一個韌體(再次說明, 韌體就是寫入到硬體上的一個軟體程式)。這個BIOS就是在開機的時候,電腦系統會主動執行的第一個程式了!

接下來BIOS會去分析電腦裡面有哪些儲存設備,我們以硬碟為例,BIOS會依據使用者的設定去取得能夠開機的硬碟, 並且到該硬碟裡面去讀取第一個磁區的MBR位置。 MBR這個僅有446 bytes的硬碟容量裡面會放置最基本的開機管理程式, 此時BIOS就功成圓滿,而接下來就是MBR內的開機管理程式的工作了。

這個開機管理程式的目的是在載入(load)核心檔案, 由於開機管理程式是作業系統在安裝的時候所提供的,所以他會認識硬碟內的檔案系統格式,因此就能夠讀取核心檔案, 然後接下來就是核心檔案的工作,開機管理程式與 BIOS 也功成圓滿,將之後的工作就交給大家所知道的作業系統啦!

簡單的說,整個開機流程到作業系統之前的動作應該是這樣的:

  1. BIOS:開機主動執行的韌體,會認識第一個可開機的裝置;
  2. MBR:第一個可開機裝置的第一個磁區內的主要開機記錄區塊,內含開機管理程式;
  3. 開機管理程式(boot loader):一支可讀取核心檔案來執行的軟體;
  4. 核心檔案:開始作業系統的功能...

第二點要注意,如果你的分割表為 GPT 格式的話,那麼 BIOS 也能夠從 LBA0 的 MBR 相容區塊讀取第一階段的開機管理程式碼, 如果你的開機管理程式能夠認識 GPT 的話,那麼使用 BIOS 同樣可以讀取到正確的作業系統核心喔!換句話說, 如果開機管理程式不懂 GPT ,例如 Windows XP 的環境,那自然就無法讀取核心檔案,開機就失敗了!

由上面的說明我們會知道,BIOS與MBR都是硬體本身會支援的功能,至於Boot loader則是作業系統安裝在MBR上面的一套軟體了。由於MBR僅有446 bytes而已,因此這個開機管理程式是非常小而美的。 這個boot loader的主要任務有底下這些項目:

  • 提供選單:使用者可以選擇不同的開機項目,這也是多重開機的重要功能!
  • 載入核心檔案:直接指向可開機的ls:列出目录内容。 cd:切换当前工作目录。 pwd:显示当前的工作目录。 mkdir 和 rmdir:创建和删除目录。 cp 和 mv:复制和移动文件或目录。 rm:删除文件或目录。程式區段來開始作業系統;
  • 轉交其他loader:將開機管理功能轉交給其他loader負責。

上面前兩點還容易理解,但是第三點很有趣喔!那表示你的電腦系統裡面可能具有兩個以上的開機管理程式呢! 有可能嗎?我們的硬碟不是只有一個MBR而已?是沒錯啦!但是開機管理程式除了可以安裝在MBR之外, 還可以安裝在每個分割槽的開機磁區(boot sector)喔!瞎密?分割槽還有各別的開機磁區喔? 沒錯啊!這個特色才能造就『多重開機』的功能啊!

我們舉一個例子來說,假設你的個人電腦只有一個硬碟,裡面切成四個分割槽,其中第一、二分割槽分別安裝了Windows及Linux, 你要如何在開機的時候選擇用Windows還是Linux開機呢?假設MBR內安裝的是可同時認識Windows/Linux作業系統的開機管理程式, 那麼整個流程可以圖示如下:

開機管理程式的工作執行示意圖

在上圖中我們可以發現,MBR的開機管理程式提供兩個選單,選單一(M1)可以直接載入Windows的核心檔案來開機; 選單二(M2)則是將開機管理工作交給第二個分割槽的開機磁區(boot sector)。當使用者在開機的時候選擇選單二時, 那麼整個開機管理工作就會交給第二分割槽的開機管理程式了。 當第二個開機管理程式啟動後,該開機管理程式內(上圖中)僅有一個開機選單,因此就能夠使用Linux的核心檔案來開機囉。 這就是多重開機的工作情況啦!我們將上圖作個總結:

  • 每個分割槽都擁有自己的開機磁區(boot sector)
  • 圖中的系統槽為第一及第二分割槽,
  • 實際可開機的核心檔案是放置到各分割槽內的!
  • loader只會認識自己的系統槽內的可開機核心檔案,以及其他loader而已;
  • loader可直接指向或者是間接將管理權轉交給另一個管理程式。

那現在請你想一想,為什麼人家常常說:『如果要安裝多重開機, 最好先安裝Windows再安裝Linux』呢?這是因為:

  • Linux在安裝的時候,你可以選擇將開機管理程式安裝在MBR或各別分割槽的開機磁區, 而且Linux的loader可以手動設定選單(就是上圖的M1, M2...),所以你可以在Linux的boot loader裡面加入Windows開機的選項;

  • Windows在安裝的時候,他的安裝程式會主動的覆蓋掉MBR以及自己所在分割槽的開機磁區,你沒有選擇的機會, 而且他沒有讓我們自己選擇選單的功能。

因此,如果先安裝Linux再安裝Windows的話,那MBR的開機管理程式就只會有Windows的項目,而不會有Linux的項目 (因為原本在MBR內的Linux的開機管理程式就會被覆蓋掉)。 那需要重新安裝Linux一次嗎?當然不需要,你只要用盡各種方法來處理MBR的內容即可。 例如利用Linux的救援模式來挽救MBR啊!

课后作业1

1.2 实践操作:安装Linux到U盘

@指导教师 课后要在此处补充若干贴图,包括:

  1. 关键步骤的照片;
  2. 热火朝天的实验现场(记得要动漫化处理,以保护个人隐私);
  3. 实验结果的截图。

课堂带着做

  • 安装好Ubuntu后的第一件事是给系统的超级管理员账户root设置密码。此处是两个试验:(1)设置密码;(2)账户切换。

02. Linux系统的基命令行操作

2.1 理论基础知识:Linux的文件系统层次结构标准

文件系统层次结构标准(Filesystem Hierarchy Standard, FHS)是新手入门第一个拦路虎,因为它对程序的文件组织逻辑与我们日常使用的windows系统有很大的不同。我们需要了解Linux的文件系统层次结构标准,才能更好地理解Linux系统的文件组织结构。这方面的知识在《鸟哥的Linux私房菜》中有非常系统的讲解(《5.3 Linux目錄配置》),此处,我按照与我们的密切程度依次罗列:

第一梯队——我们每天日常操作都要打交道的目录:

  1. /bin:二进制文件(可执行程序);
  2. /etc:配置文件(对程序的设置);
  3. /usr:用户程序(Unix Software Resource,放置用户安装的软件相关资源。展开介绍);

第二梯队——我们开发程序时要打交道的目录:

  1. /media:媒体设备(如U盘、光盘等);
  2. /mnt:挂载点(挂载设备的目录);
  3. /dev:设备文件(设备文件,如磁盘、串口等);

第三梯队——我们修复程序运行错误时要打交道的目录:

  1. /lib:库文件(程序运行时需要的库文件);
  2. /var:变量文件(程序运行时产生的变量文件);
  3. /tmp:临时文件(程序运行时产生的临时文件);

第三梯队——重要,但是我们较少打交道的目录:

  1. /根目录;
  2. /boot:启动文件(出于礼貌介绍一下,但日常用户很少打交道);
  3. /opt:可选文件(某些第三方会建议用户安装程序到此文件夹下);

2.2 实践操作:用命令浏览Linux的几个关键目录

课堂自行探索

  1. ls命令查看第一梯队目录下的文件;
  2. 尝试随便删除一些关键程序文件;
  3. 自学、阅读/proc, /sys, /var, /usr, /tmp, /log 等目录的作用.
  4. 探索要点——结合《5.3 Linux目錄配置》的内容,理解上面_课堂实操任务_中的操作。

03. 用户切换 & 文件权限管理

3.1 普通用户和超级用户

课堂演示

  • susudo命令的使用。

3.2 文件权限管理

chown, chmod命令的使用。

课堂带着做

  1. 指令式hello world
  2. 脚本程序的hello world
  3. chmod命令修改文件权限。
  4. 改变文件权限,以使:自己的普通用户执行不了、只能用超级用户执行的脚本程序。
  5. 软连接的创建、执行、查看链接路径。

3.3 命令行的帮助程序

课堂自行探索

  • 用帮助程序man查看命令的使用说明。并学会延时17秒关机。

课后作业2

  • 编写shell脚本程序,打印从1到33的所有数字,每行显示一个数字。
  • 下堂课向我实机演示。

04. 课程任务

  • 学生作业:本次课程有两个作业,请用Ctrl+F查找“课后作业”关键字,找到作业内容。
  • 导师作业:
    1. [x] 用更优雅的方式,以Vue的方式、用css类实现flex box居中布局。
    2. [ ] 将真实照片进行卡通化的处理方法(以保护个人隐私)。
    3. [x] 在局域网中搭建Linux服务器,并提供随堂课程笔记的服务。