iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 13
0
DevOps

Oops Step ( Home lab of a kind ) 系列 第 13

Bakery for OpenWrt (Part 2)

接續中秋全民一起烤的運動,今日要來個測字,人民日報投一個"家"字
https://ithelp.ithome.com.tw/upload/images/20190914/20094403hBVp4R87FQ.jpg
這下面染紅的像是HK,說明現在香港不是一家人,只是一隻豕,待宰的家畜罷了。整體來看,家裡面希望這東方之豬留下來,我看是全民無豬,說明中國現在都沒有豬肉。

今天接下來,我用截圖說明一些編譯選項,因為套用預先存的上次參數,所以可以看到設備名稱已經選好了
https://ithelp.ithome.com.tw/upload/images/20190910/20094403LV3BoVWfmn.png
你可以選擇原生支持ext4,這樣在後面掛隨身碟上去時方便
https://ithelp.ithome.com.tw/upload/images/20190910/2009440396p1xNNmWI.png
TP-Link Archer C7 V5拿掉一些規格,沒有USB 3.0可以用
https://ithelp.ithome.com.tw/upload/images/20190910/20094403soHJYFQz9b.png
可以選擇把python 3 light塞進去 ,當然這會超肥大,可是ansible要的,你不能不給(誤)。
https://ithelp.ithome.com.tw/upload/images/20190910/20094403HfJkm3DLA5.png
我有個推薦的選項,叫做autossh,它的奧妙我會另外介紹,然而在此不建議直接把OpenSSH server內建進去,因為它內定值會跟dropbear搶port 22,這坑就點名了,別再自己跳下去喊他奶奶掉了一隻熊。
https://ithelp.ithome.com.tw/upload/images/20190910/20094403AeO7vYBR55.png
直接在裡面內建git是個不錯的主意。這樣做的好處是,以後設定檔可以直接進行版本管理。
https://ithelp.ithome.com.tw/upload/images/20190910/20094403NKZ7D6NzC1.png
感覺好像可以用squid與clamav組合出什麼不得了的組合耶(但你放心,絕對跑不動,而且會爆炸),NGINX是目前lab必備的功能,因此一定要選
https://ithelp.ithome.com.tw/upload/images/20190910/20094403qDHVVa0rTs.png
很重要!即使是官方放的NGINX也沒有內建SSL支援!沒有內建SSL支援!沒有內建SSL支援! 一定要記得自己勾起來,不然你遲早還會回來勾的。
https://ithelp.ithome.com.tw/upload/images/20190910/200944037ppMSbfkTe.png
內建個bash方便一下自己,這是一定要的。
https://ithelp.ithome.com.tw/upload/images/20190910/200944037pviEnRSNO.png
有些好用的連線工具也可以考慮一下。
https://ithelp.ithome.com.tw/upload/images/20190910/20094403RyeTRQNrj2.png
如果不想openwrt永遠只有root,會覺得孤單覺得冷,當然先來一點創建的工具。
https://ithelp.ithome.com.tw/upload/images/20190910/20094403qFv5gukboh.png
折騰到最後,千萬不要忘記存檔阿。
https://ithelp.ithome.com.tw/upload/images/20190910/20094403YpOi3E2NaO.png

*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.
# 接下來,我們就可以開始編譯,每個人習慣不同,我是用
openwrt@01ea25dd8a29:~/openwrt$ time make -j5 V=s

https://ithelp.ithome.com.tw/upload/images/20190910/20094403iO1buQT5ch.png

icekimo@HPE8300-SFF:~$ docker cp 01ea25dd8a29:/home/openwrt/openwrt/bin /tmp/c7v5rom

如果正確,就會如同圖示看到這樣的結果,有個*sysupgrade.bin。下圖是因為沒有刪除,而第二次將版本加在檔名上(是的,編譯工具有這參數喔~)
https://ithelp.ithome.com.tw/upload/images/20190910/20094403DPLAVFNKzF.png

然後當我們把需要的韌體檔案拿走後,我們就可以把烤箱插頭拔掉了。

icekimo@HPE8300-SFF:~$ docker stop bakingC7V5

