HDDで起動させる(ArchLinux@ODROID-U2)

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

ODROID-U2にUSBハードディスクをつないで、USBハードディスク上のArch Linuxで運用する手順をメモ。
 

目標

ODROID-U2をUSBハードディスクで起動できるようにする。OSは ArchLinux。
 

母艦

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

作業の概要

まずはSDカードでODROID-U2を起動できるようにしておく。母艦側でUSBハードディスクに最新のrootfs(2014/12/02版)を流し込み、USBハードディスクで起動するようにU-Bootの設定をおこなう。
 

作業

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

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

su

 

USBハードディスクの準備

ディスクの状況を表示

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のハードディスク)
 
USBハードディスクを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: 68.9 GiB, 73933561856 bytes, 144401488 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           2 144401487 144401486 68.9G  b W95 FAT32

→新しくUSBハードディスクが/dev/sdbとして認識される
 

USBハードディスクのパーティションをおこなう

USBハードディスク(/dev/sdb)のパーティション・イメージ
  ↳第1パーティション(/dev/sdb1):/ ・・・・・・・・10G
  ↳第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: 68.9 GiB, 73933561856 bytes, 144401488 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           2 144401487 144401486 68.9G  b W95 FAT32


Command (m for help): d・・・・・・・・・・・・・・・・・・・・・・d:削除
Selected partition 1
Partition 1 has been deleted.

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

Using default response p.
Partition number (1-4, default 1): ・・・・・・・・・・・空Enter:第1パーティション
First sector (2048-144401487, default 2048): ・・・・・・空Enter
Last sector, +sectors or +size{K,M,G,T,P} (2048-144401487, default 144401487): +10G ・・・・+10G:10ギガ
Created a new partition 1 of type 'Linux' and of size 10 GiB.

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 (20973568-144401487, default 20973568): ・・空Enter
Last sector, +sectors or +size{K,M,G,T,P} (20973568-144401487, default 144401487): ・・・・・空Enter

Created a new partition 2 of type 'Linux' and of size 58.9 GiB.

Command (m for help): p・・・・・・・・・・・・・・・・・・・・・p:状況表示
Disk /dev/sdb: 68.9 GiB, 73933561856 bytes, 144401488 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           2048  20973567  20971520   10G 83 Linux
/dev/sdb2       20973568 144401487 123427920 58.9G 83 Linux


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

※やり直したい場合は「Command (m for help): 」のところで「q」を入れてEnterすると何も変更せず終了するので、再度fdisk /dev/sdb を実行
 
USBハードディスクの状態を再確認

fdisk -l /dev/sdb
Disk /dev/sdb: 68.9 GiB, 73933561856 bytes, 144401488 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           2048  20973567  20971520   10G 83 Linux
/dev/sdb2       20973568 144401487 123427920 58.9G 83 Linux

 

SDカードを作った時と同じように最新版のシステムをUSBハードディスクの第1パーティションに書き込む

USBハードディスク第1パーティション(/dev/sdb1)のフォーマット & マウント

mkfs.ext4 -b 2048 /dev/sdb1
mkdir root
mount /dev/sdb1 root

最新版の rootfs をダウンロード(作業時のバージョンは2014/12/02版)
※SDカードを作った時のが残っていれば不要
wgetコマンドがない場合はインストール→ pacman -S wget

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

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

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

 
起動時に第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パーティションのデバイス名です
 
USBハードディスクをアンマウント

umount root

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

ブートローダーの設定

ODROID-U2用のSDカードを母艦のParallelsへ挿し直してu-bootの設定を行う。
ODROID-U2が起動中なら ssh セッションで poweroff
電源を切ってからSDカードをParallelsへ接続する
 
ディスクの状況を表示

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         4096   135167   131072   64M 83 Linux
/dev/sdb2       135168 15644671 15509504  7.4G 83 Linux

※SDカードが/dev/sdbで認識されてる
 
USBハードディスクから起動するようにU-Bootスクリプトを作成
SDカードの第1パーティション(/dev/sdb1)をマウント

