BeagleBone Black to płyta główna, posiadająca na pokładzie procesor TI Sitara AM3359 taktowany zegarem 1GHz, zbudowany w oparciu o ARMv7l Cortex-A8, 512 MB pamięci RAM DDR3 o taktowaniu 606MHz, kartę graficzną PowerVR SGX530 oraz 2 GB wbudowanej pamięci flash eMMC. Dzięki takiej konfiguracji jest w stanie uruchamiać pokaźną ilość systemów operacyjnych. W dzisiejszym artykule opiszemy ich instalację.

Narzędzia do instalacji

Windows

Pod Windowsem będziemy używali głównie narzędzia Win32 Disk Imager.

Linux

Pod Linuksem będziemy korzystali głównie z konsoli, polecenia xz i dd. Przyda nam się też pakiet xz-utils, a także gnome-disk-utility. Kartę SD należy wcześniej całkowicie wyczyścić, bez jej wstępnego formatowania.

Ubuntu 12.04.2 LTS

Ubuntu 12.04.2 LTS posiada długoterminowe wsparcie, a także jak wiemy zaktualizowane jądro Linux 3.8. Obraz systemu posiada jądro armhf 3.8 autorstwa Roberta Nelsona.

Pobieramy obraz systemu: ubuntu-precise-12.04.2-armhf-3.8.13-bone20.img.xz (June 9, 2013). Sprawdzamy jego sumę kontrolną md5: 19e81997cce7217a68c04088d8f31edd, a następnie instalujemy przy użyciu polecenia:

xz -cd ubuntu-precise-12.04.2-armhf-3.8.13-bone20.img.xz > /dev/sdb

Teraz trzeba jeszcze przeładować tablicę partycji:

partprobe /dev/sdb

Możemy także rozpakować całość i wgrać z użyciem dd:

dd if=ubuntu-precise-12.04.2-armhf-3.8.13-bone20.img of=/dev/sdb

Odczekujemy chwilkę, aż wszystko zostanie wgrane na kartę, po czym wkładamy ją do BeagleBone Black, wciskamy mały przycisk przy czytniku i włączamy zasilanie. Powinien załadować się nam system.

Dane do logowania się:
nazwa: ubuntu-armhf
użytkownik: ubuntu
hasło: ubuntu

Ubuntu 13.04

Ubuntu 13.04 to najnowsza aktualnie wersja systemu Ubuntu z jądrem Linux 3.8. Obraz systemu posiada jądro armhf 3.8 autorstwa Roberta Nelsona.

Pobieramy obraz systemu: ubuntu-raring-13.04-armhf-3.8.13-bone20.img.xz (June 9, 2013). Sprawdzamy jego sumę kontrolną md5: b3883d8d0edd3a157e1ce85f7490d235, a następnie instalujemy przy użyciu polecenia:

xz -cd ubuntu-raring-13.04-armhf-3.8.13-bone20.img.xz > /dev/sdb

Teraz trzeba jeszcze przeładować tablicę partycji:

partprobe /dev/sdb

Możemy także rozpakować całość i wgrać z użyciem dd:

dd if=ubuntu-raring-13.04-armhf-3.8.13-bone20.img of=/dev/sdb

Odczekujemy chwilkę, aż wszystko zostanie wgrane na kartę, po czym wkładamy ją do BeagleBone Black, wciskamy mały przycisk przy czytniku i włączamy zasilanie. Powinien załadować się nam system.

Dane do logowania się:
nazwa: ubuntu-armhf
użytkownik: ubuntu
hasło: ubuntu

Debian 7.0 Wheezy

Debian 7.0 Wheezy to najnowsza aktualnie wersja systemu Debian z jądrem Linux 3.8. Obraz systemu posiada jądro armhf 3.8 autorstwa Roberta Nelsona.

Pobieramy obraz systemu: debian-wheezy-7.0.0-armhf-3.8.13-bone20.img.xz (June 9, 2013). Sprawdzamy jego sumę kontrolną md5: 0fceaa0455cc32eb0f42ef10dca68605, a następnie instalujemy przy użyciu polecenia:

xz -cd debian-wheezy-7.0.0-armhf-3.8.13-bone20.img.xz > /dev/sdb

Teraz trzeba jeszcze przeładować tablicę partycji:

partprobe /dev/sdb

Możemy także rozpakować całość i wgrać z użyciem dd:

