Raspberry PiにOSをインストールする

提供: Akionux-wiki
Share/Save/Bookmark
移動: 案内検索

概要

Raspberry PiはSDカードにOSを載せて動く。そのため、初めて動かすときは、SDカードにOSのイメージをflushすることでOSのインストールを行う。 その手順を説明する。

ここではLinux上のCUIで作業することを前提として説明する。

用意するもの

  • Raspberry Pi本体
  • 作業用のPC
  • Raspberry Pi用のモニタ(HDMI接続)
  • Raspberry Pi用のキーボード
  • Raspberry Pi用の電源。これは、Androidのスマートフォンなどの充電器で出力が5V1A以上[1]のもので、microUSBケーブルで接続するもの。

OSイメージのダウンロード

Raspberry Pi公式サイトのDownloadsのOperating System Imagesの項目から、好きなLinuxディストリビューションを選んでイメージをダウンロードする。

私の場合はArch Linux(ArchLinuxARM-2014.06-rpi.img.zip)を採用することとした。

イメージをSDカードにflushする

SDカードを作業用PCのカードリーダーに入れて、先ほどダウンロードしたイメージをddコマンドでSDカードにflushする。 まずイメージファイルの入ったZIPを解凍する:

cd ~/Download
unzip ArchLinuxARM-2014.06-rpi.img.zip 
Archive:  ArchLinuxARM-2014.06-rpi.img.zip
  inflating: ArchLinuxARM-2014.06-rpi.img

解答したイメージファイルをddコマンドで書き込むが、このとき書き込み先のSDカードのデバイスが/devのどこにあるか十分確認する。書き込み先を間違えたら間違えた先のデバイスが上書きされてしまうという悲劇が起こる。

SDカードが/dev/sdfで認識されているときは、

sudo dd bs=4k conv=fsync if=ArchLinuxARM-2014.06-rpi.img of=/dev/sdf
478720+0 レコード入力
478720+0 レコード出力
1960837120 バイト (2.0 GB) コピーされました、 99.6823 秒、 19.7 MB/秒

で書き込み完了。一度SDカードを抜いて、

lsblk
(略)
sdf      8:80   1  59.1G  0 disk 
├─sdf1   8:81   1    90M  0 part 
├─sdf2   8:82   1     1K  0 part 
└─sdf5   8:85   1   1.7G  0 part 
(略)

という表示が出れば、うまく書き込めている。

あとは、Raspberry PiへSDカードを挿入し、電源をつないで起動できたら確認完了である。

起動したら、ユーザー名はroot、パスワードはrootでログインできる。後はLinuxの世界である。

基本設定

先ほどまでのSDカードをRaspberry Piへ挿入して起動したら、rootでログインする。 ここからは、[2]で説明されているArch Linuxにおける基本的な設定を行う。

まず、一時的に日本語キーボード配列を設定する:

# loadkeys jp106

ロケールを東京にする:

# unlink /etc/localtime
# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

rootのパスワードを変更する:

# passwd
Enter new UNIX password:
Retype new UNIX password:

一般ユーザー「pi」を作る:

# useradd -m -g users -s /bin/bash -G audio,games,lp,optical,power,scanner,storage,video pi

piのパスワードを設定する:

# password pi
Enter new UNIX password:
Retype new UNIX password:

Arch Linuxのパッケージ管理システムPacmanのダウンロードサーバーの設定を行う。デフォルトのダウンロードサーバーは制限がかかっているので、変更を加える。

# vi /etc/pacman.d/mirrorlist

「United States」にあるいずれかのミラーサーバーで「Server =」の行の行頭の「#」を削除し、コメントアウトを外す。 変更を保存したら、Pacmanのデータベースを更新してみよう:

# pacman -Syy

sudoをPacmanでインストールする:

# pacman -S sudo

piがsudoを使えるようにvisudoで設定を行う:

# visudo

次の行の行頭の「#」を外す:

# %sudo ALL=(ALL) NOPASSWD: ALL

sudoグループにpiを追加する:

# groupadd sudo
# usermod -aG sudo pi

キーボード配列を永続的にjp106にする[3][4]

# echo KEYMAP=jp106 > /etc/vconsole.conf

以上の設定が終わったら、再起動してpiユーザーでログインし設定を続ける。

# shutdown -r now

パーティションの拡張

イメージをflashした時点ではルートパーティションは2Gしかないので、パーティションを変更して拡大しておくとよい。

