1. 程式人生 > >使用ubifs作為根檔案系統的openwrt如何在進行sysupgrade時儲存舊的配置

使用ubifs作為根檔案系統的openwrt如何在進行sysupgrade時儲存舊的配置

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" write
5 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映象到當前的根檔案系統,然後重新掛載檔案系統,緊接著將舊的配置檔案複製到剛掛載的檔案系統中即可