BerryBoot 的功能表修改[@more@]
設定成預設開機選項
1. Edit config:修改設定檔
2. Clone:系統複製,將一個系統複製另一系統
3. Console:開啟一個終端機
4. Set password:設定密碼
5. Repair file syetem:修復檔案系統
全新的繁體中文 WordPress 網站《宜蘭部落格教育平台 網站》
以在 ArchLinux 下操作為例
查看 SD 卡分割區
# fdisk -l
[@more@]建立掛載目錄 /mnt/mmcblk0p2
# mkdir /mnt/mmcblk0p2
將 /dev/mmcblk0p2 分割區掛到 /mnt/mmcblk0p2
# mount /dev/mmcblk0p2 /mnt/mmcblk0p2
切換到 /mnt/mmcblk0p2 目錄
# cd /mnt/mmcblk0p2
列出目錄
# ls
images 是放置 Image 的目錄
列出放置 Image 的目錄
從中比較特別的是 ArchLinux 和 Bananian
ArchLinux Desktop 是使用 ArchLinux Server ln -s 來進行連結
Bananian LAMP 和 Bananian LNMP 則是使用 BerryBoot 中的 clone 功能
# ls -l images
RISC OS 是開發給 ARM 架構使用的基於圖形用戶界面的電腦作業系統,更詳細的介紹可以參考:RISC OS – 維基百科,自由的百科全書
RISC OS for Raspberry Pi 下載頁面:http://www.raspberrypi.org/downloads/[@more@]開機畫面
不過,是英文介面
!PackMan 執行畫面,軟體名稱前面打綠色的勾,代表是已經安裝的軟體
因為一直找不到中文的相關套件,而且更慘的是,我還找不到可以關機的地方,所以雖然開機很快,還是放棄了!
树莓派(Raspberry pi)创客社区,树莓派官网中文,创客论坛,树莓派中文社区 – Powered by Discuz!
http://www.52pi.net/
Banana Pi Forum
http://forum.lemaker.org/index.php
寫這一篇文章的原因是有人詢問我相關的問題,我實作了一次。主要是在 Banana Pi – 從 SATA 硬碟上的 root 分割區來開機 這一篇文章中,已經將 root 分割區移至 SATA 硬碟上,所以原本使用的 SD 卡容量變不須要用那麼大,可以改用以前不要用的 64 / 128 / 256 / 512M …的記憶卡來開機。
但因為我沒有那麼小的 SD 卡,所以還是用原本的 16G SD 來實作。
這一片 SD 卡,原本是用來做 ArchLinux,有二個分割區
$ sudo fdisk -l /dev/sdb
[@more@]查看一下原本的記憶卡分割區配置狀況
$ sudo fdisk -l /dev/mmcblk0
分割 /dev/sdb,並將二個分割區刪除
$ sudo fdisk /dev/sdb
建立一個主要分割區,本來是要建的和原本一樣,但發現不同廠牌的 SD 卡,Blocks 數計算的起始位置好像不太一樣,所以就將就一些,只要建立分割區,不會比原來的小就可以了!
更改分割區的型別,將第一個分割區型別改成 c W95 FAT32 (LBA)
這一個部分最主要是讓 /dev/sdb1 的分割區可以開機(不確定是否一定要做)
將原本的 /dev/mmcblk0p1 使用 dd 指令複製到 /dev/sdb1
$ sudo dd if=/dev/mmcblk0p1 of=/dev/sdb1
系統關機後,改用製作好的這一片 SD 卡來開機,看是否能正常開機
$ sudo fdisk -l
可以發現原本的 /dev/mmcblk0 只剩下一個用來開機的分割區
感謝 隨風浮雲 所提供的資訊,參考了 Cortex-A/M: Banana Pi: Boot your rootfs from SATA,把 root 分割區搬移到 SATA 硬碟上。
底下文章的內容,主要參考上述的網站,但比較大的不同是,原文是用整顆的 SSD,我是用筆記型電腦汰換下來的 2.5″inch 120G 硬碟,也只用到其中的一個分割區。
1. 查看硬碟分割區狀況
$ sudo fdisk -l /dev/sda[@more@]刪掉 3 / 4 / 5 分割區
格式化 /dev/sda3 分割區為 ext4 格式
$ sudo mkfs.ext4 /dev/sda3
建立 /tmp/1 和 /tmp/target 用來掛載的目錄
$ sudo mkdir /tmp/1 /tmp/target
將 /dev/mmcblk0p2 分割區掛載到 /tmp/1
$ sudo mount /dev/mmcblk0p2 /tmp/1
將 /dev/sda3 分割區掛載到 /tmp/target
$ sudo mount /dev/sda3 /tmp/target
切換到 /tmp/1 目錄
$ cd /tmp/1
將 /dev/mmcblk0p2 複製到 /dev/sda3
$ sudo tar –backup -c * | sudo tar -C /tmp/target -xv
修改 /dev/mmcblk0p1 的 uEnv.txt 設定檔,讓系統從 /dv/sda3 的分割區啟動
建立掛載 /dev/mmcblk0p1 分割區的目錄 /tmp/boot
$ sudo mkdir /tmp/boot
掛載 /dev/mmcblk0p1 分割區到 /tmp/boot 目錄
$ sudo mount /dev/mmcblk0p1 /tmp/boot
修改設定
$ sudo sed -i ‘s|root=/dev/mmcblk0p2|root=/dev/sda3|’ /tmp/boot/uEnv.txt
最後善後工作
切換回使用者家目錄
$ cd
取消掛載之前掛載的分割區 /tmp/1 /tmp/target /tmp/boot
$ sudo umount /tmp/1 /tmp/target /tmp/boot
刪除臨時掛載的目錄 /tmp/1 /tmp/target /tmp/boot
$ sudo rm -rf /tmp/1 /tmp/target /tmp/boot
重新開機讓設定生效
$ sync;sync;sync;reboot
從 SATA 硬碟上的 root 分割區來開機,速度會快嗎?照理來說,應該是會,但我的硬碟的舊的,所以感受不太出來,也許換成 SSD,就可以很有感了!
因為 ArchLinux 的部份一直無法製作成功,所以直接下載別人製作好的比較快,雖然自己很不喜歡這樣,但還是 ……
下載網址:在官方網站的論壇上 BerryBoot Images – Other – Banana Pi Forum
目前共有 Bananian / Raspbian / Lubuntu / ArchLinux / Gentoo 可以下載,除了 Gentoo 外,應該都是目前的最新版本。[@more@]下載之後,使用 7-Zip 解壓縮成 .img 檔,可以複製到隨身碟,
或使用 WinSCP 之類的程式,上傳到 /dev/mmcblk0p2 分割區的 images 目錄之下
建立掛載目錄 /mnt/mmcblk0p2
# mkdir /mnt/mmcblk0p2
將 /dev/mmcblk0p2 分割區掛載到 /mnt/mmcblk0p2
# mount /dev/mmcblk0p2 /mnt/mmcblk0p2
切換到放置 Image 的目錄
# cd /mnt/mmcblk0p2/images
因為之前是在 Raspbian 下製作的,但一直沒有成功,想會不會是系統的關係,所以改用 ArchLinux 來製作。
安裝所須套件
# pacman -S squashfs-tools kpartx
error: target not found: kpartx
但發現系統沒有 kpartx 這一個套件,在 Creating Arch Linux disk image – ArchWiki 這一篇中找到了解答,原來 kpartx 是屬於 multipath-tools-git 套件,而且是要以 AUR 的方式來安裝。
[@more@]
AUR 是 Arch User Repository 的縮寫,是由 ArchLinux 社群所維護的套件儲庫,每一個套件都包含 PKGBUILD,讓使用者可以使用 makepkg 指令把程式的始碼編譯成套件。
安裝編譯時所須套件
# pacman -S –needed base-devel
:: There are 25 members in group base-devel:
:: Repository core
1) autoconf 2) automake 3) binutils 4) bison 5) fakeroot 6) file 7) findutils 8) flex 9) gawk 10) gcc
11) gettext 12) grep 13) groff 14) gzip 15) libtool 16) m4 17) make 18) pacman 19) patch
20) pkg-config 21) sed 22) sudo 23) texinfo 24) util-linux 25) which
Enter a selection (default=all):
連線到 AUR (en) – Home:https://aur.archlinux.org/
安裝 wget 來下載 Source Code
# pacman -S wget
安裝編譯 multipath-tools-git 所需套件
# pacman -S setconf
切換到一般使用者身份,因為系統不建議使用 root 身份來進行編譯
# su bananapi
下載 multipath-tools-git
$ wget https://aur.archlinux.org/packages/mu/multipath-tools-git/multipath-tools-git.tar.gz
解壓縮
$ tar xvzf multipath-tools-git.tar.gz
切換目錄
$ cd multipath-tools-git
進行編譯
$ makepkg
==> Tidying install…
-> Purging unwanted files…
-> Removing libtool files…
-> Removing static library files…
-> Removing empty directories…
-> Compressing man and info pages…
-> Stripping unneeded symbols from binaries and libraries…
==> Creating package “multipath-tools-git”…
-> Generating .PKGINFO file…
-> Generating .MTREE file…
-> Compressing package…
==> Leaving fakeroot environment.
==> Finished making: multipath-tools-git 1397.aec68ab-1 (Sat Oct 4 16:48:36 CST 2014)
切換回 root 身份
$ exit
安裝 multipath-tools-git
# pacman -U /home/bananapi/multipath-tools-git/multipath-tools-git-1397.aec68ab-1-armv7h.pkg.tar.xz
# which kpartx
/usr/bin/kpartx
重新在 AcrhLinux 上製作給 BerryBoot 使用的 Image,還是失敗!
不知道是什麼原因,但只好暫且先放棄了!
原本以為在 BerryBoot 中使用的 Image 檔的製作方式都是一樣,所以製作了 Raspbian / Lubuntu / Bananian / ArchLinux,在測試時,前三者都沒有問題,唯獨 ArchLinux 有問題,後來使用 Google 在網路上搜尋了一下,發現好像 ArchLinux 的製作方式有些不一樣。
參考網頁:
Arch Linux ARM • View topic – Installation problems with BerryBoot
Convert other Linux distributions for Berryboot – Developer-Blog
Raspberry Pi • View topic – rPi, BerryBoot, ArchLinux (2 out of 3 ain’t bad!)
底下是重新製作的方式:[@more@]
kpartx 使用參數
$ kpartx
usage : kpartx [-a|-d|-l] [-f] [-v] wholedisk
-a add partition devmappings
-r devmappings will be readonly
-d del partition devmappings
-u update partition devmappings
-l list partitions devmappings that would be added by -a
-p set device name-partition number delimiter
-g force GUID partition table (GPT)
-f force devmap create
-v verbose
-s sync mode. Don’t return until the partitions are created
將 .img 檔的第二個分割區取出來
$ sudo kpartx -av ArchLinux_For_BananaPi_v2_0.img
add map loop0p1 (253:0): 0 102400 linear /dev/loop0 2048
add map loop0p2 (253:1): 0 7063552 linear /dev/loop0 104448
建立 /mnt/tmp 目錄
$ sudo mkdir /mnt/tmp
將第二個分割區掛載到 /mnt/tmp
$ sudo mount /dev/mapper/loop0p2 /mnt/tmp/
切換目錄到 /mnt/tmp
$ cd /mnt/tmp
刪除 /mnt/tmp/lib 目錄
$ sudo rm lib
搬移 /mnt/tmp/usr/lib 目錄成為 /mnt/tmp/lib 目錄
$ sudo mv usr/lib lib
切換到 /mnt/tmp/usr 目錄
$ cd usr
進行目錄連結
$ sudo ln -s ../lib lib
切換回使用者目錄
$ cd
進行轉換
$ sudo mksquashfs /mnt/tmp/ converted_ArchLinux_image_for_berryboot.img -comp lzo -e lib/modules
Parallel mksquashfs: Using 2 processors
Creating 4.0 filesystem on converted_ArchLinux_image_for_berryboot.img, block size 131072.
[=- ] 191/29051 0%
卸載 /mnt/tmp 分割區
$ sudo umount /mnt/tmp
$ sudo rm -rf /mnt/tmp
$ sudo kpartx -d ArchLinux_For_BananaPi_v2_0.img
loop deleted : /dev/loop0
將製作好的 Image 移到 BerrBoot 的 Image 目錄
$ sudo mv converted_ArchLinux_image_for_berryboot.img /media/berryboot/images/ArchLinux_For_BananaPi_v2_0_Server.img