【玩轉開源】BananaPi R2 —— 第一篇 Openwrt安裝

    最近手上拿到一塊香蕉派的R2,這塊板子能夠用做路由器,因此決定在板子上面跑一下Openwrt。linux

    R2的外觀長這個樣子,看起來仍是比較酷的;git

    

 

  • 硬件介紹
  1. CPU 是MTK的4核芯片mt7623n,搭配mt7530的交換芯片和mt6625的Wifi & BT芯片,能夠看出R2在硬件上具有路由器的強健實力。

連接:http://wiki.banana-pi.org/Banana_Pi_BPI-R2#Introductiongithub

  •  軟件介紹
  1. BananaPi-R2可運行Openwrt,Ubuntu等Linux開源系統;
  2. BananaPi的論壇用戶多數是國外創客,活躍度也是十分的高,BananaPi在國外開源社區的影響力可見一斑。

        論壇連接:http://forum.banana-pi.org/shell

       

    簡單介紹完後,接下來我下載openwrt的repo(代碼庫),來感覺一下R2運行openwrt的性能;api

  • Github代碼倉庫:https://github.com/garywangcn/bpi-r2_lede/tree/bpi-r2-on-lede-v1
  • Branch選擇v1版本

    

  • 個人PC使用的Ubuntu 16.04,按快捷鍵"Ctrl+Alt+T"打開Terminal終端,輸入下面的命令:
1 jack@jack: git clone https://github.com/garywangcn/bpi-r2_lede.git
2 jack@jack: cd bpi-r2_lede
3 jack@jack: cat README
  • 下載開源的代碼後,首先要學會看README

  • 經過「make menuconfig」去配置你的openwrt,若是剛開始接觸還不精通的話,建議先用默認的配置;「make menuconfig」配置後的文件會保存在".config"文件中,".+文件"在Ubuntu中表示爲隱藏文件,用「ls -a」能夠查看到。
  • 若是要編譯該工程,須要安裝2號框中提到的相關組件,在Ubuntu中使用「apt-get install xxx」就能夠安裝了;好比要安裝2號框圖中的「gcc」,則使用命令「apt-get install gcc」。
  • 執行「make menuconfig」後,這個時候發現模塊是很是少的,這個時候看3號框能夠經過執行如下兩行命令去更新和安裝openwrt的相關模塊和組件
1 jack@jack: ./scripts/feeds update -a
2 jack@jack: ./scripts/feeds install -a
  • 執行完後,再執行「make menuconfig」會發現配置界面多了不少模塊和組件。
  • 接下來,執行「make -j1 V=s」命令去編譯工程,第一次編譯工程的時間會比較久,若是你的PC是多核的芯片能夠採用多線程的方式編譯,我能夠用「make -j4」去編譯工程,這樣速度會快一些。
  • 編譯完成後,會在「build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-mediatek_32」目錄下生成編譯後的鏡像文件:
  1. mtk-bpi-r2-SD.img
  2. mtk-bpi-r2-EMMC.img
  • 另外還有一個文件也要注意一下,就是位於「bin/targets/mediatek/32/lede-mediatek-32-bananapi,bpi-r2-sysupgrade.tar」,這個文件能夠用於系統升級。

    有了鏡像文件後,接下來咱們來燒錄鏡像;多線程

  • 首先要準備一個至少8G大小的SD卡,SD卡讀卡器
  • 插上PC上的USB接口後,如何在Ubuntu中找到本身的SD卡的盤符呢?我使用的辦法是"fdisk -l",使用這個命令能夠查看PC上的全部存儲設備,個人SD卡信息以下
 1 jack@jack: fdisk -l
 2 ************************************************************
 3 Disk /dev/sdf: 29.7 GiB, 31914983424 bytes, 62333952 sectors
 4 Units: sectors of 1 * 512 = 512 bytes
 5 Sector size (logical/physical): 512 bytes / 512 bytes
 6 I/O size (minimum/optimal): 512 bytes / 512 bytes
 7 Disklabel type: dos
 8 Disk identifier: 0x4d1bc8d1
 9 
