使用ubifs作為根檔案系統的openwrt如何在進行sysupgrade時儲存舊的配置
阿新 • • 發佈:2018-12-03
1.openwrt的預設方案(squashfs + jffs2)
sysupgrade指令碼直接呼叫default_do_upgrade更新裝置樹、核心、根檔案系統,那麼它是如何儲存舊配置的呢?請看default_do_upgrade(定義在package/base-files/files/lib/upgrade/common.sh中):
1 default_do_upgrade() { 2 sync 3 if [ "$SAVE_CONFIG" -eq 1 ]; then 4 get_image "$1" "$2" | mtd $MTD_CONFIG_ARGS -j "$CONF_TAR" write5 else 6 get_image "$1" "$2" | mtd write - "${PART_NAME:-image}" 7 fi 8 [ $? -ne 0 ] && exit 1 9 }
關注第4行即可,-j引數後面追加了$CONF_TAR,表示在寫映象的時候將舊的配置檔案合併到jffs2 資料中 (integrate <file> into jffs2 data when writing an image)
2.那麼如果只使用ubifs作為根檔案系統應該如何備份舊的配置檔案呢?
2.1 使用sysupgrade.tar這樣壓縮格式作為sysupgrade韌體(也就是將裝置樹、核心和根檔案系統放在一個目錄下,然後將目錄壓縮)
2.2 使用ubiupdatevol來更新ubi映象到當前的根檔案系統,然後重新掛載檔案系統,緊接著將舊的配置檔案複製到剛掛載的檔案系統中即可