NetworkTermination-原始固件-分區備份

??在對設備進行固件分區備份之前,我們需要通過設備的 debug 接口進行連接。設備的 debug 接口位于左下角,連接時需設置波特率為 115200。

輸入圖片說明

ssh連接

??設備默認的 SSH 服務配置較為嚴格,端口號為 33998,且不允許通過密碼直接登錄。我們可以通過查看 /etc/ssh/sshd_config 文件來確認默認配置:

# cat /etc/ssh/sshd_config | grep Port
Port 33998
# cat /etc/ssh/sshd_config | grep Password
#PasswordAuthentication yes
PermitEmptyPasswords yes

??為了方便后續的操作,我們需要修改 SSH 配置,允許通過密碼登錄,并關閉允許空密碼的設置。修改后的配置如下:

PasswordAuthentication yes
PermitEmptyPasswords no

??使用 sed 命令可以快速完成這些修改,命令如下:

sed -i -e "s/^#PasswordAuthentication.*$/PasswordAuthentication yes/" -e "s/^P
ermitEmptyPasswords.*$/PermitEmptyPasswords no/" /etc/ssh/sshd_config

??修改完成后,重啟設備以使配置生效。之后,我們可以通過 SSH 客戶端嘗試登錄設備,設備默認的用戶名和密碼均為 root。登錄成功后,我們可以查看系統的版本信息,確認設備運行的系統為 Buildroot 2019.11.1 版本:

PS C:\Users\zac.chen> ssh root@192.168.101.27 -p 33998
(root@192.168.101.27) Password: 
# cat /etc/os-release
NAME=Buildroot
VERSION=2019.11.1
ID=buildroot
VERSION_ID=2019.11.1
PRETTY_NAME="Buildroot 2019.11.1"

查看分區

??在進行備份操作之前,我們需要先了解設備的分區情況。通過查看內核啟動日志中的分區信息,我們可以獲取到設備的分區布局:

# dmesg | grep -i mmcblk
[    3.454019] mmcblk0: emmc:0001 M8G1GC 7.28 GiB 
[    3.458938] mmcblk0boot0: emmc:0001 M8G1GC partition 1 4.00 MiB
[    3.459620] mmcblk0boot1: emmc:0001 M8G1GC partition 2 4.00 MiB
[    3.460225] mmcblk0rpmb: emmc:0001 M8G1GC partition 3 512 KiB
[    3.464148] meson-mmc: [mmcblk0p01]           bootloader  offset 0x000000000000, size 0x000000400000 
[    3.464567] meson-mmc: [mmcblk0p02]             reserved  offset 0x000002400000, size 0x000004000000 
[    3.464872] meson-mmc: [mmcblk0p03]                cache  offset 0x000006c00000, size 0x000020000000 
[    3.465200] meson-mmc: [mmcblk0p04]                  env  offset 0x000027400000, size 0x000000800000 
[    3.465525] meson-mmc: [mmcblk0p05]                 logo  offset 0x000028400000, size 0x000002000000 
[    3.465858] meson-mmc: [mmcblk0p06]             recovery  offset 0x00002ac00000, size 0x000002000000 
[    3.466327] meson-mmc: [mmcblk0p07]                  rsv  offset 0x00002d400000, size 0x000000800000 
[    3.466850] meson-mmc: [mmcblk0p08]                  tee  offset 0x00002e400000, size 0x000000800000 
[    3.467279] meson-mmc: [mmcblk0p09]                crypt  offset 0x00002f400000, size 0x000002000000 
[    3.467756] meson-mmc: [mmcblk0p10]                 misc  offset 0x000031c00000, size 0x000002000000 
[    3.468199] meson-mmc: [mmcblk0p11]                 boot  offset 0x000034400000, size 0x000002000000 
[    3.468630] meson-mmc: [mmcblk0p12]               system  offset 0x000036c00000, size 0x000080000000 
[    3.469108] meson-mmc: [mmcblk0p13]               vendor  offset 0x0000b7400000, size 0x000010000000 
[    3.469479] meson-mmc: [mmcblk0p14]                  odm  offset 0x0000c7c00000, size 0x000010000000 
[    3.469853] meson-mmc: [mmcblk0p15]                 data  offset 0x0000d8400000, size 0x0000f9c00000 
[    5.124487] EXT4-fs (mmcblk0p12): mounted filesystem with ordered data mode. Opts: (null)
[    5.333461] EXT4-fs (mmcblk0p12): re-mounted. Opts: data=ordered
[    5.801438] EXT4-fs (mmcblk0p15): 1 orphan inode deleted
[    5.801484] EXT4-fs (mmcblk0p15): recovery complete
[    5.812330] EXT4-fs (mmcblk0p15): mounted filesystem with ordered data mode. Opts: (null)
[    5.836262] EXT4-fs (mmcblk0p13): recovery complete
[    5.837294] EXT4-fs (mmcblk0p13): mounted filesystem with ordered data mode. Opts: (null)

