[Linux] Raspberry Pi にSlackware ARMをインストールする

# はじめに

ここでは、Slackware LinuxのARM版を動かすために、micro sdにパーティションを作り、必要最低限のLinux環境をインストールする手順を記します

インストール作業で、いくつかのLinuxコマンドを使います。ある程度コマンドに慣れている必要があります

コマンドに記されている ${TARGET_DEV} はSDカードのデバイスを指します。/dev/sda など、実際の環境に応じて適宜読み替えてください。もし間違ったデバイスを指定してしまうと、既存の環境を破壊してしまう恐れがありますので注意して作業してください

# 0. 準備

## 必要なもの

* 4GB以上のmicro sd
* micro sdに書き込むためのLinuxマシン
* Slackwareのrootイメージ
* Raspberry Piのbootファイル一式(ブートローダー、ファームウェア、カーネル)

## rootイメージのダウンロード

以下のURLにアクセスし、一番下の"here"をクリックします

Slackware ARM
https://arm.slackware.com/installation/

![image](https://qiita-image-store.s3.amazonaws.com/0/61404/4313c56c-0d61-09e1-0c10-3423ea6b31db.png)

slack-current-minirootの.tar.xzファイルと、details.txtファイルをダウンロードしてください

![image](https://qiita-image-store.s3.amazonaws.com/0/61404/b25612c4-58c4-c9a0-aece-6acbb1fd1a30.png)

## Raspberry Piのbootファイル一式をダウンロード

以下のURLにアクセスし、Download ZIPボタンをクリックしてください

GitHub - raspberrypi/firmware
https://github.com/raspberrypi/firmware

![image](https://qiita-image-store.s3.amazonaws.com/0/61404/b0e864ad-7322-1cd8-c792-bfc13a4e21d8.png)

## Linuxマシン

これらのファイルをLinuxマシン置き、micro sdをセットすれば準備は完了です

イメージ
![image](https://qiita-image-store.s3.amazonaws.com/0/61404/32e13433-f700-e371-b9d1-46fb54a43028.png)


以降の手順は、Linuxマシンからの作業になります

# 1. パーティションテーブルの構築

## パーティションを削除

一旦、既に作られているパーティションを削除します

<pre>
# dd if=/dev/zero of=${TARGET_DEV} bs=1K count=1
</pre>

## パーティションの作成

以下の通りに、partedコマンドを実行します

<pre>
# parted -s ${TARGET_DEV} mklabel msdos
# parted -s ${TARGET_DEV} mkpart primary fat16 1MiB 64MiB
# parted -s ${TARGET_DEV} mkpart primary ext4  64MiB 100%
</pre>

## フォーマット

1番目のパーティションをvfat、2番目のパーティションをext4形式でフォーマットします

<pre>
# mkfs.vfat ${TARGET_DEV}1
# mkfs.ext4 ${TARGET_DEV}2
</pre>

## 確認

fdiskで確認して、以下のようになればOKです (8GBのmicro sdを使った場合)

<pre>
# fdisk -l /dev/sda
Disk /dev/sda: 7.2 GiB, 7751073792 bytes, 15138816 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: 0x55197317

Device     Boot  Start      End  Sectors  Size Id Type
/dev/sda1         2048   131071   129024   63M  e W95 FAT16 (LBA)
/dev/sda2       131072 15138815 15007744  7.2G 83 Linux
</pre>

# 2. bootパーティションのインストール

1番目の63MBの領域をbootパーティションとして使います

## ファームウェアのコピ―

BootパーティションにRaspberry Piのファームウェアをコピーします

ダウンロードしたZIPファイルを展開

<pre>
# unzip firmware-master.zip
# cd firmware-master
</pre>

bootパーティションをマウント

<pre>
# mount ${TARGET_DEV}1 /mnt
</pre>

bootディレクトリ配下をマウントしたディレクトリへコピー

<pre>
# cp -Rf boot/* /mnt
</pre>

以下の内容でconfig.txtを作成(お好きなように変更してください)

<pre>
dtparam=i2c_arm=on
disable_overscan=1
hdmi_force_hotplug=1
hdmi_drive=2
hdmi_group=1
hdmi_mode=16
</pre>

## アンマウント

<pre>
# umount /mnt
</pre>

# 3. rootパーティションのインストール

## マウント

<pre>
# mount ${TARGET_DEV}2 /mnt
</pre>

## rootイメージの展開

マウントした場所に.tar.xzの内容を展開します

<pre>
# tar -C /mnt -xvpf slack-current-miniroot_11Feb16.tar.xz
</pre>
※ rootイメージのリリース日によって、ファイル名の日付部分が変わります。ダウンロードしたファイルに合わせて、適宜読み替えてください

## モジュールのインストール

bootファイルのZIPを展開した場所に移動します

<pre>
# cd firmware-master
</pre>

modulesディレクトリの中身を/lib/modulesにコピーします

<pre>
# mkdir /mnt/lib/modules
# cp -Rf modules/* /mnt/lib/modules
</pre>

## /etc/fstabの編集

起動時にmicro sdのパーティションをマウントするために、fstabを編集します

<pre>
# vi /mnt/etc/fstab
</pre>

以下の内容を記述します
<pre>
/dev/mmcblk0p1 /boot vfat defaults 0 0
/dev/mmcblk0p2 / ext4 defaults,noatime 0 0
</pre>

## /etc/inittabの編集

「“s0” respawning to fast」のメッセージが出てしまうので、シリアル用のコンソールを無効にします
エディタでinittabを開き、以下の行をコメントアウトしてください

<pre>
# vi /mnt/etc/inittab
</pre>

<pre>
s0:12345:respawn:/sbin/agetty 115200 ttyS0 vt100
</pre>

## keymapの変更

初期状態では、イギリスのキーボードに設定されているため、刻印通りの文字が打てません。日本語用に設定します。
rc.keymapをエディタで開き、loadkeysで読み込むkeymapをjp106(日本語用)に変更してください

<pre>
# vi /mnt/etc/rc.d/rc.keymap
</pre>

以下の通りに変更

<pre>
変更前:
  /usr/bin/loadkeys uk.map

変更後:
 /usr/bin/loadkeys jp106.map
</pre>

## アンマウント

<pre>
# umount /mnt
</pre>

# インストール完了

以上でインストール手順は終了です。

作成したmicro sdをRaspberry Piにセットして起動してください

ログインはroot、パスワードは準備作業でイメージと一緒にダウンロードしたdetails.txt に書いてあります