清单

清单

嵌入式Linux操作系统 期末复习知识清单

复习指南说明:本文档根据思维导图、期末重点和题型总结而成,涵盖5章内容,突出高频考点和典型题目。建议重点掌握Shell编程、Linux命令和嵌入式开发工具。


第1章 嵌入式Linux操作系统简介

核心概念(常见考点:选择、填空)

1.1 嵌入式系统定义与特征

  • 定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统
  • 三个基本要素:嵌入性、专用性、计算机系统性
  • 高频题型:简答"什么是嵌入式系统?",填空三个要素

1.2 嵌入式Linux操作系统的优势

✓ 支持多种体系结构
✓ 多任务、内核稳定、可定制、源代码开放
✓ 强大的网络支持功能
✓ 支持多文件系统(FAT32、EXT2/3、ROMFS、JFFS)
✓ 驱动丰富,支持大量外设
✓ 具备完整工具链(gcc、make、gdb)

典型考题:列举5个或以上优势

1.3 Linux系统的组成(重点)

组成部分 说明
Linux内核 系统核心,管理资源
Linux Shell 命令解释器,用户与内核交互
Linux应用系统 各种应用程序
Linux文件系统 存储和组织文件

1.4 Linux内核版本与发行版本

版本号格式:r.x.y

  • r:主版本号(0-9),代表较大改动

  • x:次版本号(0-99),表示功能性改动

    • 偶数 = 稳定树;奇数 = 开发树
  • y:末版本号(0-99),表示BUG修复

例题:2.4.20是什么版本?→ 稳定内核版本(x=4为偶数)

1.5 Linux内核的五个子系统(★重点题型)

  1. 进程调度(Process Scheduling)
  2. 内存管理(Memory Management)
  3. 虚拟文件系统(Virtual File System)
  4. 网络接口(Network Interface)
  5. 进程间通信(Inter-Process Communication, IPC)

考法:简答、选择、填空题常出现

1.6 Linux内核源码结构(常考:简答、对应关系)

目录 功能说明
/arch 体系结构相关代码
/mm 内存管理代码
/init 内核初始化代码(main.c、version.c)
/fs 所有文件系统代码
/ipc 进程间通信代码
/kernel 内核管理核心代码
/include 建立内核时需要的头文件
/net 网络相关代码
/lib 库代码

1.7 国产操作系统(选择、填空常考)

  • 深度Linux(deepin)
  • 安超OS
  • 优麒麟(UbuntuKylin)
  • 中标麒麟(NeoKylin)
  • 红旗Linux
  • AliOS
  • openEuler(华为)
  • 鸿蒙OS(Harmony OS) ←最新、最常考

第2章 Linux常用命令(20-30分重点)

2.1 Shell基础知识(选择题常考)

  • # = 超级用户root的提示符
  • $ = 普通用户的提示符

2.2 用户系统相关命令

su – 用户切换命令

su root          # 切换到root用户
su - user1       # 切换到user1(加载环境变量)

磁盘相关命令(★高频考点)

fdisk -l         # 查看磁盘分区信息
du               # 查看目录/文件大小
df               # 查看文件系统磁盘使用情况
free             # 查看内存使用情况

mount – 磁盘挂载命令(★考点)

格式mount [-t vfstype] [-o options] device dir

常用参数解析

参数 说明
-t vfstype 指定文件系统类型
-o options 挂接方式选项
device 要挂接的设备
dir 挂接点

常用vfstype

  • iso9660(光盘)
  • msdos(DOS FAT16)
  • vfat(Windows FAT32)
  • ntfs(Windows NT)
  • nfs(网络文件系统)
  • smbfs(Windows网络共享)

常用options

  • loop(把文件当硬盘挂接)
  • ro(只读)
  • rw(读写)
  • iocharset=cp936(解决中文乱码)

典型考题:U盘挂载步骤

# 1. 查找U盘设备名
fdisk -l                              # 找到 /dev/sdb 等

# 2. 创建挂载点
mkdir -p /mnt/usb

# 3. 挂载U盘
mount /dev/sdb /mnt/usb

# 4. 如果有乱码,加字符集参数
mount /dev/sdb /mnt/usb -t vfat -o iocharset=cp936

# 5. 卸载
umount /mnt/usb

ssh远程登录命令(★考点)

基础语法ssh [-p port_number] username@hostname

