• 巧用 Linux dd 命令缩小 Image 文件


    背景

    基于 Linux 设计了一个 LoRaWAN 网关(物联网设备),原本是安装在 8GB 的 SD 卡中,为此,生成了一个 8GB 的 Image 文件。
    这样,就可以使用 Win32DiskImager 快速复制到其他 SD 卡之中。

    问题

    最近采购的一批 SD 卡无法复制,Win32DiskImager 提示:Image 文件大于目标存储器空间!
    使用 DiskGenius 工具发现,原来的 8GB SD 卡有 15,728,640 扇区,新购的 SD 卡仅有 15,601664 扇区。
    原来,新购的 SD 卡被“偷工减料”了,没有 8GB

    解决

    老办法代价很大:将 Linux 烧录到 SD 卡中,安装环境,编译 LoRaWAN 网关软件,增加账户,添加 Service,至少需要 4 小时,还可能引入错误。

    一个创新的办法是 --- 缩小原来的 Image 文件,从 15,728,640 -> 15,601664 扇区,毕竟 Image 尾部有大量的“空白”扇区。

    dd if=/dev/sdb1/LoRaWAN.img of=/dev/sdb1/LoRaWAN_less.img bs=512 count=15601664 conv=noerror,sync status=progress

    按上面的命令,大约 30 多分钟就完成了“缩小” Image(这个期间,无需人工参与,好好休息或干点别的)。
    经测试,缩小后的 Image 可以复制到“足量”和“减量”的 SD 卡中,成功解决问题。

    一些公认优质 SD 卡采购链接

    ¥26.9 闪迪 16GB Class10 A1
    ¥59.9 三星 32GB Class10 U1

    限制guest方法与利弊

    方法1:使用目录与文件权限

    |- 建立 guest 用户:useradd -d home_dir -g group -G grouplist guest
    |- 明确文件权限 :chown -R rime:rime /dir
    |- 限制目录访问 :chmod 770 /dir
    |- 允许目录访问 :chmod o+wx /dir
    - 允许编辑文件 :chmod o+w ./file
    参考:《Linux Bible》page-83~86 了解文件权限和所有权;page-205~213 获取用户帐户
    优点:以极低的代价,实现权限控制;
    缺点:可以使用shell命令和部分性“非期望”地操作Linux。

    方法2:限制SSH用户访问Linux指定目录

    |- 创建 root jail,以 /home/test 为例:
    |- |- /dev : null, tty, zero, random
    |- |- /bin : copy /bin/bash
    |- |- /lib64: bash 命令所依赖的共享库文件
    |- - /etc : passwd, group
    - 配置 /etc/ssh/sshd.config 启动 SSH 进入 root jail
    |- Match User test_user
    - ChrootDirectory /home/test
    参考:《如何限制 SSH 用户访问 Linux 中指定的目录》
    优点:实现了“绝对”的控制;
    缺点:1 代价大:操作步骤多,每添加一个命令,必须添加依赖库;
    2 仅对限制访问目录,该用户无法访问其他目录和文件;
    3 无法使用Linux工具(如:vi)来编辑文件和(如:ps)操作系统。

  • 相关阅读:
    在 git 上 push 之后的代码如何撤回
    Git 如何暂存代码
    使用 Maven 聚合⼯程创建微服务
    使用 K8spacket 和 Grafana 对 K8S 的 TCP 数据包流量可视化
    Ceph 存储的那点事儿 — Trim/Discard
    7 张图解 CrashLoopBackOff,如何发现问题并解决它?
    Kubernetes 和 容器的退出码完整指南
    刚刚 Kubernetes 1.25 正式发布,包括这些重大变化
    在 MacOS 上通过 Lima 使用 Docker
    Consul API Gateway 0.4 已正式发布,包括这些新功能
  • 原文地址:https://www.cnblogs.com/rimelink/p/13554068.html
Copyright © 2020-2023  润新知