然後準備清洗廚房,不然你會有一天發現自己可以"Breakfast in bed",因為廚房爆炸了。這件事不好玩,因為事實上它常常在新手村發生。
https://ithelp.ithome.com.tw/upload/images/20190910/20094403JuGv8QrF56.jpg
怎麼辦?就說要清洗了。

icekimo@HPE8300-SFF:~$ docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              2                   1                   1.497GB             64.19MB (4%)
Containers          3                   0                   11.64GB             11.64GB (100%)
Local Volumes       0                   0                   0B                  0B
Build Cache         0                   0                   0B                  0B
icekimo@HPE8300-SFF:~$ docker system prune
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache

Are you sure you want to continue? [y/N] y
Deleted Containers:
01ea25dd8a2945199c93590df10f33dfc29d3a28d49b287b7ccc4f9dcb55e0f3
43a73b310f95bdcc4c4cd71ff12f995d6c0779b2e8cc1a15e893f3a7b02dbdab
e4d42d8d6182959e1680cd5b95464b9828d137b3dc60d0a182787e9825971257

Total reclaimed space: 11.64GB
icekimo@HPE8300-SFF:~$

~~因為本文歸類在DevOps,因此扮演完半弔子的開發人員後,~~不要忘記將成果送回版本管理。尤其是Makefile最愛的設定檔.config。首先從Docker取出檔案

icekimo@HPE8300-SFF:~$ docker cp 01ea25dd8a29:/home/openwrt/openwrt/.config ~/Documents/OpWrt/docker-openwrt-buildroot/18.06/archerC7v5/ac7v5.config

再來我們辦正式,填表入庫

icekimo@HPE8300-SFF:~/Documents/OpWrt/docker-openwrt-buildroot$ git add . 

看看有什麼變動

icekimo@HPE8300-SFF:~/Documents/OpWrt/docker-openwrt-buildroot$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   18.06/archerC7v5/Dockerfile
        modified:   18.06/archerC7v5/ac7v5.config

恩,看來地球還是圓的,宇宙還在膨脹,一切都跟我想的差不多。

icekimo@HPE8300-SFF:~/Documents/OpWrt/docker-openwrt-buildroot$ git commit -m "Archer C7V5 new baking ROM"
[master d78b2dc] Archer C7V5 new baking ROM
2 files changed, 6 insertions(+), 6 deletions(-)
icekimo@HPE8300-SFF:~/Documents/OpWrt/docker-openwrt-buildroot$ git push
Warning: Permanently added the RSA host key for IP address '140.82.114.4' to the list of known hosts.
Counting objects: 6, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 670 bytes | 670.00 KiB/s, done.
Total 6 (delta 4), reused 0 (delta 0)
remote: Resolving deltas: 100% (4/4), completed with 4 local objects.
To github.com:August-Icekimo/docker-openwrt-buildroot.git
   d961f7f..d78b2dc  master -> master
icekimo@HPE8300-SFF:~/Documents/OpWrt/docker-openwrt-buildroot$

--分隔線
綜整的說,今天除了不好笑的笑話,至少有點科技的成分。

icekimo@HPE8300-SFF:~$ docker ps --size
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES               SIZE
01ea25dd8a29        buildopenwrt        "/bin/bash"         2 days ago          Up 2 days                               bakingC7V5          11.6GB (virtual 13.1GB)

而且我們成功的用12G的運算空間"烤"出要給TP-link Archer C7這台路由器,只有將近15MB的新firmware,可以說是千分之一的菁英啊(誤)。會這樣的原因,還不就是TP-Link只給這設備128Mb的ROM,聽起來很大對不對?但實情是如果你嘗試把喜歡的都選起來帶回家,你會發現你找不到編譯出來的 接下來準備放進路由器,讓它也懂Python。而這個遞迴的過程有個小問題,就是當源碼變動時,編譯參數檔必定要微調。然而在這過程中即使已經用了版本管理,但是要管理對應版本的參數變動,可以說想要這件工作全自動完成,除非雙方都躺著不動,然後這樣還會生出小孩,我敢肯定這一定是別人幹的(笑)。

不打緊。我們還是利用了Docker技術讓編譯這件事變的舒服一點了。


上一篇
Bakery for OpenWrt (Part 1)
下一篇
Bakery for OpenWrt (Part 3)
系列文
Oops Step ( Home lab of a kind ) 34

尚未有邦友留言

立即登入留言