??從上述信息可以看出,設備的存儲介質為 eMMC,總容量為 7.28 GiB,包含多個分區,每個分區都有特定的用途。其中,mmcblk0p15 分區被掛載到 /data 目錄,用于存儲設備運行中的數據。通過查看文件系統的使用情況,我們可以了解到 /data 目錄的可用空間約為 1.3 GiB:

# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/system               1.9G    825.0M   1008.4M  45% /rom
devtmpfs                485.3M         0    485.3M   0% /dev
tmpfs                   490.0M      8.0K    489.9M   0% /dev/shm
tmpfs                   490.0M    196.0K    489.8M   0% /tmp
tmpfs                   490.0M    184.0K    489.8M   0% /run
/dev/data                 3.8G      2.3G      1.3G  63% /data
/dev/vendor             239.9M      2.0M    221.1M   1% /vendor
overlayfs:/data/overlay/upper3.8G      2.3G      1.3G  63% /
cgroup                  490.0M         0    490.0M   0% /sys/fs/cgroup
overlayfs:/data/overlay/upper3.8G      2.3G      1.3G  63% /writable/ipfsbit-518518/docker

??為了釋放更多空間以便進行后續的備份操作,我們可以清空 /data 目錄中的數據,并重啟設備。重啟后,/data 目錄的可用空間將增加至約 3.5 GiB:

