SDカードの作成と起動(ArchLinux@ODROID-U2)

ODROID-U2にArch Linuxをインストールする(2014/12/15)

以前はイメージファイル(img)で提供されていたんだけど、最近のODROID-U2用ArchLinuxはrootfsをただアーカイブしたもので提供されていて、自分でboot可能なSDカードを作らないといけなくなった。ArchLinuxのページにはSDカードの作り方も紹介されているけど、自分の環境ではODROID-U2を起動できるSDカードを作ることができない・・・ なので、別の方法でODROID-U2を起動可能なSDカードを作る手順をメモ。
 

目標

ODROID-U2をSDカードで起動できるようにする。OSは ArchLinux。
 

母艦

iMac:27inch, Late 2009
OSX:v10.10.1
Parallels Desktop:v10.1.1
ゲストOS:ArchLinux(3.17.4-1-ARCH)
 

作業の概要

一旦、古いイメージファイル(2014/07/01版)でSDカードを作成。その後、最新のrootfs(2014/12/02版)を流し込み、ODROID-U2を起動させる。
 

作業

母艦のParallelsのゲストOS(ArchLinux)のターミナルで作業を行う

通常のユーザならsuコマンドでrootに移行

su

 

古いイメージファイルでSDカードを作成

古いイメージファイル(2014/07/01版)をダウンロード
wgetコマンドが無ければインストール→ pacman -S wget

wget http://mirror.lug.udel.edu/pub/archlinuxarm/os/ArchLinuxARM-odroid-u2-latest.img.gz

 
圧縮されているので解凍
gzipコマンドが無ければインストール→ pacman -S gzip

gzip -d ArchLinuxARM-odroid-u2-latest.img.gz

ディスクの状況を表示

fdisk -l
Disk /dev/sda: 64 GiB, 68719476736 bytes, 134217728 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x51e7a11e

Device     Boot Start       End   Sectors Size Id Type
/dev/sda1        2048 134217727 134215680  64G 83 Linux

/dev/sdaのみが認識されている(ゲストOSのハードディスク)
 
SDカードをParallelsのゲストOSに接続
 
再びfdiskで状況を表示

fdisk -l
Disk /dev/sda: 64 GiB, 68719476736 bytes, 134217728 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x51e7a11e

Device     Boot Start       End   Sectors Size Id Type
/dev/sda1        2048 134217727 134215680  64G 83 Linux

Disk /dev/sdb: 7.5 GiB, 8010072064 bytes, 15644672 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
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot Start      End  Sectors  Size Id Type
/dev/sdb1        8192 15644671 15636480  7.5G  b W95 FAT32

→新しくSDカードが/dev/sdbとして認識される
 
解凍したイメージファイルをSDカードに書き込む
※SDカードの内容は消えちゃいます

dd bs=20M if=ArchLinuxARM-odroid-u2-latest.img of=/dev/sdb
188+1 records in
188+1 records out
3948937216 bytes (3.9 GB) copied, 442.796 s, 8.9 MB/s

 
SDカードの状態を確認

fdisk -l /dev/sdb
Disk /dev/sdb: 7.5 GiB, 8010072064 bytes, 15644672 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
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot  Start     End Sectors  Size Id Type
/dev/sdb1         4096  135167  131072   64M 83 Linux
/dev/sdb2       135168 7712767 7577600  3.6G 83 Linux

※イメージファイルを書き込むと、SDカードは2つのパーティションになる。
SDカード(/dev/sdb
  ↳第1パーティション(/dev/sdb1):boot ・・・ブートローダー用
  ↳第2パーティション(/dev/sdb2):/ ・・・ルート
 

SDカードの第2パーティションを作り直して最新版の rootfs を書き込む

SDカードの第2パーティション(/dev/sdb2)を一旦削除してから再度追加する

fdisk /dev/sdb
Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p・・・・・・・・・・・・・・・・・・・・・・p:状況表示
Disk /dev/sdb: 7.5 GiB, 8010072064 bytes, 15644672 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
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot  Start     End Sectors  Size Id Type
/dev/sdb1         4096  135167  131072   64M 83 Linux
/dev/sdb2       135168 7712767 7577600  3.6G 83 Linux ←←←sdb2のStartを確認
                                                        この例だと 135168

Command (m for help): d・・・・・・・・・・・・・・・・・・・・・・d:削除
Partition number (1,2, default 2): ・・・・・・・・・・・空Enter:第2パーティション

Partition 2 has been deleted.

Command (m for help): n・・・・・・・・・・・・・・・・・・・・・・n:新規
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): ・・・・・・・・・・・・・・・・・・・・・・空Enter:プライマリ

