ローリングコンバットピッチなう!

AIとか仮想化とかペーパークラフトとか

raspberry piにUbuntu 20.04 LTSをインストールする

Ubuntu 16.04 LTSにはRaspberry Pi Imager for Ubuntuがインストール出来ない

raspberry piの公式ダウンロードサイトに行くとRaspberry Pi Imagerというソフトを使ってOSイメージをSD Cardに焼ける様になっています。
以前はNOOBSとかのイメージをddコマンドやその他のイメージ書き込みツールを使ってSD Cardに書き込む必要がありますが、ずいぶんとユーザーフレンドリーになっています。

し・か・し
どうやら母艦がUbuntu 16.04だとRaspberry Pi Imagerがインストール出来ない様です。Raspberry Pi Imagerが要求する依存パッケージのバージョンがUbuntu 16.04に載っているものより新しいらしく、dpkgが依存性を解決できません。まあ、色々ごにょごにょすればイケるとは思うのですが、現環境を壊したく無いので別の手を考えます。

Ubuntu公式サイトからRaspberry Pi用イメージファイルをダウンロードする

ubuntu.com

Raspberry piの公式サイトでは無く、Ubuntu公式サイトからお目当てのモデル用のOSイメージをダウンロードします。

ダウンロードしたら下記URLに記載の手順でSD Cardにイメージを焼きます。
https://ubuntu.com/tutorials/create-an-ubuntu-image-for-a-raspberry-pi-on-ubuntu#2-on-your-ubuntu-machine

SD Cardのsystem-bootパーティション上のファイルを編集する

SD Cardをraspberry piに差し込む前に、母艦上でSD Card上のsystem-bootパーティションを編集します。
編集対象のファイルは2つです。

system-boot/user-data

下記の様のデフォルトユーザー・パスワード(ubuntu/ubuntu)のexpireをtrue→falseに書き換えます。
これをやっておかないとubunturaspberry pi上で立ち上げてもログインに失敗を繰り返します。
最初、これに滅茶苦茶はまりました。

# On first boot, set the (default) ubuntu user's password to "ubuntu" and
# expire user passwords
chpasswd:
  expire: false
  list:
  - ubuntu:ubuntu

system-boot/usercfg.txt

これはraspbianの/boot/config.txt相当のファイルです。
config.txtも存在しますが、ユーザーが追加する設定はこちらに書く様です。

raspbianのconfig.txtに設定できる内容は全て設定できるんじゃないかと思います。

www.raspberrypi.org

ここでHDMI関係の設定をしておきます。

hdmi_safe=1
hdmi_drive=2
hdmi_group=2
hdmi_mode=16

hdmi_modeはお使いのモニターの解像度に合わせて適切に設定してください。

編集終わったら、SD Cardをunmountし、raspberry piに差し込み、さらにUSBキーボードとモニターに繋いでbootすればraspberry pi上でubuntuの操作が可能になります。
デフォルトではDHCPIPアドレスを取得する様になっているので、DHCPサーバー上でraspberry piアサインされたIPアドレスが判れば、キーボードとモニター繋がなくてもsshでログインして設定を継続できます。
初期のユーザー名・パスワードはubuntu/ubuntuです。

自分は有線イーサーを使っており、ubuntu 20.04 LTSでの固定IPの振り方調べて固定IPにして使っています。


後はキーボードを日本語キーボード設定にしたりとか、いくつかやることがありますが、その辺はubuntu 20.04なので特にraspberry pi固有のところは無さそうです。

raspbianをstretchからbusterにアップグレード

raspberry pi 2 Bのraspbianをstretchからbusterにアップグレードするメモ

まずapt update,apt upgrade,apt dist-upgradeをやっておく。

$ sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list
$ sudo apt update
$ sudo apt --simulate upgrade
$ sudo apt upgrade
$ sudo apt dist-upgrade

成功したらreboot。途中何度もY/N聞かれるので適当に答える。

結構時間かかったけど、取り敢えず成功したっぽいです。

busterにアップグレードした理由

下記のエントリ(2年前)で書いたのですが、うちのpi2Bはクロック600MHz固定で運用しています。
rc30-popo.hatenablog.com

理由は900MHzにするとapt updateやapt upgradeがsegmentation fault等で失敗するから。
「等」と書いたのは実行する度にエラーの内容が変わり不安定。

おそらく電源とか発熱かなと思って、電源変えたりしたんですが、全然解決せず色々試して判った事はcpufreq utilsと使ってCPU freq governorを"powersave"にして600MHz運用にすると安定するということ。

600MHz運用では一度も謎のエラーに遭遇した事はありません。
そのうちヒートシンクでも付けて見ようと思いつつ、2年間そのままだったのですが先週思い立ってAmazonヒートシンクを買い取り付けてみました。
それでgovernorをperformanceやondemandにしてapt updateを掛けてみたのですが、やはり動作不安定が再発。

OSを最新版に変えて事象が変わるか確認するためにアップグレードしましたが、結果はNGでした。

pi@raspberrypi:~ $ sudo cpufreq-set -g ondemand
pi@raspberrypi:~ $ sudo apt update
取得:1 http://archive.raspberrypi.org/debian stretch InRelease [25.4 kB]       
ヒット:2 http://raspbian.raspberrypi.org/raspbian buster InRelease             
25.4 kB を 2秒 で取得しました (11.7 kB/s)                         
Segmentation fault読み込んでいます... 43%
pi@raspberrypi:~ $ sudo apt update
ヒット:1 http://raspbian.raspberrypi.org/raspbian buster InRelease
取得:2 http://archive.raspberrypi.org/debian stretch InRelease [25.4 kB]
25.4 kB を 2秒 で取得しました (13.0 kB/s)
double free or corruption (out) す... 99%
中止

毎回同じエラーになるわけで無く、ランダムにエラーの出方が変わります。ヒートシンクが役に立たないのかそもそも発熱問題ではないか?

f:id:RC30-popo:20200615080717j:plain
raspberry pi 2 MODEL B+ヒートシンク付き