mkdir boot・・・・・SDカードを作った時のが残っていれば不要
mount /dev/sdb1 boot

 
boot.txtの作成

cd boot
vi boot.txt
setenv initrd_high "0xffffffff"
setenv fdt_high "0xffffffff"
setenv bootcmd "fatload mmc 0:1 0x40008000 zImage; fatload mmc 0:1 0x42000000 uInitrd; bootm 0x40008000 0x42000000"
setenv bootargs "console=tty1 root=/dev/sda1 rootwait mem=2047M"
boot

※下から2行目の root=/dev/sda1 でUSBハードディスクの第1パーティションを指定している
 
mkimageコマンドでboot.scrを作成
mkimageコマンドがない場合は uboot-tools をインストール→pacman -S uboot-tools

mkimage -T script -A arm -C none -n 'Odroid-U2 HDD Boot' -d boot.txt boot.scr
Image Name:   Odroid-U2 HDD Boot
Created:      Tue Dec 16 01:05:59 2014
Image Type:   ARM Linux Script (uncompressed)
Data Size:    256 Bytes = 0.25 kB = 0.00 MB
Load Address: 00000000
Entry Point:  00000000
Contents:
   Image 0: 248 Bytes = 0.24 kB = 0.00 MB

 
SDカードの第1パーティションをアンマウント

umount boot

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

いよいよ ODROID-U2の起動

SDカード・USBハードディスク・LANケーブルをODROID-U2に挿して電源投入
 
青色LEDが点滅、USBハードディスクのアクセス・ランプがチカチカして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 ~]# が出て来れば接続完了。
このままODROID-U2環境でディスク周りの環境設定
 
fdiskでディスクの状況を確認

fdisk -l
Disk /dev/mmcblk0: 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/mmcblk0p1        4096   135167   131072   64M 83 Linux
/dev/mmcblk0p2      135168 15644671 15509504  7.4G 83 Linux

Disk /dev/sda: 68.9 GiB, 73933561856 bytes, 144401488 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/sda1           2048  20973567  20971520   10G 83 Linux
/dev/sda2       20973568 144401487 123427920 58.9G 83 Linux

dfでマウント状況を確認

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       9.8G  447M  8.9G   5% /
devtmpfs        883M     0  883M   0% /dev
tmpfs          1011M     0 1011M   0% /dev/shm
tmpfs          1011M  1.5M 1010M   1% /run
tmpfs          1011M     0 1011M   0% /sys/fs/cgroup
tmpfs          1011M     0 1011M   0% /tmp
/dev/mmcblk0p1   64M  3.3M   61M   6% /boot
tmpfs           203M     0  203M   0% /run/user/0

→USBハードディスクの第1パーティションが/としてマウントされてる
→DSカードの第1パーティションが/bootにマウントされてる
 

最後にUSBハードディスクの第2パーティションの設定

USBハードディスクの第2パーティション(共有エリア)のマウントポイントを作成
とりあえず / 直下に share として作成

mkfs.ext4 -b 2048 /dev/sdb2
mkdir /share

fstab を編集(USBハードディスクの第2パーティションを/shareに自動マウントするため)

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

※最後の行を追加

リブートして再接続

reboot
ssh root@99.99.99.99

USBハードディスクの第2パーティションが自動マウントされているか確認

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       9.8G  447M  8.9G   5% /
devtmpfs        883M     0  883M   0% /dev
tmpfs          1011M     0 1011M   0% /dev/shm
tmpfs          1011M  1.5M 1010M   1% /run
tmpfs          1011M     0 1011M   0% /sys/fs/cgroup
tmpfs          1011M     0 1011M   0% /tmp
/dev/mmcblk0p1   64M  3.3M   61M   6% /boot
/dev/sda2        58G   16M   55G   1% /share
tmpfs           203M     0  203M   0% /run/user/0

→USBハードディスクの第2パーティション(/dev/sda2)が/shareにマウントされてる

これでUSBハードディスクの設定は終了。

あとはArchLinuxの初期設定

広告

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中

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