Using default response p.
Partition number (2-4, default 2): ・・・・・・・・・・・空Enter:第2パーティション
First sector (2048-15644671, default 2048): 135168 ←←←←元々のsdb2のStartの値
Last sector, +sectors or +size{K,M,G,T,P} (135168-15644671, default 15644671): ・・・・空Enter
Created a new partition 2 of type 'Linux' and of size 7.4 GiB.

Command (m for help): p・・・・・・・・・・・・・・・・・・・・・・p:状況表示
Disk /dev/sdb: 7.5 GiB, 8010072064 bytes, 15644672 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
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot  Start      End  Sectors  Size Id Type
/dev/sdb1         4096   135167   131072   64M 83 Linux
/dev/sdb2       135168 15644671 15509504  7.4G 83 Linux


Command (m for help): w・・・・・・・・・・w:書き込み(もし間違っていたらqで終了)
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

重要:第2パーティション作成時の First Sector は、元々の第2パーティションの Start の値を指定すること
※やり直したい場合は「Command (m for help): 」のところで「q」を入れてEnterすると何も変更せず終了するので、再度fdisk /dev/sdb を実行

SDカードの状態を再確認

fdisk -l /dev/sdb
Disk /dev/sdb: 7.5 GiB, 8010072064 bytes, 15644672 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
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot  Start      End  Sectors  Size Id Type
/dev/sdb1         4096   135167   131072   64M 83 Linux
/dev/sdb2       135168 15644671 15509504  7.4G 83 Linux

 
SDカード第2パーティション(/dev/sdb2)のフォーマット & マウント

mkfs.ext4 -b 1024 /dev/sdb2
mkdir root
mount /dev/sdb2 root

 
最新版の rootfs をダウンロード(作業時のバージョンは2014/12/02版)

wget http://archlinuxarm.org/os/ArchLinuxARM-odroid-u2-latest.tar.gz

 
ダウンロードした rootfs の内容を書き込む

bsdtar -xpf ArchLinuxARM-odroid-u2-latest.tar.gz -C root

 
第1パーティション(/dev/sdb1)をマウントし、第2パーティションのbootディレクトリの内容をコピーする

mkdir boot
mount /dev/sdb1 boot
cp root/boot/* boot

 
起動時に第1パーティションを /boot にマウントするために fstab を編集
※エディタは自分で使い慣れたエディタで編集

vi root/etc/fstab
#
# /etc/fstab: static file system information
#
# <file	system>	<dir>	<type>	<options>	<dump>	<pass>
/dev/mmcblk0p1	/boot	vfat	defaults,relatime	0	0

※最後の行を追加。/dev/mmcblk0p1 は、ODROID-U2が起動した時のSDカード第1パーティションのデバイス名です。
 
SDカードをアンマウント

umount boot root

ParallelsからSDカードを接続解除
※この時に「セットしたディスクは、このコンピュータで読み取れないディスクでした。」とメッセージが出るので、「取り出す」を選択。
 
SDカードを母艦から取り外す
 
これで準備は完了
 

いよいよ ODROID-U2の起動

SDカードとLANケーブルをODROID-U2に挿して電源投入
 
青色LEDが点滅してEthernetのランプが灯れば成功!!
ODROID-U2のip-addressを調べて母艦のターミナルから ssh 接続。
ユーザ:root 、パスワード:root

ssh root@99.99.99.99
The authenticity of host '99.99.99.99 (99.99.99.99)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes・・・・・・・・・・yes
Warning: Permanently added '99.99.99.99' (RSA) to the list of known hosts.
root@99.99.99.99's password: ・・・・・・・・・・・・・・・・・・・パスワード:root
[root@alarm ~]#

ODROID-U2のArchプロンプト[root@alarm ~]# が出て来れば接続完了。
 
このあとは、
 
USBハードディスクにrootfsを移して使いたい場合は、USBハードディスクのセットアップ
 
このままSDカードで使っていく場合はArchLinuxの初期設定

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。