rm -rf /data/*
reboot
# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/system               1.9G    825.0M   1008.4M  45% /rom
devtmpfs                485.3M         0    485.3M   0% /dev
tmpfs                   490.0M      8.0K    489.9M   0% /dev/shm
tmpfs                   490.0M    180.0K    489.8M   0% /tmp
tmpfs                   490.0M    176.0K    489.8M   0% /run
/dev/data                 3.8G     54.9M      3.5G   2% /data
/dev/vendor             239.9M      2.0M    221.1M   1% /vendor
overlayfs:/data/overlay/upper3.8G     54.9M      3.5G   2% /
cgroup                  490.0M         0    490.0M   0% /sys/fs/cgroup
overlayfs:/data/overlay/upper3.8G     54.9M      3.5G   2% /writable/ipfsbit-518518/docker

備份分區

本地備份

??在進行分區備份時,我們需要注意以下幾點:

  • 備份范圍:只需要備份 GPT 分區表以及 mmcblk0boot0mmcblk0boot1mmcblk0rpmbmmcblk0p01mmcblk0p14mmcblk0p15(即 /data 分區)是運行中的 overlayfs 緩存數據,不需要備份。
  • 備份工具:使用 dd 命令進行備份,該命令可以精確地復制設備或文件的內容。
  • 備份路徑:將備份文件存儲在 /data/backup 目錄中。

??以下是備份的具體步驟:

  1. 創建備份目錄

    mkdir /data/backup
    
  2. 備份 GPT 分區表

    dd if=/dev/mmcblk0 bs=512 count=34 of=/data/backup/mmcblk0_GPT.bin conv=fsync
    
  3. 備份引導分區

    dd if=/dev/mmcblk0boot0 of=/data/backup/mmcblk0boot0.bin conv=fsync
    dd if=/dev/mmcblk0boot1 of=/data/backup/mmcblk0boot1.bin conv=fsync
    
  4. 備份其他分區

    dd if=/dev/mmcblk0rpmb of=/data/backup/mmcblk0rpmb.bin conv=fsync
    dd if=/dev/bootloader of=/data/backup/mmcblk0p1_bootloader.bin conv=fsync
    dd if=/dev/reserved of=/data/backup/mmcblk0p2_reserved.bin conv=fsync
    dd if=/dev/cache of=/data/backup/mmcblk0p3_cache.bin conv=fsync
    dd if=/dev/env of=/data/backup/mmcblk0p4_env.bin conv=fsync
    dd if=/dev/logo of=/data/backup/mmcblk0p5_logo.bin conv=fsync
    dd if=/dev/recovery of=/data/backup/mmcblk0p6_recovery.bin conv=fsync
    dd if=/dev/rsv of=/data/backup/mmcblk0p7_rsv.bin conv=fsync
    dd if=/dev/tee of=/data/backup/mmcblk0p8_tee.bin conv=fsync
    dd if=/dev/crypt of=/data/backup/mmcblk0p9_crypt.bin conv=fsync
    dd if=/dev/misc of=/data/backup/mmcblk0p10_misc.bin conv=fsync
    dd if=/dev/boot of=/data/backup/mmcblk0p11_boot.bin conv=fsync
    

??由于 /data 分區的可用空間有限,一次可能無法完成全部分區的備份。因此,我們需要分兩次完成備份操作:

  1. 第一次備份:完成上述分區的備份后,通過 SFTP 將 /data/backup 目錄中的備份文件導出到外部存儲設備(如電腦或其他存儲介質)。

  2. 清空備份目錄:導出備份文件后,清空 /data/backup 目錄,以釋放空間:

    rm -rf /data/backup/*
    
  3. 第二次備份:繼續備份剩余的分區:

dd if=/dev/system of=/data/backup/mmcblk0p12_system.bin conv=fsync
dd if=/dev/vendor of=/data/backup/mmcblk0p13_vendor.bin conv=fsync
dd if=/dev/odm of=/data/backup/mmcblk0p14_odm.bin conv=fsync
  1. 最終導出:將第二次備份生成的文件再次通過 SFTP 導出到外部存儲設備。

網絡備份

??對于熟悉網絡配置和系統操作的玩家來說,還可以通過掛載網絡文件系統(Network File System,簡稱 NFS)來實現分區數據的備份。這種方法不僅可以簡化備份流程,還能提高備份效率,避免因本地存儲空間不足而導致的分步備份操作。

掛載網絡文件系統

??首先,需要確保目標設備(即備份服務器)已經配置好 NFS 服務,并且共享了一個可供備份的目錄。在設備上,可以通過以下命令掛載網絡文件系統:

# mount -t nfs [備份服務器的IP地址]:/共享目錄路徑 /掛載點

??例如,假設備份服務器的 IP 地址為 192.168.101.100,共享目錄為 /backup,掛載點為 /mnt/backup,則命令如下:

# mount -t nfs 192.168.101.100:/backup /mnt/backup

??掛載成功后,/mnt/backup 目錄將直接映射到備份服務器的共享目錄,設備上的任何寫入操作都會實時同步到備份服務器。

遠程備份分區數據

??在掛載了網絡文件系統后,備份分區數據的操作與本地備份類似,只是備份文件的存儲路徑從本地的 /data/backup 改為了掛載的遠程目錄 /mnt/backup。以下是備份命令的修改示例:

# 創建遠程備份目錄
mkdir /mnt/backup/remote_backup# 備份 GPT 分區表
dd if=/dev/mmcblk0 bs=512 count=34 of=/mnt/backup/remote_backup/mmcblk0_GPT.bin conv=fsync# 備份引導分區
dd if=/dev/mmcblk0boot0 of=/mnt/backup/remote_backup/mmcblk0boot0.bin conv=fsync
dd if=/dev/mmcblk0boot1 of=/mnt/backup/remote_backup/mmcblk0boot1.bin conv=fsync# 備份其他分區
dd if=/dev/mmcblk0rpmb of=/mnt/backup/remote_backup/mmcblk0rpmb.bin conv=fsync
dd if=/dev/bootloader of=/mnt/backup/remote_backup/mmcblk0p1_bootloader.bin conv=fsync
dd if=/dev/reserved of=/mnt/backup/remote_backup/mmcblk0p2_reserved.bin conv=fsync
dd if=/dev/cache of=/mnt/backup/remote_backup/mmcblk0p3_cache.bin conv=fsync
dd if=/dev/env of=/mnt/backup/remote_backup/mmcblk0p4_env.bin conv=fsync
dd if=/dev/logo of=/mnt/backup/remote_backup/mmcblk0p5_logo.bin conv=fsync
dd if=/dev/recovery of=/mnt/backup/remote_backup/mmcblk0p6_recovery.bin conv=fsync
dd if=/dev/rsv of=/mnt/backup/remote_backup/mmcblk0p7_rsv.bin conv=fsync
dd if=/dev/tee of=/mnt/backup/remote_backup/mmcblk0p8_tee.bin conv=fsync
dd if=/dev/crypt of=/mnt/backup/remote_backup/mmcblk0p9_crypt.bin conv=fsync
dd if=/dev/misc of=/mnt/backup/remote_backup/mmcblk0p10_misc.bin conv=fsync
dd if=/dev/boot of=/mnt/backup/remote_backup/mmcblk0p11_boot.bin conv=fsync
dd if=/dev/system of=/mnt/backup/remote_backup/mmcblk0p12_system.bin conv=fsync
dd if=/dev/vendor of=/mnt/backup/remote_backup/mmcblk0p13_vendor.bin conv=fsync
dd if=/dev/odm of=/mnt/backup/remote_backup/mmcblk0p14_odm.bin conv=fsync

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/86077.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/86077.shtml
英文地址,請注明出處:http://en.pswp.cn/web/86077.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Network Manager客戶端制作小結

關聯資料 Unity 入門到精通(沈軍) c語言中的局部變量和全局變量_c語言全局變量-CSDN博客 關鍵詞 本地玩家信息:LocalClientId 網絡狀態及網絡序列化 網絡游戲服務器和客戶端 ClientRpc與ServerRpc 變量作用域與作用周期 Network Manager —…

Python 開發環境全棧隔離架構:從 Anaconda 到 PyCharm 的四級防護體系

【深度探索】Windows 下 Python 多版本虛擬環境管理與隔離實戰:支持 Anaconda、Poetry、Pipenv、venv、uv、Hatch、PyCharm、VS Code 全工具鏈方案-CSDN博客 【零基礎】Python 多版本虛擬環境管理與隔離實戰——支持 Anaconda、Poetry、Pipenv、venv、uv、Hatch、Py…

Redis集群性能優化實戰指南

Redis集群性能優化實戰指南 一、技術背景與應用場景 隨著互聯網服務規模不斷擴大,緩存層承載了海量的讀寫請求。Redis因其高性能和豐富的數據結構被廣泛用于緩存、排行榜、會話存儲等場景。單節點Redis在并發、內存和持久化方面會遇到瓶頸,Redis集群&a…

使用 Telegraf 向 TDengine 寫入數據

Telegraf 是一款十分流行的指標采集開源軟件。在數據采集和平臺監控系統中,Telegraf 可以采集多種組件的運行信息,而不需要自己手寫腳本定時采集,降低數據獲取的難度。 只需要將 Telegraf 的輸出配置增加指向 taosAdapter 對應的 url 并修改…

華為云 Flexus+DeepSeek 征文|華為云Dify 平臺 CCE 高可用集群部署與大模型高質量知識庫構建指南

華為云 FlexusDeepSeek 征文|華為云Dify 平臺 CCE 高可用集群部署與大模型高質量知識庫構建指南 文章目錄 華為云 FlexusDeepSeek 征文|華為云Dify 平臺 CCE 高可用集群部署與大模型高質量知識庫構建指南前言1、ModelArts Studio大模型開通2、Dify平臺CC…

測試校招/應屆刷題知識路線

需要重點關注計算機基礎知識和測試相關技能 對于即將參加校招或應屆的同學,測試崗位需要重點關注計算機基礎知識和測試相關技能。 掌握操作系統、計算機網絡、數據庫等計算機基礎,同時熟悉測試基礎理論、測試方法、自動化測試工具 (如 Selenium、JMeter)和編程語言(如 Py…

華為云Flexus+DeepSeek征文 | 基于華為云的 Dify-LLM 企業級 AI 開發平臺部署指南

前言 在人工智能技術迅猛發展的今天,大語言模型(LLM)已成為推動企業智能化轉型的核心引擎。然而,如何高效、安全地將 LLM 能力整合到實際業務場景中,仍然是許多開發者面臨的挑戰。Dify 作為一款開源的 LLM 應用開發平…

Dify×奇墨科技:開源+本土化,破解企業AI落地難題

在人工智能技術迅猛發展的今天,企業亟需高效、安全的AI應用開發工具。開源LLMOps平臺Dify.AI憑借其靈活性與開放性,已成為開發者構建AI應用的首選之一。而它在中國市場的規模化落地,離不開本土合作伙伴的強力支撐——奇墨科技作為Dify中國大陸…

Vue3+Spring boot 前后端防抖增強方案

我將基于您提供的防抖切面代碼進行改進,主要優化點包括使用Redis實現分布式防抖、增強鍵生成策略、改進異常處理等。以下是完整的改進方案: 1. 改進的防抖注解 (Debounce.java) java 復制 下載 package com.weiyu.anno;import java.lang.annotation…

Cppcheck 使用教程:本地 + CMake + GitHub Actions 自動分析實戰

Cppcheck 是一款強大的 C/C 靜態分析工具,專注于發現內存泄漏、未初始化變量、死代碼、未使用函數等問題。它不依賴編譯器,適合在持續集成和本地開發中快速定位潛在 Bug。 本文將手把手教你如何: 安裝 Cppcheck 在命令行中使用 集成到 CMak…

Mac Parallels Desktop Kali 2025 代理設置

Mac Parallels Desktop Kali 2025 代理設置 核心步驟: kali設置橋接wifi 查看kali和主機ip 運行命令ifconfig查看kali ip: mac主機ip: kali設置proxy ip填寫主機ip,port為主機proxy端口 enjoy

通義靈碼編程智能體深度評測(Qwen3模型+終端操作+MCP工具調用實戰)

1 引言 隨著AI編程助手進入工具鏈集成時代,通義靈碼作為阿里云推出的智能編程解決方案,其Qwen3模型與MCP(Multi-tool Calling Platform)的協同能力引發開發者關注。本文將基于真實開發場景,從代碼理解、終端操作和工具鏈調用三個維度展開深度…

SpringBoot電腦商城項目--商品詳情+加入購物車

商品詳情 1. 持久層 1.1. 規劃sql語句 根據id查詢商品詳情 1.2 mapper層編寫抽象方法 /*** 根據商品id查詢商品詳情* param id 商品id* return 匹配的id商品詳情,如果沒有匹配的數據,則返回null*/Product findById(Integer id); 1.3 xml文件中編寫sq…