参数 说明
-p port_number 指定端口(默认22)
username 登录用户名
hostname 服务器IP或主机名

例题

# 默认端口登录
ssh root@192.168.1.100

# 指定非默认端口
ssh -p 2222 test@47.98.1.1

# 主机名登录
ssh -p 8888 admin@server.example.com

# 等效写法
ssh -l root 192.168.1.100    # 与第一个等效

2.3 文件目录相关命令(重点)

基本命令速查表

命令 功能说明 常用选项
ls 列表显示目录 -l(详细)、-a(隐藏)、-d(仅目录)
cd 改变工作目录 cd / 、cd .. 、cd ~
mkdir 创建目录 -p(多层)、-m(权限)
touch 创建文件 (无主要选项)
file 判断文件类型 (无主要选项)
cat 显示文件内容 -n(编号)、-b(非空编号)
cp 复制文件/目录 -i(询问)、-r(递归)、-a(保留元数据)
mv 移动/重命名 -i(询问覆盖)
rm 删除文件 -f(强制)、-r(递归)
rmdir 删除空目录 -p(删除多层)
head/tail 查看文件头/尾 -n(行数)、-f(跟踪)
ln 创建链接 -s(软链接)、无则硬链接

chmod – 改变文件权限(★考点)

文字表示法chmod [who][+|-|=][mode] file

who:u(owner)、g(group)、o(others)、a(all)

mode:r(读4)、w(写2)、x(执行1)

数字表示法chmod xxx file(3位数字分别代表owner、group、others)

例题

# 只有所有者可读写执行,group可读,others无权限
chmod 740 file

# 等效的文字表示
chmod u=rwx,g=r,o= file

# 给所有者加执行权
chmod u+x file

# 去掉其他人的所有权限
chmod o= file

特殊例题:根据 -rw-r--r-- 回答权限问题

  • 第1位:-表示普通文件
  • 后9位:owner(rw-)、group(r–)、others(r–)
  • 数字表示:644

grep – 文本搜索(★高频)

grep "pattern" file          # 在文件中搜索模式
grep -n "pattern" file       # 显示行号
grep -i "pattern" file       # 不区分大小写
grep -r "pattern" /dir       # 递归搜索目录

find – 文件查找(★考点)

find /path -name "*.c"                    # 按名字查找
find /path -type f -name "*.c"           # 按类型查找(f=文件,d=目录)
find /path -name "*.c" -exec rm {} \;    # 查找并删除

例题集锦

例1:执行 ls -l​ 显示 -rw-r--r-- 1 chris chris 207 Jul 20 11:58 file

  • (1) ls -l 的功能:详细列表显示目录内容
  • (2) 文件类型:普通文件(-)
  • (3) user chris的权限:读写(rw-)
  • (4) 新加用户Tom的权限:读(r–),属于others
  • (5) 如何使所有用户都可读写执行:chmod 777 file​ 或 chmod a=rwx file

例2:复制文件操作

