Pi-topで普通のRaspbianを使う

2021年9月29日追記

最新のpi-topOS SiriusをPi-Top1で試しました。
多少モッサリ動きますが良く出来ていると思います。
無駄なDashboardも無くて、デスクトップマネージャのデザインが変更されただけな感じです。

https://www.pi-top.com/resources/download-os?hsLang=en

逆に、普通のRaspbianを入れて、aptのリポジトリから必要なモジュールだけ引っ張ってくる方法では、
インストールするモジュールが変更されていて、まだ上手くいっていません(>_<


2020年4月23日追記

本ページにあるgpgキーを使う方法だと，キーの有効期限が2020-04-17までなので，
期限以降に`sudo apt update`するとエラーになってしまいます．

```bash:gpgキーの取得
$ wget http://apt.pi-top.com/apt.pi-top.com.gpg.key
$ sudo apt-key add apt.pi-top.com.gpg.key
```
上のコマンドでキーの取得/追加を行っても変化がありません．．．
解決法を探し中です．

pi-top OSは「Polaris」から「Sirius」に代わっているので，その辺りの影響だと思われます．



#はじめに
Raspberry Piをラップトップ型PCにしてくれるキット「pi-top」。
公式のRaspbianを教育用にカスタマイズした「pi-topOS」が使われているのですが、
このOSが実にイケてない。

- 起動時に全画面スプラッシュを出すが、既にOSは起動完了しているのに無駄に時間だけ食っている。
- Dashboardという、アプリのランチャーが最初に起動する。日本語対応せず。
- CEED Universeという、教育用（だがあまり面白くない）ゲームが入っている。日本語対応せず。
- 通常のデスクトップ画面には、Dashboardから[Desktop]をクリックして移動。
- ターミナルが小さいウィンドウで開かず、必ず最大化で起動する。邪魔。

とまあ、イラつく要素がたくさんあります。
しかし、pi-topOSのメリットも重要。

- シャットダウンすると自動で電源を切ってくれる。(手動でも電源ボタン長押しすれば切れる)
- 音量・輝度・ファイルマネージャ・端末の起動キーが使える。(CEEDにはキーボードが無いが)
- 3D slashというボクセルのCGエディタは子供用にちょっと良さげ。

というわけで、
「pi-topOSは使いたくないけど、電源や特殊キーのために改変して使う」（本ページ末尾にその方法も記載）
という状況を打開し、
「公式Raspbianをpi-topハードに適応させて快適に使う」
としたいので、備忘録も兼ねて本ページを作りました。

#概要

作業内容は、
「公式Raspbianにpi-topOSのaptリポジトリを追加し、必要なソフトウェアをインストールする」
となります。
Linuxのシステム管理では比較的簡単な部類ではないかと思われます。

#ハードウェア構成
おそらく全てのpi-topシリーズで動作します。

動作確認済み機種
- pi-top V1
- pi-top CEED

#準備するもの
- 公式Raspbian stretchの入ったマイクロSDカード　[ダウンロード 2018-06-27-raspbian-stretch.zip](https://www.raspberrypi.org/downloads/raspbian/)
　今後継続して使用していくものなので、16GBなどのメイン用のカードを使います。
　既に使用中のRaspbianに対して操作しても構わないのですが、新しいイメージで作業を実施したほうが上手くいく気がします。


- pi-top公式OSの入ったマイクロSDカード　[ダウンロード pi-topOS-2018-07-09.zip](https://pi-top.com/products/os/#download)
　リポジトリ情報を取り出すためだけに一時的に使用します。4GB程度のカードで十分です。
　作業が終わったらフォーマットしてかまいません。

- USB接続のマイクロSDカードリーダー
- Win32DiskImagerやEtcherなどのイメージ書き込みソフト
　USBカードリーダーとイメージ書き込みソフトを使って、
　上記の公式Raspbianとpi-topOSのイメージをマイクロSDカードに書き込んでおきましょう。
　公式RaspbianのSDカードでRaspberry Piを起動した後は、
　pi-topOSのSDカードはカードリーダーに挿してRaspberry PiのUSBポートに挿しておきます。

#aptのリポジトリ・暗号鍵のコピー
debian系のパッケージマネージャ "apt"。
aptのリポジトリ情報やGPG暗号鍵の置き場所は/etc/apt/以下です。

###コピー元　pi-topOSのフォルダ構成
/etc/apt/
/etc/apt/**<font color="OrangeRed">trusted.gpg</font>**　<-この暗号鍵ファイルをRaspbianにコピー
/etc/apt/apt.conf.d/
/etc/apt/preferences.d/
/etc/apt/sources.list.d/
/etc/apt/trusted.gpg.d/
/etc/apt/sources.list.d/**<font color="MediumSeaGreen">pi-top.list</font>**　<- このソースリストをRaspbianにコピー


###コピー先　公式Raspbianのフォルダ構成
/etc/apt/
/etc/apt/trusted.gpg　　<-間違えてここに上書きしないよう注意！
/etc/apt/apt.conf.d/
/etc/apt/preferences.d/
/etc/apt/**<font color="Red">trusted.gpg.d/</font>**　<-この中に<font color="OrangeRed">trusted.gpg</font>をコピー
/etc/apt/**<font color="Blue">sources.list.d/</font>**　<- この中に<font color="MediumSeaGreen">pi-top.list</font>をコピー


"**<font color="MediumSeaGreen">pi-top.list</font>**"と"**<font color="OrangeRed">trusted.gpg</font>**”の２つのファイルをフォルダにpi-topOSに入っていたファイルをコピーし、apt-get updateしてリストを更新すれば、pi-top関連のソフトがインストールできるようになります。
(今後のためにも、この２ファイルをUSBメモリなどに保存しておくと良いかもしれません)

/etc/以下へのコピーなので、当然ですがsudo権限が必要です。

例:　pi-topOSのSDカードをUSBカードリーダーでRaspberry Piに挿し、/media/piにマウントされた場合

```
$sudo cp /media/pi/rootfs/etc/apt/sources.list.d/pi-top.list /etc/apt/sources.list.d/
$sudo cp /media/pi/rootfs/etc/apt/trusted.gpg /etc/apt/trusted.gpg.d/
```



#インストール手順

###aptの作業
まずはapt updateでリポジトリのリストを更新します。
upgradeはしません。というのは、初回起動時のRaspbianは更新情報がたくさんあり、
何百もの更新に時間がかかるからです。

```
$sudo apt update
```

次に、pi-topのシャットダウンやキーボードショートカットを司るソフトをインストールします。

```
$sudo apt install pt-hub
```


###SPI,I2Cの有効化
raspi-config、あるいはスタートメニューから[設定]-[Raspberry Piの設定]を使って、インターフェイスの「**SPI**」「**I2C**」を有効にしておきます。
pt-hubのインストールで自動的にI2Cは有効になるのですが、SPIは手動で有効にしないといけません。

###aptの作業2
イメージを焼いて起動したばかりの新品Raspbianの場合、全くアップデートしていないので多くのアプリケーションが古くなっています。
apt upgradeしないとpt-hubも正常に動作しませんでした。

※注意：
　upgradeの前に、不要なアプリケーションはアンイストールしておいた方が良いかもしれません。
　特にMathematica(wolfram-engine)やLibreOfficeなどはupgradeに多くの時間がかかります。
　これらをアンインストールすると1GB近く容量が空きます。

　以下は筆者がいつも使用しているコマンド例です。scratchやマイクラなども削除しています。

```
$sudo apt autoremove -y 	scratch nuscratch scratch2 \
				sonic-pi \
				wolfram-engine \
				bluej \
				greenfoot \
				python3-thonny \
				dillo \
				netsurf-common netsurf-gtk \
				epiphany-browser epiphany-browser-data \
				minecraft-pi python-picraft \
				claws-mail \
				libreoffice libreoffice-*
```

不要アプリケーションを削除して軽くなったところで、最終的なupgradeを実施します。

```
$sudo apt upgrade
```

全ての作業が終わったら再起動します。


#動作確認

スタートメニューから[shutdown]をクリックし、shutdownを選択してシャットダウンします。
あるいはターミナルから以下を打ち込んでシャットダウンします。

```
$sudo shutdown -h now
```

うまくpt-hubが効いていれば、シャットダウン後に電源LEDも消灯して電源が切れるはずです。
設定がうまくいっていないとkernelパニックになって止まってしまうことが多々あります。

ボリュームや輝度のキーも押して、正常に動作するか確認しておきましょう。

コツとしては、「pt-hubをインストールしてからapt upgrade」だと思われます。
先にapt upgradeをしてしまうと動作しないことが多いです。


#今後の展開

pi-topOS側の設定やバージョンが変わる都度、このページも更新しないといけませんね。


#余談：pi-topOSをRaspbian風に戻す方法

上記作業とは逆に、pi-topOSから不要アプリケーションを削除して公式Raspbianに近づける方法です。
（あくまで近づけるだけ、ですが）

pi-topOSのDesktop、スタートメニューにある[設定]-[Add/Remove Software]を使って
pt-splashscreen，pt-os-dashboard，ceed-universe
をremoveすれば問題の大半は解決できます。(pi-topのpiユーザ初期パスワードはpi-top)
ターミナルの最大化問題は、
/home/pi/.config/openbox/lxde-pt-rc.xmlの末尾に書かれたmaximizedタグの中身をyesからnoに書き換えます。

とはいえ、デザインが色々といじられているので、完全にRaspbianの初期状態と同じになるわけではありません。