Linux设备与存储精读 · L01-03 | 验证环境:Android 设备 + 远程 Linux 服务器怎么分工练

模块 :L01 心智模型与命令入口

篇号 :L01-03 / 38

预计阅读 :35 分钟

主线:Linux 设备与存储


文章目录

    • 本篇目标
    • [30 秒速览](#30 秒速览)
    • 正文
      • [1. 两种环境各干什么](#1. 两种环境各干什么)
      • [2. Android:从 adb 进 shell](#2. Android:从 adb 进 shell)
      • [3. 远程服务器:先确认工具在不在](#3. 远程服务器:先确认工具在不在)
      • [4. 服务器安全练法:文件 + loop](#4. 服务器安全练法:文件 + loop)
      • [5. 同一问题,两边怎么对照练](#5. 同一问题,两边怎么对照练)
      • [6. 权限与「命令在不在」的决策](#6. 权限与「命令在不在」的决策)
      • [7. 本专栏后续练习落点(预告)](#7. 本专栏后续练习落点(预告))
    • [Android 对照](#Android 对照)
    • 检查清单
    • 练习
      • [判断题(对 / 错)](#判断题(对 / 错))
      • [操作题 A(Android)](#操作题 A(Android))
      • [操作题 B(远程服务器)](#操作题 B(远程服务器))
      • 读输出题
    • 本篇边界
    • 下一篇预告
    • [L01 模块小结](#L01 模块小结)

本篇目标

把后续练习落到两处:Android 设备 负责看真机对象与挂载现象;远程 Linux 服务器 负责练完整命令选项,并用文件 + losetup 安全模拟块设备。学完能判断「这条命令该在哪跑、缺权限时怎么办、危险操作碰谁」。


30 秒速览

  • Android:adb shell,常见实现是 toybox;适合观察 /dev/block、mount、df、by-name。
  • 远程服务器:util-linux / e2fsprogs 等更全;适合 lsblk、findmnt、losetup、mkfs、镜像工具。
  • 精通标准按完整工具链;板上缺的命令到服务器练,概念两边通用。
  • 服务器上练块设备:默认用普通文件 + loop ,不要对系统盘 dd/mkfs。
  • Android 镜像主机工具可从 AOSP out/host/linux-x86/bin 拷到服务器使用。

正文

1. 两种环境各干什么

环境 擅长 不擅长 / 注意
Android 设备 真实分区名、by-name、多挂载点、产品路径 命令选项常被裁剪;部分操作需 root
远程 Linux 服务器 完整选项、反复试验、做/拆 loop 镜像 通常没有手机那套 by-name;勿伤系统盘

对象模型两边是同一套(L01-01 / L01-02)。差别主要在:探针齐不齐、路径长什么样、有没有权限。

分工原则:

  1. 看现象、对产品路径 → Android
  2. 练选项、做可重复实验 → 远程服务器
  3. 危险写操作 (mkfs、dd 写设备、wipefs)→ 只对 loop 或明确的练习文件,不对系统根盘、不对量产用户数据分区做「练手」

2. Android:从 adb 进 shell

主机已装好 adb、设备已连接时:

bash 复制代码
adb devices
adb shell

需要更高权限时(视设备与 userdebug/eng 配置而定):

bash 复制代码
adb root
adb shell
# 或在 shell 内:
su

本专栏常用的观察入口:

bash 复制代码
adb shell ls -l /dev/block/by-name | head
adb shell mount | grep ' /data '
adb shell df -h /data
adb shell id
现象 常见原因
adb devices 无设备 未授权、驱动、线材、未开调试
Permission denied 当前 uid 不够;试 adb root 或设备是否允许 root
找不到某命令 toybox 未提供该工具或未链到 PATH

Android shell 里的许多命令来自 toybox :名字眼熟,选项往往比完整 util-linux / coreutils 少 。

后文归属篇会给「常用选项清单」;表中标明 Android 不具备的,以服务器练习为准。


3. 远程服务器:先确认工具在不在

登录服务器后自检(包名因发行版而异,命令名如下):

bash 复制代码
which lsblk findmnt losetup blockdev blkid mkfs.ext4
lsblk -V 2>/dev/null || true
mount --version 2>/dev/null || true
用途 常见命令 备注
块设备拓扑 lsblk Android 上常无
挂载查看 findmnt、mount findmnt 板上常无
loop losetup 服务器练镜像/块设备的核心
容量 blockdev、df、du blockdev 板上可能需 root
FS 识别 blkid 视镜像是否带
创建 FS mkfs.ext4 等 只对练习文件/loop

缺包时按发行版安装 util-linux、e2fsprogs 等(具体 apt/yum 命令以服务器文档为准)。

Android 专用主机工具(如 simg2img、e2fsdroid、lpdump)可从已编译的 AOSP 树拷贝:

text 复制代码
out/host/linux-x86/bin/

放到服务器某目录后,把该目录加入 PATH,或写全路径调用。


4. 服务器安全练法:文件 + loop

目标:得到一个「长得像块设备」的节点,而不去动 /dev/sda、/dev/vda 等系统盘。

示意流程(路径可自定;需要时加 sudo):

bash 复制代码
# 1)准备一个空文件当「假磁盘」(这里 64MiB)
dd if=/dev/zero of=/tmp/storage-lab.img bs=1M count=64 status=progress

# 2)挂到空闲 loop 设备
sudo losetup -f --show /tmp/storage-lab.img
# 假设打印:/dev/loop0

# 3)此时 /dev/loop0 就是可练习的块设备对象
ls -l /dev/loop0
sudo blockdev --getsize64 /dev/loop0

# 4)练完释放(先 umount 若已挂载)
sudo losetup -d /dev/loop0
rm -f /tmp/storage-lab.img

硬规矩:

  1. mkfs / dd of= / wipefs 的目标必须是自己创建的 loop 或明确练习镜像。
  2. 对 lsblk 里挂着 /、/boot、/home 的磁盘,不做格式化练习。
  3. 共享服务器上,文件放自己的家目录或 /tmp 下带用户名的路径,避免踩别人的实验文件。

后续 L05~L08 的破坏性步骤,默认都建立在这种 loop 之上。


5. 同一问题,两边怎么对照练

以「看见块设备与挂载」为例:

问题 Android 远程服务器
有哪些块设备 ls -l /dev/block lsblk;或 ls -l /dev/sd* /dev/vd* /dev/loop*
某路径挂在谁上 `mount grep ' /data '`
空间 df -h /data df -h /
精确字节容量 blockdev --getsize64 <节点>(常需 root) 对 loop:blockdev --getsize64 /dev/loopN
按名找分区 /dev/block/by-name/... 一般无 by-name;用 lsblk -f / 分区名列

对照目的:确认对象关系一致,而不是强求两边路径字符串相同。


6. 权限与「命令在不在」的决策

text 复制代码
命令失败
    ├─ 提示 not found / No such file → 换环境或安装/拷贝工具
    ├─ 提示 Permission denied
    │      ├─ Android:adb root / su;仍不行则换只读观察或服务器练等价项
    │      └─ 服务器:sudo;或检查文件属主
    └─ 提示 busy / target is busy → 先 umount / 查占用(L07)

读输出时仍用 L01-02 的规矩:先定对象,再解释探针结果。


7. 本专栏后续练习落点(预告)

模块主题 优先环境
by-name、真机多挂载点、产品路径 Android
ls/stat/chmod 语义 两边都可;完整选项偏服务器
lsblk/findmnt/parted 查看 服务器
mkfs/fsck/losetup/dd 实验 服务器 + loop
e2fsdroid/simg2img/lpdump 服务器(主机工具)
排障五题收口 Android 现象 + 服务器复现实验

Android 对照

项 说明
进入方式 adb shell;调试机常见 adb root
命令实现 多为 toybox
块设备入口 /dev/block、/dev/block/by-name
与服务器差异 路径与工具集不同;分区/FS/挂载对象模型相同

检查清单

  • 能说清:真机观察与服务器练选项分别解决什么问题
  • 会用 adb devices / adb shell 做 L01 级观察
  • 服务器上会用文件 + losetup 得到练习用块设备,并会 losetup -d 释放
  • 明确:不对系统盘、不对量产用户数据做格式化练手
  • 遇到 not found / Permission denied 时,知道换环境、提权或换探针

练习

判断题(对 / 错)

  1. Android 上没有 lsblk,就不需要再学这条命令。
  2. 远程服务器上练习 mkfs 时,可以对挂载了 / 的磁盘直接格式化以便「更真实」。
  3. losetup 把普通文件当成块设备来用,适合安全做存储实验。
  4. 两边路径不同,所以分区、文件系统、挂载的概念也不通用。

参考答案

  1. 错。完整选项在服务器练;概念与排障仍要会。
  2. 错。会对系统造成破坏;只用 loop/练习文件。
  3. 对。
  4. 错。对象模型通用,路径与工具集不同。

操作题 A(Android)

bash 复制代码
adb devices
adb shell ls -l /dev/block/by-name | head
adb shell mount | grep ' /data '
adb shell df -h /data

记下:by-name 里是否有 userdata(或等价名)、/data 的设备与 type。

操作题 B(远程服务器)

按第 4 节创建 64MiB 文件并 losetup,然后:

bash 复制代码
ls -l /dev/loopN          # N 换成实际编号
sudo blockdev --getsize64 /dev/loopN
sudo losetup -a | grep loopN
sudo losetup -d /dev/loopN
rm -f /tmp/storage-lab.img

确认:getsize64 结果为 67108864(64×1024×1024),释放后 loop 不再占用该文件。

读输出题

text 复制代码
$ which findmnt lsblk
/usr/bin/findmnt
/usr/bin/lsblk

$ adb shell which findmnt lsblk
/system/bin/sh: findmnt: inaccessible or not found
  1. findmnt/lsblk 应在哪边练常用选项?
  2. 在 Android 上要用什么命令看「/data 挂在谁上」?

参考答案

  1. 远程服务器。
  2. mount | grep ' /data '(或设备上其它等价查看方式)。

本篇边界

  • 不讲各发行版装包的完整手册
  • 不讲 adb 驱动与公司内网接入流程
  • 不讲 losetup/mkfs 的完整选项清单(L08/L06 归属篇)
  • 不讲量产烧录与解锁策略

下一篇预告

L02-01 :《文件类型全景:普通文件、目录、符号链接、设备节点》--- 从路径行首字母把对象类型认全,为 stat/ls 精读打底。


L01 模块小结

篇 收获
L01-01 一条存储链路 + 会读 ls -l / mount / df
L01-02 对象是主体,命令是探针
L01-03 Android 观察、服务器练选项与 loop 安全实验

从 L02 起,按对象深挖;命令常用选项在各自归属篇收束到「必会清单」。

相关推荐
律宏阔5 小时前
WSL Docker 端口明明空闲,但就是绑不上端口
linux·windows
律宏阔5 小时前
WSL 突然断网,无法 ping 内网或外网
linux·windows
穷人小水滴5 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
乱码三千5 小时前
如何优雅地直连无公网 IP 的远程 GPU 服务器
linux·人工智能·程序员
yunwei375 小时前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei375 小时前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei375 小时前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化
GeW5 小时前
制造业高端化,为什么必须重估Linux和数据库?
linux
GeW5 小时前
工业场景中的Linux与数据库选型:高端化转型的技术底座
linux
yunwei375 小时前
eBPF 开发者教程: 简单的 XDP 负载均衡器
linux·后端·性能优化