溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

OpenWRT如何實現不拆機刷不死的U-Boot

發布時間:2021-12-18 11:38:57 來源:億速云 閱讀:1470 作者:小新 欄目:互聯網科技

這篇文章將為大家詳細講解有關OpenWRT如何實現不拆機刷不死的U-Boot,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

    第一個思路是刷上 DD-WRT 固件,但是找了一下 DD-WRT 木有支持 DIR-505,只好繼續蛋疼地編譯 OpenWRT。

    第一遍在虛擬機從 12:20 編譯到 23:56,花了將近 12 小時……剛開始時,有一個下載過程,不斷失敗,想想是因為公司的網絡太爛了,于是把下載腳本改了一下:

<openwrt-svn-dir>/trunk/scripts/download.pl 中的 wget -t5 --timeout=20 --no-check-certificate 改為 wget -t5 --timeout=120 --no-check-certificate

    第二天來,刷上,沒問題,于是開始改代碼去掉 U-Boot 寫保護,參考這篇《Openwrt 中刷寫 uboot ART》http://see.sl088.com/wiki/Openwrt_%E4%B8%AD%E5%88%B7%E5%86%99_uboot_art,但結果很不幸,型號不同嘛!

    接下來,憑自己的編程水平了,嘗試改 <openwrt-svn-dir>/trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-dir-505-a1.c,加入下面兩個結構體:

static struct mtd_partition dir505_partitions[] = {

 {

  .name  = "u-boot",

  .offset  = 0,

  .size  = 0x010000,

  .mask_flags = 0,

 }, {

  .name  = "art",

  .offset  = 0x010000,

  .size  = 0x010000,

 }, {

  .name  = "mac",

  .offset  = 0x020000,

  .size  = 0x010000,

 }, {

  .name  = "nvram",

  .offset  = 0x030000,

  .size  = 0x010000,

 }, {

  .name  = "language",

  .offset  = 0x040000,

  .size  = 0x040000,

 }, {

  .name  = "firmware",

  .offset  = 0x080000,

  .size  = 0x780000,

  .mask_flags = 0,

 }

};

static struct flash_platform_data dir505_flash_data = {

 .parts  = dir505_partitions,

 .nr_parts       = ARRAY_SIZE(dir505_partitions),

};

    并將 dir_505_a1_setup 函數里的 ath79_register_m25p80(NULL); 改為 ath79_register_m25p80(&dir505_flash_data);

    測試還是無效……看來必須在源頭上使 MTD_WRITEABLE 無效掉,grep -r MTD_WRITEABLE <openwrt-svn-dir>/trunk/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.10.36/drivers/mtd,看到幾處關鍵的地方:

if (!(ubi->mtd->flags & MTD_WRITEABLE)) {

if (!mtd->_write || !(mtd->flags & MTD_WRITEABLE))

    主要在 mtd_erase、mtd_write 等函數,很明顯,C 語言不管在什么平臺都是很好懂,看幾眼就搞定了,原理是使 MTD_WRITEABLE 這個標志無用掉,您可以設置,但是我把判斷這個標志的代碼全干掉了,設了也是白設!

    最后編譯好的 openwrt-ar71xx-generic-dir-505-a1-squashfs-sysupgrade.bin,用 sysupgrade 刷一下,reboot 后再用 mtd 刷不死 U-Boot,一切順利,成功刷上不死 U-Boot!

關于“OpenWRT如何實現不拆機刷不死的U-Boot”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女