dd if=debian-wheezy-7.0.0-armhf-3.8.13-bone20.img of=/dev/sdb

Odczekujemy chwilkę, aż wszystko zostanie wgrane na kartę, po czym wkładamy ją do BeagleBone Black, wciskamy mały przycisk przy czytniku i włączamy zasilanie. Powinien załadować się nam system.

Dane do logowania się:
nazwa: debian-armhf
użytkownik: debian
hasło: debian

ArchLinux ARM

Arch Linux nie posiada gotowego obrazu do wgrania. Musimy ręcznie wgrać sobie pliki na kartę. Jednakże zaletą tego rozwiązania jest to, że będziemy mieli do dyspozycji od razu całą dostępną przestrzeń karty.
Uruchamiamy program fdisk:

fdisk /dev/sdb
  • Teraz kasujemy wszystkie stare partycje wciskając o.
  • Sprawdzamy partycje, jakie są na karcie z użyciem p.
  • Tworzymy nową partycję: wciskamy n, następnie p jako primary, 1 dla pierwszej partycji na dysku, akceptujemy Enterem domyślny pierwszy sektor, a następnie wpisujemy +64M, aby ustawić wielkość na 64 MB.
  • Wciskamy t, w celu zmiany typu partycji, następnie e aby ustawić ją jako W95 FAT16
  • Wciskamy a, potem 1 dla flagi bootującej na pierwszej partycji.
  • Teraz wpisujemy n, następnie p dla primary, 2 dla drugiej partycji na dysku, dwa razy wciskamy Enter dla domyślnego pierwszego i ostatniego sektora.
  • Zapisujemy tablicę partycji, wciskając w.

Tworzymy system plików FAT16 na pierwszej partycji:

mkfs.vfat -F 16 /dev/sdb1

Tworzymy system plików Ext4 na drugiej partycji:

mkfs.ext4 /dev/sdb2

Pobieramy paczkę z bootloaderm i rozpakowujmy ją na pierwszą partycję. Paczka zawiera bootloader, wymagany do uruchomienia jądra Linux. Plik MLO musi zostać umieszczony na partycji FAT z poziomu użytkownika root.

wget http://archlinuxarm.org/os/omap/BeagleBone-bootloader.tar.gz
mkdir boot
mount /dev/sdb1 boot tar -xvf BeagleBone-bootloader.tar.gz -C boot
umount boot

Pobieramy paczkę z systemem plików i rozpakowujemy to na drugiej partycji. To też wykonujemy z poziomu użytkownika root.

wget http://archlinuxarm.org/os/ArchLinuxARM-am33x-latest.tar.gz
mkdir root
mount /dev/sdb2 root tar -xvf ArchLinuxARM-am33x-latest.tar.gz -C root
umount root

Odczekujemy chwilkę, aż wszystko zostanie wgrane na kartę, po czym wkładamy ją do BeagleBone Black, wciskamy mały przycisk przy czytniku i włączamy zasilanie. Powinien załadować się nam system.

Logowanie się do systemu:
Użytkownik: root
Hasło: root

Instalacja na pamięci wewnętrznej eMMC

Aby zainstalować Arch Linuksa na pamięci wewnętrznej postępujemy zgodnie z punktami 4 – 7, a jako urządzenie wybieramy /dev/mmcblk1p[1|2]. Partycjonowanie nie jest wymagane, z racji że BBB posiada je poprawnie zrobione.

Artykuł ten jest częścią serii o BeagleBone Black. Za dostarczenie płytki dziękujemy BOTLAND.com.pl

Rozszerzanie drugiej partycji na Ubuntu i Debianie

Jak zapewne większość z was zauważyła, przy wgrywaniu obrazów Ubuntu i Debiana, mają one po około 1.9 GB. Jest to zrobione po to, aby system mógł się zmieścić bez problemu na wszystkie karty SD i pamięci wbudowane. Jednakże, co jeżeli ktoś ma kartę 4GB i większą? Nie ma tutaj żadnego problemu z tym.

Sprawdzamy aktualne partycje na karcie:
fdisk /dev/mmcblk0

root@ubuntu-armhf:/home/ubuntu# fdisk /dev/mmcblk0

Command (m for help): p

Disk /dev/mmcblk0: 3904 MB, 3904897024 bytes
4 heads, 16 sectors/track, 119168 cylinders, total 7626752 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x80000000

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1   *        2048        4095        1024    1  FAT12
/dev/mmcblk0p2            4096     3751935     1873920   83  Linux