# 将source目录中所有文件复制到target,保留元数据,覆盖前询问
cp -i -r /home/user/source/* /home/user/target

例3:硬链接和软链接区别

ln file1 file2            # 硬链接:inode号相同
ln -s file1 file2         # 软链接:inode号不同

# 查看inode
ls -i file

# 区别:
# - 硬链接:修改文件同步变化,删除原文件,链接仍有效
# - 软链接:修改文件同步变化,如果删除原文件,链接断开

第3章 Shell编程(24分重点:6分选择+19分编程)

3.1 Shell基础(选择题常考)

Shell是什么

  • Shell:命令解释器,用户与内核的接口
  • 分类:图形界面Shell、命令行式Shell

常用Shell版本

  • sh:原始shell
  • bash:GNU shell(最常用)
  • csh、ksh:其他版本

bash的优点(★考点)

  1. 补全命令(Tab键)
  2. 通配符(*、?)
  3. 历史命令(↑↓)
  4. 别名
  5. 输入/输出重定向
  6. 管道(|)
  7. 可定制提示符

3.2 Shell编程基础(重点内容)

3.2.1 脚本基本结构

#!/bin/bash              # 第1行:指定解释器(必须)
# 注释                    # 注释行以#开头

# 脚本内容
echo "Hello World"

脚本执行的4种方式

# 方式1:没有执行权限时
bash script.sh

# 方式2:设置执行权限后直接运行(PATH环境变量中)
chmod +x script.sh
./script.sh

# 方式3:绝对路径执行
/path/to/script.sh

# 方式4:在当前Shell中执行(变量可传递到父Shell)
. script.sh
source script.sh

3.2.2 变量定义与赋值(★考点)

规则

  • 变量名以字母或下划线开头
  • 变量名大小写敏感
  • 定义时不加$,引用时加$
  • 等号两边不能有空格
  • 含空格的值用双引号或单引号括起
# 正确方式
var=10                           # 赋值
echo $var                        # 引用
var="hello world"                # 含空格的值

# 数字运算
var=$[10+5]                     # 方式1
let 'var=10+5'                  # 方式2
var=`expr 10 + 5`               # 方式3(注意+两边有空格)

# 只读变量
readonly var

# 环境变量
export PATH=$PATH:/new/path

位置参数(★高频考点)

参数 含义
$0 脚本名称
undefined… 第1、2…位置参数
$# 位置参数总数
$* 所有位置参数(整体)
$@ 所有位置参数(逐个)
shift 左移位置参数

例题:脚本接收3个参数

#!/bin/bash
if [ $# -ne 3 ]; then
    echo "Usage: $0 arg1 arg2 arg3"
    exit 1
fi
echo "参数1: $1, 参数2: $2, 参数3: $3"

3.2.3 特殊字符与引用

符号 说明 示例
" " 双引号 消除$、`、!、\的含义,其他特殊字符失效
‘ ‘ 单引号 保留所有字符的原意
反引号 执行命令并返回结果
\ 反斜线 转义,也可续行
{} 大括号 标识变量:${var}nd

例题

# 双引号可以解析$变量
MSG="Hello $USER"
echo "$MSG"          # 输出:Hello tom

# 单引号不解析$变量
MSG='Hello $USER'
echo "$MSG"          # 输出:Hello $USER

# 反引号执行命令
result=`date`
result=$(date)       # 推荐写法
echo $result

# 大括号标识变量边界
num=2
echo "This is the ${num}nd day"   # 输出:This is the 2nd day

3.3 流程控制(★重点:题目占分最多)

3.3.1 测试命令 test 或 [ ]

格式test condition​ 或 [ condition ]​(注意中括号两侧要有空格

数值运算操作符(用于比较数值):

操作符 说明
-eq 等于
-ne 不等于
-lt 小于
-le 小于等于
-gt 大于
-ge 大于等于

字符串操作符

操作符 说明
= 字符串相等
!= 字符串不相等
-z 字符串长度为0
-n 字符串长度不为0

文件操作符(★常考):

操作符 说明
-d 是否为目录
-f 是否为普通文件
-l 是否为符号链接
-r 是否可读
-w 是否可写
-x 是否可执行
-e 文件是否存在
-z 文件大小是否为0

逻辑操作符

操作符 说明 示例
&& 逻辑与 [ -d /etc ] && echo yes || echo no
|| 逻辑或 同上
! 逻辑非 [ ! -e file ]

例题

# 判断/etc是否为目录
[ -d /etc ] && echo "是目录" || echo "不是目录"

# 判断用户是否对/etc有写权限
[ -w /etc ] && echo "可写" || echo "不可写"

# 判断文件是否存在且可读
[ -e /etc/passwd ] && [ -r /etc/passwd ] && echo "存在且可读"

3.3.2 if 条件语句(★考点)

单分支

if [ condition ]; then
    statements
fi

双分支

if [ condition ]; then
    statements1
else
    statements2
fi

多分支

if [ condition1 ]; then
    statements1
elif [ condition2 ]; then
    statements2
else
    statements3
fi

考试示例:判断文件是否为0

#!/bin/bash
if [ ! -f "$1" ] || [ -z "$1" ]; then
    rm -f "$1"
    echo "File deleted"
else
    cat "$1"
fi

3.3.3 case 语句

case string in
exp1)
    commands1
    ;;
exp2)
    commands2
    ;;
*)
    default_commands
    ;;
esac

3.3.4 for 循环(★重点)

# 形式1:for循环遍历列表
for item in list; do
    commands
done

# 形式2:传统C风格for循环
for ((i=1; i<=10; i++)); do
    commands
done

# 常见用途
for file in /var/*; do
    echo "Processing $file"
done

for i in `seq 1 30`; do
    username="std0${i}"
    # 处理用户
done

3.3.5 while 和 until 循环

# while:条件为真时循环
while [ condition ]; do
    commands
done

# until:条件为真时退出循环
until [ condition ]; do
    commands
done

3.3.6 break 和 continue

for i in `seq 1 10`; do
    if [ $i -eq 5 ]; then
        continue          # 跳过当前迭代
    fi
    if [ $i -eq 8 ]; then
        break             # 退出循环
    fi
    echo $i
done

3.3.7 函数

# 定义函数
function_name() {
    commands
    return value
}

# 调用函数
function_name arg1 arg2

3.4 Shell编程典型题目(★考试重点)

题目1:判断字符设备文件并复制到/dev

#!/bin/bash
if [ ! -c "$1" ]; then
    echo "Not a character device"
    exit 1
fi
cp "$1" /dev/
echo "File copied to /dev"

知识点:-c 表示字符设备文件

题目2:计算1~n的和

#!/bin/bash
n=$1
sum=0
for ((i=1; i<=n; i++)); do
    sum=$[sum+i]
done
echo "Sum from 1 to $n is: $sum"

题目3:遍历目录并统计普通文件

#!/bin/bash
cd /var

# 向每个文件/目录问好
for FILE in /var/*; do
    echo "Hello, $(basename $FILE)"
done

# 统计普通文件数量
file_count=$(find /var -type f | wc -l)
echo "Total regular files: $file_count"

知识点:find + type f + wc -l 的组合使用

题目4:创建/删除批量用户

# ===== 创建用户脚本 create_users.sh =====
#!/bin/bash
for i in `seq 1 40`; do
    username="user$i"
    useradd -m -s /bin/bash "$username"
    echo "User $username created"
done

# ===== 删除用户脚本 delete_users.sh =====
#!/bin/bash
for i in `seq 1 40`; do
    username="user$i"
    userdel -r "$username"
    echo "User $username deleted"
done

知识点:useradd -m -s选项,seq命令的使用

题目5:处理位置参数的脚本

#!/bin/bash
if [ "$#" -ne 1 ]; then
    echo "Usage: $0 <file>"
    exit 1
fi

if [ -f "$1" ] && [ ! -z "$1" ]; then
    cat "$1"
else
    rm -f "$1"
    echo "File deleted"
fi

第4章 嵌入式Linux开发环境及工具软件(21分)

4.1 嵌入式系统移植流程(★理解题常考)

  1. 建立交叉编译环境:在宿主机上编译目标机程序
  2. 移植U-boot:启动引导程序
  3. 移植操作系统内核:系统核心
  4. 制作根文件系统:存储文件的结构
  5. 配置目标平台:网络、存储、USB等
  6. 编译程序:生成目标可执行文件
  7. 烧写程序:将程序写入目标设备

4.2 交叉编译(★常考概念)

定义:在一个平台上编译另一个平台上可运行的程序

需要原因

  • 目标平台资源有限
  • 提高开发效率
  • 增强代码可移植性

常用工具链

  • arm-linux-gcc:ARM平台交叉编译器
  • armv4l-unknown-linux-gcc:ARM v4架构编译器

4.3 vi/vim 编辑器(★选择、填空)

三种工作模式

模式 功能 进入方式 退出方式
命令模式 光标移动、删除、复制等 启动vi ESC
输入模式 输入文本 i、a、o等 ESC
末行模式 查找、替换、保存等 :(来自命令模式) ESC

常用命令

命令 功能
i/a/o 进入输入模式
h/j/k/l 左下上右移动
dd 删除当前行
yy 复制当前行
p 粘贴
/pattern 查找
:w 保存
:q 退出
:wq 保存并退出
:q! 强制退出(不保存)
:set nu 显示行号

4.4 gcc 编译器(★重点:占分最多)

编译的四个阶段

# 1. 预处理 (Preprocessing) -E
gcc -E hello.c -o hello.i         # 处理#include、#define等

# 2. 编译 (Compiling) -S
gcc -S hello.i -o hello.s         # 生成汇编代码

# 3. 汇编 (Assembling) -c
gcc -c hello.s -o hello.o         # 生成目标文件

# 4. 链接 (Linking) -o
gcc hello.o -o hello              # 生成可执行文件

# 一步到位
gcc hello.c -o hello

gcc常用选项(★考题)

选项 功能 例子
-o file 指定输出文件名 gcc hello.c -o hello
-c 只编译不链接,生成.o文件 gcc -c hello.c
-I dirname 添加头文件搜索路径 gcc -I /usr/include hello.c
-L dirname 添加库文件搜索路径 gcc -L /usr/lib hello.c
-l libname 链接库文件 gcc hello.c -lm(链接math库)
-g 生成调试信息(用于gdb) gcc -g hello.c -o hello
-O 优化编译 gcc -O2 hello.c
-Wall 显示警告信息 gcc -Wall hello.c
-static 静态链接 gcc -static hello.c

重要:数学库 libm 的链接

# math.h 中的函数需要链接 -lm
gcc hello.c -lm -o hello

典型题:解释 -o、-c、-I、-L、-l 的功能

  • -o: 指定输出文件名
  • -c: 只预处理、编译、汇编,不链接
  • -I: 在头文件搜索路径中添加目录
  • -L: 在库文件搜索路径中添加目录
  • -l: 链接库文件(省略lib前缀和.a/.so后缀)

GCC编译工作流程图

源文件(hello.c)
     ↓
[预处理] -E → hello.i (处理指令)
     ↓
[编译] -S → hello.s (汇编代码)
     ↓
[汇编] -c → hello.o (目标文件)
     ↓
[链接] -o → hello (可执行文件)

4.5 gdb 调试器(★常考)

前置条件:编译时必须加 -g 选项

启动方法

# 方法1:启动后加载程序
gdb
(gdb) file hello

# 方法2:直接启动并加载程序
gdb hello

常用命令

命令 简记 功能
step s 单步执行,进入函数
next n 单步执行,不进入函数
list l 查看源代码
print var p var 显示变量值
break 行号 b 行号 设置断点
run r 运行程序
continue c 继续执行
quit q 退出gdb

调试示例

gcc -g hello.c -o hello
gdb hello
(gdb) break main
(gdb) run
(gdb) next
(gdb) print var
(gdb) quit

4.6 make 工程管理器(★重点:常考题)

makefile 的三要素(★必考)

  1. 目标体 (target) :要生成的文件(通常是可执行文件或目标文件)
  2. 依赖文件 (dependency_file) :目标文件所依赖的文件
  3. 执行命令 (command) :生成目标文件所需的命令 (必须以TAB键开头)

makefile 语法规则

target: dependency_file1 dependency_file2 ...
	command1
	command2
	...

注意:command 行必须以TAB键开头,不能用空格

makefile 实例(★常考题)

背景:有文件 hello.c、message.c、head.h,要生成可执行文件 hello

依赖关系分析

hello → hello.o, message.o
hello.o → hello.c, head.h
message.o → message.c

makefile 内容

hello: hello.o message.o
	gcc -o hello hello.o message.o

hello.o: hello.c head.h
	gcc -c hello.c

message.o: message.c
	gcc -c message.c

clean:
	rm -f hello *.o

all.tar: hello.c message.c head.h makefile
	tar cvf all.tar hello.c message.c head.h makefile

make 命令的执行

# 生成第一个目标
make

# 生成指定目标
make hello

# 执行伪目标(清理)
make clean

# 指定配置文件
make -f mymakefile

# 生成all.tar
make all.tar

伪目标 (PHONY target)

.PHONY: clean all

clean:
	rm -f *.o hello

all: hello
	echo "Build complete"

第5章 嵌入式Linux的构建(构建、网络、NFS)

5.1 Bootloader技术(★基础概念题)

什么是Bootloader

  • 启动引导程序,负责加载操作系统内核并引导系统启动
  • 是系统启动的第一段程序代码

Bootloader的安装媒介

媒介 说明
Nor Flash 支持XIP(芯片内执行),程序可直接在Flash中运行
Nand Flash 不支持XIP,需要先加载到内存再执行

Bootloader的操作模式

  1. 启动加载模式:正常启动系统
  2. 下载模式:通过串口、网络等下载程序

常用Bootloader

  • vivi:用于ARM嵌入式系统
  • redboot:用于eCos系统
  • U-boot:最广泛使用

5.2 根文件系统(★常考概念)

什么是根文件系统

  • 特殊文件系统,内核启动时第一个挂载的文件系统
  • 包含系统运行所需的各种程序和配置文件

根文件系统中的重要目录

目录 功能
/bin, /sbin 存放二进制可执行文件
/usr/bin, /usr/sbin 用户程序和系统管理程序
/lib 链接库文件(.so, .a)
/etc 系统配置文件目录
/etc/fstab 文件系统挂载配置(启动自动装载)
/etc/inittab 系统启动解析文件
/etc/passwd 用户口令文件
/etc/shadow 密码影子文件(root可读)
/etc/profile 登录时执行的配置文件
/dev 设备文件
/proc 进程信息目录
/sys 系统信息目录

根文件系统类型

类型 说明
JFFS2 针对Nand Flash的日志型文件系统
YAFFS/YAFFS2 专为闪存优化的文件系统
cramfs 压缩只读文件系统
Romfs 只读文件系统
RAMDISK 基于内存的文件系统

5.3 BusyBox – 根文件系统构建工具(★重点)

特点:被称为"Linux工具里的瑞士军刀"

原理

  • /bin 目录下的所有命令(ls、cat等)都是指向 busybox 的符号链接
  • 一个可执行文件提供多个命令功能

使用 BusyBox 构建根文件系统的步骤

# 1. 下载并解压源码
tar jxvf busybox-1.1.0.tar.bz2
cd busybox-1.1.0

# 2. 配置
make menuconfig

# 3. 编译
make

# 4. 安装(生成_install目录)
make install

# 5. 创建必要目录
mkdir -p _install/{dev,etc,lib,proc,sys}

# 6. 创建根文件系统映像
mkcramfs _install root.cramfs

生成文件说明

  • _install/:根文件系统树
  • root.cramfs:打包后的根文件系统镜像

5.4 Linux内核配置与编译(★考点)

内核编译流程

# 1. 解压内核源码
tar --zxvf linux-2.4.18.tar.gz
cd linux-2.4.18

# 2. 修改Makefile(交叉编译配置)
# SUBARCH := arm              # 指定目标体系结构
# CROSS_COMPILE := arm-linux- # 指定交叉编译器前缀

# 3. 配置内核
make menuconfig

# 4. 检查依赖性
make dep

# 5. 生成内核镜像
make zImage

# 生成文件位置:/arch/arm/boot/zImage

Linux内核的五个子系统(★重要复习点)

  1. 进程调度(Process Scheduling)
  2. 内存管理(Memory Management)
  3. 虚拟文件系统(Virtual File System)
  4. 网络接口(Network Interface)
  5. 进程间通信(IPC)

5.5 NFS 网络文件系统(★重点)

什么是NFS:分布式文件系统,采用C/S工作模式,基于RPC协议

NFS服务器配置

关键配置文件/etc/exports

# /etc/exports 配置示例
/home/nfs_share *(rw,no_root_squash)  # 允许所有主机读写
/home/nfs_share 192.168.1.*(rw)       # 允许192.168.1.x网段读写

NFS客户端挂载

# 格式
mount -t nfs -o nolock server_ip:/export/path /local/mount_point

# 例子:从主机192.168.0.56共享的/dir目录挂载到/host
mount -t nfs -o nolock 192.168.0.56:/dir /host

5.6 嵌入式应用程序交叉编译与NFS调试(★实验常考)

开发流程

# 1. 在宿主机建立工作目录
mkdir /dir && cd /dir

# 2. 编写程序
vi hello.c

# 3. 编写Makefile(如需要)
vi Makefile

# 4. 交叉编译
arm-linux-gcc -o hello hello.c

# 5. 基于NFS的下载调试:
# (1) 宿主机启动NFS服务,配置/etc/exports
# (2) 目标机挂载NFS:mount -t nfs -o nolock 192.168.0.56:/dir /host
# (3) 进入目标机的/host目录,运行程序:./hello

5.7 网络配置(★常用命令)

# 配置IP地址
ifconfig eth0 192.168.1.245 netmask 255.255.255.0

# 测试网络连通性
ping -c 5 -i 0.6 192.168.1.245   # 每隔0.6秒ping一次,共5次
ping -c 5 www.qq.com

# 查看路由表
route

# 查看网络接口
ifconfig

期末考试题型分析与评分分布

考试总分:100分

题型 分值 考查内容 出题特点
一、选择题 17.5分 Linux基础知识、概念 选择适当的命令、版本特征、概念理解
二、选择题 6分 Shell编程基础 变量、位置参数、特殊字符
三、填空题 18分 gcc选项、make命令、目录结构 每空1分,共18题
四、操作命令题 14分 Linux常用命令 文件操作、权限管理、挂载等
五、Shell编程 19分 完整脚本设计 根据需求写脚本(最易失分)
六、嵌入式系统题 12分 项目管理、开发流程 makefile编写、交叉编译流程

各章考点权重

章节 重要程度 分值比例 备注
第1章 ★★★ 20-25% 基础概念,小题多
第2章 ★★★★ 20-25% 命令应用,实践性强
第3章 ★★★★★ 20-30% Shell编程,分值最大
第4章 ★★★★ 20-25% gcc、make重点
第5章 ★★ 10-15% 理论为主

常见易错点总结

Shell编程常错

  1. 等号两边有空格var = 10​ ❌ → var=10
  2. 中括号缺空格[-d /etc]​ ❌ → [ -d /etc ]
  3. 位置参数混淆:$* 和$@ 的区别容易混
  4. 命令输出赋值:使用反引号或$()
  5. 数字运算方式:混淆$[ ]、let、expr的用法

gcc编译常错

  1. 忘记-lm:包含math.h的代码编译失败
  2. -L和-l的顺序:应先-L后-l
  3. -o位置错误:应放在最后

makefile常错

  1. command行缺TAB:用空格替代导致make失败
  2. 依赖关系错误:导致编译顺序混乱
  3. 伪目标定义遗漏:.PHONY声明可能被遗忘

权限表示常错

  • 记不清各位含义:owner-group-others
  • 八进制计算错误:r=4, w=2, x=1

复习建议与快速查看清单

复习重点(必背)

  • 嵌入式系统的三要素:嵌入性、专用性、计算机系统性
  • Linux内核五个子系统:进程调度、内存管理、虚拟文件系统、网络接口、IPC
  • Linux系统四个组成部分:内核、Shell、应用系统、文件系统
  • gcc四个编译阶段:预处理、编译、汇编、链接
  • Shell变量赋值规则:等号两边不能有空格
  • makefile三要素:target、dependency、command(TAB键开头)
  • vi三种模式:命令模式、输入模式、末行模式
  • chmod权限表示:r=4, w=2, x=1,owner-group-others
  • 文件操作符:-d(目录)、-f(文件)、-c(字符设备)、-l(链接)
  • mount挂载参数:-t(文件系统)、-o(挂接方式)、iocharset(字符集)

高频考题预测

题型 预测题目
简答(5-8分) 嵌入式系统定义、Linux系统组成、gcc编译过程
选择(4-6题) Linux版本、Shell特性、gcc选项、命令用途
填空(8-10题) gcc -o -c -I -L -l 选项说明、目录结构、权限数字
命令题(6-8分) 文件权限修改、U盘挂载步骤、SSH登录
编程题(15-20分) 批量创建/删除用户、文件处理、目录遍历统计

快速参考表

Linux命令速查

场景 命令
查看目录详情 ls -l
创建多层目录 mkdir -p dir1/dir2/dir3
复制目录及内容 cp -r dir1 dir2
递归删除目录 rm -r dir
查看文件权限 ls -l file
修改权限为755 chmod 755 file
搜索文件内容 grep "pattern" file
查找文件 find /path -name "*.c"
查找并删除 find /path -name "*.c" -exec rm {} \;
挂载设备 mount /dev/sdb /mnt/usb
卸载设备 umount /mnt/usb
远程登录 ssh -p 22 user@host

gcc编译速查

任务 命令
编译链接一步到位 gcc hello.c -o hello
只编译不链接 gcc -c hello.c
只预处理 gcc -E hello.c -o hello.i
添加头文件路径 gcc -I /usr/include hello.c
链接库文件 gcc hello.c -L /usr/lib -lm
调试编译 gcc -g hello.c -o hello
静态链接 gcc -static hello.c

vi命令速查

功能 命令
进入输入模式 i / a / o
返回命令模式 ESC
进入末行模式 :(来自命令模式)
保存文件 :w
退出不保存 :q!
保存并退出 :wq 或 😡
显示行号 :set nu
删除当前行 dd
复制当前行 yy
粘贴 p

最后提醒

重点复习:Shell编程(最容易失分)、gcc编译、make工程管理

务必掌握:手写Shell脚本、makefile文件、Linux命令组合使用

考前检查:准备草稿纸演算数字权限、makefile依赖关系、编译过程

答题技巧

  • 简答题先答关键点,再展开说明
  • 编程题逐步分析题目需求,先写框架再补充细节
  • 不确定答案时,根据逻辑推断最可能的选项

祝您考试顺利! 🚀

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Back to top