作業用PCにRaspberry PiのSDカード上を挿入してパーティション変更を行う手順をいかに説明する。 作業の前には必要に応じてデータのバックアップをとっておくこと。 私の環境では作業用PCにおいてRaspberry PiのSDカードは/dev/sdfとして認識されているとする。環境によって/dev/以下のどこに認識されるかはことなるので注意。 また、コマンドを間違えるとデータが消滅する悲惨なことにもなりうるので、その点は十分に認識しておくこと。

パーティション変更前:

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
... 
sdf      8:80   1  59.1G  0 disk 
├─sdf1   8:81   1    90M  0 part 
├─sdf2   8:82   1     1K  0 part 
└─sdf5   8:85   1   1.7G  0 part 
...

partedでパーティションを変更:

$ sudo parted /dev/sdf
GNU Parted 2.3
/dev/sdf を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) unit chs                                                         
(parted) print                                                            
モデル: Multi Flash Reader (scsi)
ディスク /dev/sdf: 32784,47,61
セクタサイズ (論理/物理): 512B/512B
BIOS シリンダ、ヘッド、セクタ geometry: 32784,61,62.  1シリンダは 1936kB。
パーティションテーブル: msdos

番号  開始      終了       タイプ    ファイルシステム  フラグ
 1    0,33,2    49,16,57   primary   fat16             lba
 2    49,16,58  969,51,47  extended
 5    49,49,60  969,51,47  logical   ext4
(parted) rm 2                                                             
(parted) mkpart extended 49,16,58 32784,47,61
(parted) print
モデル: Multi Flash Reader (scsi)
ディスク /dev/sdf: 32784,47,61
セクタサイズ (論理/物理): 512B/512B
BIOS シリンダ、ヘッド、セクタ geometry: 32784,61,62.  1シリンダは 1936kB。
パーティションテーブル: msdos

番号  開始      終了         タイプ    ファイルシステム  フラグ
 1    0,33,2    49,16,57     primary   fat16             lba
 2    49,16,58  32784,47,61  extended                    lba
(parted) mkpart logical 49,49,60 32784,47,61                      
(parted) print
モデル: Multi Flash Reader (scsi)
ディスク /dev/sdf: 32784,47,61
セクタサイズ (論理/物理): 512B/512B
BIOS シリンダ、ヘッド、セクタ geometry: 32784,61,62.  1シリンダは 1936kB。
パーティションテーブル: msdos

番号  開始      終了         タイプ    ファイルシステム  フラグ
 1    0,33,2    49,16,57     primary   fat16             lba
 2    49,16,58  32784,47,61  extended                    lba
 5    49,49,60  32784,47,61  logical   ext4

(parted) quit

整合性のチェック:

$ sudo e2fsck -f /dev/sdf5 
e2fsck 1.42.9 (4-Feb-2014)
Pass 1: Checking iノードs, blocks, and sizes
Iノードs that were part of a corrupted orphan linked list found.  修正<y>? yes
Iノード 530 was part of the orphaned iノード list.  FIXED.
Iノード 30712 was part of the orphaned iノード list.  FIXED.
Pass 2: Checking ディレクトリ structure
Pass 3: Checking ディレクトリ connectivity
Pass 4: Checking reference counts
Pass 5: Checking グループ summary information

/dev/sdf5: ***** ファイルシステムは変更されました *****
/dev/sdf5: 41586/108864 files (0.9% non-contiguous), 200640/434944 blocks

resize2fsでパーティションを拡張:

$ sudo resize2fs /dev/sdf5 
resize2fs 1.42.9 (4-Feb-2014)
Resizing the filesystem on /dev/sdf5 to 15475456 (4k) blocks.
The filesystem on /dev/sdf5 is now 15475456 blocks long.

パーティション変更を確認:

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
...
sdf      8:80   1  59.1G  0 disk 
├─sdf1   8:81   1    90M  0 part 
├─sdf2   8:82   1     1K  0 part 
└─sdf5   8:85   1    59G  0 part 
...

References

  1. 日経BP社, 「ラズパイマガジン」, p.6, 2014年8月.
  2. 日経BP社, 「ラズパイマガジン」, p.60, 2014年8月.
  3. https://wiki.archlinux.org/index.php/Keyboard_Configuration_in_Console_%28%E6%97%A5%E6%9C%AC%E8%AA%9E%29
  4. http://d.hatena.ne.jp/accelolita/20130916/1379257518