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/blockmountdf、by-name。
  • 远程服务器:util-linux / e2fsprogs 等更全;适合 lsblkfindmntlosetupmkfs、镜像工具。
  • 精通标准按完整工具链;板上缺的命令到服务器练,概念两边通用。
  • 服务器上练块设备:默认用普通文件 + 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. 危险写操作mkfsdd 写设备、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 上常无
挂载查看 findmntmount findmnt 板上常无
loop losetup 服务器练镜像/块设备的核心
容量 blockdevdfdu blockdev 板上可能需 root
FS 识别 blkid 视镜像是否带
创建 FS mkfs.ext4 只对练习文件/loop

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

Android 专用主机工具(如 simg2imge2fsdroidlpdump)可从已编译的 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 起,按对象深挖;命令常用选项在各自归属篇收束到「必会清单」。

相关推荐
tedcloud1231 小时前
Orca 部署指南:开源 AI 推理服务的 Linux 部署实践
linux·运维·服务器·人工智能·开源·自动化·excel
OpenPomeloxCommunity3 小时前
Linux 同步机制之 spinlock 设计与实现(二):ARM32实现
linux
爱莉希雅&&&3 小时前
Rocky Linux 10.1 + K8s 1.36.3 离线集群部署笔记(Kubernetes)
linux·笔记·docker·kubernetes·calico
三8443 小时前
基于 NFS 共享存储的 Nginx Web 服务部署项目
linux·运维·服务器
逻极3 小时前
Shell脚本实战:从“能跑”到“高效”的3个关键跃升
linux·服务器·shell·脚本
ARM|X86+FPGA工业主板厂家3 小时前
Linux+Xenomai 实时系统在机器人中的应用
linux·运维·机器人
唔663 小时前
Linux工具使用情况buildroot
linux·运维·服务器
云泽8083 小时前
Linux 核心机制详解(三):文件系统权限与共享安全——从删除规则到粘滞位防护
linux·运维·安全
码农阿豪3 小时前
Prometheus怎么监控另一台Linux服务器?Node Exporter配置教程
linux·服务器·prometheus