上交卡爾動力聯合提出FastDrive!結構化標簽實現自動駕駛端到端大模型更快更強

最近將類人的推理能力融入到端到端自動駕駛系統中已經成為了一個前沿的研究領域。其中,基于視覺語言模型的方法已經吸引了來自工業界和學術界的廣泛關注。 現有的VLM訓練范式嚴重依賴帶有自由格式的文本標注數據集,如圖1(a)所示。雖然這些描述能夠捕捉豐…

C# 委托(什么是委托)

什么是委托 可以認為委托是持有一個或多個方法的對象。當然,一般情況下你不會想要“執行”一個對 象,但委托與典型的對象不同。可以執行委托,這時委托會執行它所“持有"的方法。 本章將揭示創建和使用委托的語法和語義。在本章后面&am…

iTwin briefcase, checkpoint ,standalone

在 iTwin.js 中,briefcase 和 checkpoint 都是 IModel 的不同連接類型,但它們的用途和特性不同: Briefcase 用途:用于本地編輯和同步。通常是用戶從 iModelHub 檢出(Check-out)后在本地生成的可寫副本。特…

媒體AI關鍵技術研究

一、引言 隨著人工智能技術的迅猛發展,媒體行業正經歷前所未有的變革。AI技術不僅重塑了內容生產和傳播模式,更為媒體創意發展提供了全新可能。在數字化、移動化和信息爆炸的大背景下,傳統媒體面臨巨大挑戰,而AI技術為行業帶來了…

Cargo 與 Rust 項目

一、Rust 項目:現代化的系統編程單元 Rust 項目 是用 Rust 語言編寫的軟件工程單元,具有以下核心特征: 核心組件: src/ 目錄:存放 Rust 源代碼(.rs 文件) Cargo.toml:項目清單文件…

uni-app總結6-配合iOS App項目開發apple watch app

假設你已經用uni-app開發好了一個iOS端的app,現在想要開發一個配套的apple watch app。改怎么去開發呢?是不是一頭霧水,這篇文章就會介紹一些apple watch app開發的知識以及如何在uni-app開發的iOS app基礎上去開發配套的watch app。 一、apple watch 開發知識 apple watc…

神經網絡的本質 邏輯回歸 python的動態展示

神經網絡的本質 邏輯回歸 python的動態展示 邏輯回歸運行圖相關代碼什么是邏輯回歸和ai的關系邏輯回歸公式流程與實際案例解析**一、邏輯回歸的數學公式流程**1. **線性組合階段**2. **激活函數(Sigmoid)**3. **概率預測與決策**4. **交叉熵損失函數**5.…