Command (m for help): 

Jak widzimy powyżej mamy aktualnie dostępne dwie partycje o rozmiarach odpowiednio: 1024 i 1 873 920 bloków, które dzieląc przez 1024 MB da nam wielkość partycji. Zatem partycja mmcblk0p1 posiada 1 MB, natomiast mmcblk0p2 równa się 1830 MB.

Teraz musimy wykasować tą drugą partycję, zatem wciskamy d, a następnie 2 dla drugiej partycji:

Command (m for help): p

Disk /dev/mmcblk0: 3904 MB, 3904897024 bytes
4 heads, 16 sectors/track, 119168 cylinders, total 7626752 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x80000000

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1   *        2048        4095        1024    1  FAT12
/dev/mmcblk0p2            4096     3751935     1873920   83  Linux

Command (m for help): d
Partition number (1-4): 2

Command (m for help): p

Disk /dev/mmcblk0: 3904 MB, 3904897024 bytes
4 heads, 16 sectors/track, 119168 cylinders, total 7626752 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x80000000

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1   *        2048        4095        1024    1  FAT12

Command (m for help):

Następnie wciskamy n dla nowej partycji, p dla podstawowej, i 2 dla drugiej. Teraz musimy określić sektor startowy i końcowy, zatem wystarczy że dwa razy wciśniemy Enter.

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (1-4, default 2): 2
First sector (4096-7710719, default 4096): 
Using default value 4096
Last sector, +sectors or +size{K,M,G} (4096-7710719, default 7710719): 
Using default value 7710719

Command (m for help): p

Disk /dev/mmcblk0: 3947 MB, 3947888640 bytes
4 heads, 16 sectors/track, 120480 cylinders, total 7710720 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x80000000

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1   *        2048        4095        1024    1  FAT12
/dev/mmcblk0p2            4096     7710719     3853312   83  Linux

Command (m for help):

Teraz wystarczy zapisać zmiany, jakie dokonaliśmy, wciskając w. Może się okazać, że tablica partycji jest zajęta, więc wystarczy ponownie uruchomić maszynę. Ale i tak powinno się to zrobić dla bezpieczeństwa.

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

Mamy już drugą partycję większą, zatem rozszerzymy nasz system plików o tą wielkość, przy użyciu narzędzia resize2fs.

root@ubuntu-armhf:/home/ubuntu# df   
Filesystem     1K-blocks   Used Available Use% Mounted on
/dev/mmcblk0p2   1811704 281964   1436044  17% /
none                   4      0         4   0% /sys/fs/cgroup
devtmpfs          253756      4    253752   1% /dev
none               50780    220     50560   1% /run
none                5120      0      5120   0% /run/lock
none              253900      0    253900   0% /run/shm
none              102400      0    102400   0% /run/user
/dev/mmcblk0p1      1004    472       532  48% /boot/uboot
root@ubuntu-armhf:/home/ubuntu# 
root@ubuntu-armhf:/home/ubuntu# resize2fs /dev/mmcblk0p2
resize2fs 1.42.5 (29-Jul-2012)
Filesystem at /dev/mmcblk0p2 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mmcblk0p2 is now 952832 blocks long.

root@ubuntu-armhf:/home/ubuntu# df
Filesystem     1K-blocks   Used Available Use% Mounted on
/dev/mmcblk0p2   3719696 282876   3269320   8% /
none                   4      0         4   0% /sys/fs/cgroup
devtmpfs          253756      4    253752   1% /dev
none               50780    220     50560   1% /run
none                5120      0      5120   0% /run/lock
none              253900      0    253900   0% /run/shm
none              102400      0    102400   0% /run/user
/dev/mmcblk0p1      1004    472       532  48% /boot/uboot
root@ubuntu-armhf:/home/ubuntu# 

I mamy aktualnie całą dostępną kartę do naszego własnego użytku.

Kopia zapasowa systemu

Obraz wgrany, system zaktualizowany i przystosowany do pełnej pracy. Teraz wypadałoby zrobić sobie jego kopię zapasową, aby w razie jakiegoś błędu, móc bez problemu go przywrócić. W tym celu użyjemy narzędzia dd, aczkolwiek można wykorzystać także program Clonezilla.

dd if=/dev/sdb of=/home/użytkownik/kopia-zapasowa.img