10 Device     Boot Start      End  Sectors  Size Id Type
11 /dev/sdf1        8192 62332199 62324008 29.7G  c W95 FAT32 (LBA)
  • 能夠看到個人SD卡是32Gb大小的,而後每一個sector單元是 512 bytes,硬盤類型爲dos,只有一個分區"/dev/sdf1";
  • 這裏有人可能會說,這裏顯示的明明是29.7Gb,我問爲何說個人SD卡是32Gb的呢;
  1. 我給你們引伸一下,爲何買電腦的時候,說買500GB,買回來看硬盤大小實際比500小一些;這是由於存儲設備生產商是按照1000爲計量單位去計算的,而咱們的計算機是以1024爲計量單位去計算的,怎麼理解?
  2. 這裏個人SD卡大小是 31914983424 bytes,按照生產商的1000位計量單位去計算,除以109 計算出來就是32Gb;可是按照計算機的計量單位1024去計算,31914983424 ÷ 1024 ÷ 1024 ÷ 1024 = 31914983424 ÷ 230 ≈ 29.7
  • 引伸完後,咱們再回到鏡像燒錄這裏,那麼如何燒錄系統鏡像到SD卡呢?這裏就引出了Linux的「dd」命令,採用以下命令就能夠把鏡像寫入到SD卡中了:
1 jack@jack: dd if=mtk-bpi-r2-SD.img of=/dev/sdf
2 200192+1 records in
3 200192+1 records out
4 102498308 bytes (102 MB, 98 MiB) copied, 10.0212 s, 10.2 MB/s
  1. 這裏在給你們引伸一下「dd」命令,在Ubuntu的命令行中執行「man dd」能夠看到對dd的介紹;
  2.  「Copy a file, converting and formatting according to the operands.」意思就是拷貝文件,同時能夠根據指定的大小進行轉換;如何理解呢?
  3. 這裏我舉個例子,我測試一下個人硬盤讀寫速度,在此以前先介紹兩個文件,/dev/null 和 /dev/zero;
  4. /dev/null 稱爲空設備,咱們能夠將一切不用的數據都輸入其中「丟掉」,能夠直接理解爲「垃圾桶」;
  5. /dev/zero 是一個特殊的文件,它可以無限的提供數據0x0;
  6. 第1行我把硬盤sda的數據以1Mb的塊大小寫入虛擬設備null中,一共寫入1024個塊,也就是總共寫入1Gb;第2行表示我寫入硬盤1Gb的0x0;經過這種方式就能夠測試硬盤的讀寫能力;你能夠在電腦上插上存儲設備試一試,看看其讀寫性能。
1 jack@jack: dd if=/dev/sda of=/dev/null bs=1M count=1024
2 jack@jack: dd if=/dev/zero of=/dev/sda bs=1M count=1024
  • 燒錄完成後,查看硬件接口圖:http://wiki.banana-pi.org/Banana_Pi_BPI-R2#Hardware_interface,把SD卡插入到BananaPi-R2的SD卡槽中,接上12V/2V的電源,接上Debug串口;

    

  • 這裏我使用的串口線是FT232RL USB轉串口TTL的線,這裏也有一個知識點,就是爲何PC的USB接口與板子的串口通訊須要轉電平信號呢?
  1. 由於二者的通訊接口標準不一樣,致使電平信號有差別,PC上USB接口是USB標準,單片機電平是TTL標準,爲了能讓彼此能識別,這個時候就須要一顆USB轉TTL的轉換芯片,若是沒有轉換芯片,電腦上顯示的板子串口信息將會是亂碼;咱們買的USB轉串口的線通常都是內置了轉換芯片的,因此看到的串口信息是正常的。
  • 啓動完成後,界面以下:
 1 BusyBox v1.26.2 () built-in shell (ash)
 2 
 3      _________
 4     /        /\      _    ___ ___  ___
 5    /  LE    /  \    | |  | __|   \| __|
 6   /    DE  /    \   | |__| _|| |) | _|
 7  /________/  LE  \  |____|___|___/|___|                      lede-project.org
 8  \        \   DE /
 9   \    LE  \    /  -----------------------------------------------------------
10    \  DE    \  /    Reboot (SNAPSHOT, r4774-8cb7cc2)
11     \________\/    -----------------------------------------------------------
12 
13 === WARNING! =====================================
14 There is no root password defined on this device!
15 Use the "passwd" command to set up a new password
16 in order to prevent unauthorized SSH logins.
17 --------------------------------------------------
18 root@LEDE:/# uname -a
19 Linux LEDE 4.9.44 #0 SMP PREEMPT Tue Jun 26 11:00:25 2018 armv7l GNU/Linux
20 root@LEDE:/#
  • 到這裏,Openwrt就成功在R2上面運行起來了;後續我會發布更多的玩法,和你們一塊兒玩轉開源。

 

    歡迎你們批評指正,轉載請註明出處,多謝。ide

 

   
相關文章
相關標籤/搜索