Orange Pi 3 docker (debian buster systemd)

やはりdebian busterではsystemdは有効にならないようです。
セキュリティーの観点、運用からもdockerの1プロセス1コンテナ原則のようです。
但しローカル内での学習目的やちょっとした遊びにはsystemdが使えたほうが便利なこともあると思います。
docker hubにはdebian buster systemdのコンテナもあるのですが初心者(当サイト)には使い方がわかりませんでした。
systemdを有効にするためにここのくだりを参考にしました。
https://serverfault.com/questions/607769/running-systemd-inside-a-docker-container-arch-linux

debianの公式イメージには直接適用されないようなので一旦ssh serverコンテナを作成してみます。

openssh server

適当なディレクトリを作成してその中でDockerfileを実行します。

$ docker build -t buster-ssh ./

Dockerfile

FROM debian:latest
RUN apt-get update && apt-get -y upgrade && apt-get -y install openssh-server locales tzdata
RUN mkdir /var/run/sshd
RUN echo "root:xxxxxxxx" | chpasswd
RUN sed -i "33i PermitRootLogin yes" /etc/ssh/sshd_config
RUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 && cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
CMD ["/usr/sbin/sshd", "-D"]

イメージbuster-sshができるのでこれをsystemdでrunします。

$ docker container run -it --name openssh-server --cap-add SYS_ADMIN -v /sys/fs/cgroup:/sys/fs/cgroup:ro buster-ssh /bin/systemd


起動したままになるので別ターミナルからstop
docker container ls -aからopenssh-serverを確認して再度start
sshで接続

& docker container stop openssh-server
$ docker container start openssh-server
$ ssh root@172.17.0.2


systemdが有効になっていますね。
ロケールとタイムゾーンは設定されているはずです。
ほかに追加したい項目があればここで設定してcommitしておきます。
buster/openssh-server

& docker container stop openssh-server
$ docker container commit openssh-server buster/openssh-server

xorg

作成したbuster/openssh-serverを基にX関連を追加します。
vncはtightvncserver WMはdwmをインストール

$ docker build -t buster-xorg ./

Dockerfile

$ FROM buster/openssh-server:latest
RUN apt-get update && apt-get -y upgrade && \
apt-get -y install xserver-xorg xterm tightvncserver autocutsel dwm vim

CMD ["/bin/systemd"]

上記と同じくsystemdでrun

$ docker container run -it --name buster-X --cap-add SYS_ADMIN -v /sys/fs/cgroup:/sys/fs/cgroup:ro buster-xorg /bin/systemd

コンテナをリスタートdocker container execかsshから環境を設定します。

$ docker container stop buster-X
$ docker container start buster-X
$ ssh root@172.17.0.2
# vncpasswd
# vncserver -geometry 600x450 :2

当サイトはvnc接続したOrangePi3に構築しているのでポート番号は2以降を指定しています。

$ vncviewer 172.17.0.2:2


日本語フォントをインストール、fontconfigを設定.Xresourcesなど追加
/root/.vnc/xstartupを設定して最低限の起動画面を作成
ウインドウマネージャーは変更してもいいし後からいつでも変えられます。
設定が済んだらコミットします。

$ docker container commit buster-X buster/xorg

コミットしたbuster/xorgからnetworkを指定して運用するコンテナを作成

$ docker container run -it --net=orangepi3-network --ip=172.18.0.23 --name buster_dwm --cap-add SYS_ADMIN -v /sys/fs/cgroup:/sys/fs/cgroup:ro buster/xorg /bin/systemd

作成したコンテナが正常に起動できたらbuster/openssh-server buster/xorg以外の不要なコンテナ、イメージを削除

vncboot

vncbootを有効にしないとコンテナをスタート、ログインしてvncserverを起動しなければvncviewerから接続できません。docker cpでコピーするのが簡単と思います。
パーミッションはroot 実行権限を付けておきます。

$ docker cp vncboot /etc/init.d

ログインしてenable

# systemctl enable vncboot

vncbootにはポート番号が記載されています。2以降の任意の番号に変更するのがいいでしょう。vncviewerからその番号を指定します。

vncserverはtightvncserverをインストールしています。
tigervncserverはbuster(ARM64?)では起動しません。これはdebian系のbugのようです。
https://github.com/TigerVNC/tigervnc/issues/800
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=923962
現package versionも変更が無いことからまだ解決には至ってないようです。

buster_dwm


dwmをコンパイルしたdwm6.2に変更しています。
dwmは実行ファイル(59Kb)も小さく依存するファイルも必要ないことから/usr/local/binに放り込んでおくだけで問題なく使えます。dmenuは追加でインストールできます。
Xの確認また操作にある程度慣れていればそのまま十分実用になります。
但し今回はホストのOrangePi3でdwmを使っているためキーバインドは全てホスト側に摂られています。実質xstartup,xtermからのみコントロールすることになります。

buster_openbox

$ docker container run -it --net=orangepi3-network --ip=172.18.0.24 --name buster_openbox --cap-add SYS_ADMIN -v /sys/fs/cgroup:/sys/fs/cgroup:ro buster/xorg /bin/systemd


起動時メモリ消費量はdwm 30MB openbox+lxpanelで45MB位になるようです。
起動するアプリケーショやデーモンがあるとどんどん増えていきます。
pcmanfmからはドライブが見えなくなっています。


buster_dwmにsurfをインストール、xstartupから起動してmoode player,radikoを表示させてみました。
動作としては問題ないのですがraspbianに比べてメモリ消費量が大きくなるようです。
Xコンテナも用途によって使い分けたり新しくしたほうがいいようです。

buster_openssh

今回作成したコンテナはssh接続も可能ですがrunするとXも起動するためメモリ消費が多くなります。cliでssh接続するためbuster_opensshからコンテナを作成します。

$ docker container run -it --net=orangepi3-network --ip=172.18.0.22 --name buster_ssh --cap-add SYS_ADMIN -v /sys/fs/cgroup:/sys/fs/cgroup:ro buster/openssh /bin/systemd


各コンテナの起動タイミングはメモリの状況やOSなどの条件で接続はそれぞれ違ってきます。一つのボタンでコンテナをrunそして接続することは無理があります。
alpineだけはsleepに3秒入れておけば繋がるのですがほかのOSは初回起動時と以降の差が大きいのでsleepに1を入れて1回失敗させ(runだけしといて)再度間合いをおいて接続するようにしています。
この辺はもう少しスマートな方法がないか考えてみたいと思います。

docker kill(stop)ボタン
起動中の全コンテナを安全にストップします。

subprocess.run("docker container stop $(docker ps -q)", shell=True)

docker restart ボタン
作業中時折agettyを握って一つのcpuが100%に張り付いてしまうことがあります。
dockerをrestartしても直らないのですがagettyをkillするついでにdockerもrestartしています。

subprocess.run("sudo killall agetty", shell=True)
subprocess.run("sudo systemctl restart docker", shell=True)

コンテナの停止時間を充分見ていれば大丈夫かな(?)

Orange Pi 3 docker (debian stretch desktop)

docker debian stretchでdocker desktopを作成してみました。

現在docker hubにはdebian busterが登録されていますが当サイトの環境(OrangePi3 armbian stretch)ではbusterをうまく動作させることができませんでした。
最新のarmbianもbusterがリリースされていますがOSは起動はするもののtigervncserverがこけてしまいます。この現象はdockerのbusterも同じです。
またdocker busterはsystemdを有効にしてrunしても直後は正常にデーモンが起動しますがコンテナを再スタートするとsystemdが有効になっていないようです。(なにか変わった?)
この辺はOrangePi3を含めて少し様子をみたいと思います。

IMAGE ID 0b6ef40e3f79 (debian_version 9.9)を使いました。(現在入手方法は?)

流れとしてはdebian(stretch)からコンテナdebian2を作成、必要なパッケージをインストール、イメージdebian2をコミット、イメージdebian2からsystemdを有効にしてコンテナdebian3を作成、設定して最後に保存したいイメージstretch、コンテナstretchを作成します。(nameは適当です)

debian2

OrangePi3からはtigervncserverに接続します。tightvncのウインドウサイズ固定に対してtigervncはある程度dwmのウインドウに自動で合わせてくれます。
WMはopenboxにあとlxpanelを追加しました。

$ docker container run --name debian2 -it 0b6ef40e3f79 /bin/bash

# apt update && apt -y upgrade
# apt -y install tcsh lv vim less procps \
xserver-xorg xterm \
tigervnc-standalone-server tigervnc-common \
openbox lxpanel leafpad \
locales dialog systemd-sysv

日本語入力 (uim-anthy) — 必要なら
/root/font_set/font_set.sh

#!/bin/sh
apt install -y fonts-ipafont fonts-ricty-diminished
apt install -y uim uim-anthy
cp /root/font_set/*conf /etc/fonts/conf.avail
cd /etc/fonts/conf.d
ln -s ../conf.avail/65-fonts-ipa-mincho.conf
ln -s ../conf.avail/65-fonts-ipa-pgothic.conf
ln -s ../conf.avail/65-fonts-monospace.conf

実行

# sh font_set.sh


65xxxconfは過去記事のどこかにあります。(検索可)
予めホスト側で作成してdocker cpでコピーするのが簡単だと思います。
漢字を有効にするには.bashrcに追記しても有効にすることはできませんでした。
当サイトではtcshをインストール、~/.cshrcに記載しています。

デフォルトのshellはbashでOK
tigervncserverではxstartupもsh.cshどちらでもOKのようです。
/root/.cshrc

setenv  LANG   ja_JP.UTF-8
setenv  XMODIFIERS @im=uim
setenv  GTK_IM_MODULE uim
setenv  QT_IM_MODULE uim

vncboot
このファイルも用意しておきます。vncboot

# chmod 755 vncboot
# cp /etc/init.d

作業が終わったら # exit してコミットします。
最初のcommitはファイルが大きくなっているので少し時間がかかります。

$ docker container commit debian2 debian2

コンテナdebian3作成

$ docker container run --privileged -d -p 5902:5902 --name debian3 debian2 /bin/systemd

debian3

$ docker container exec -it debian3 /bin/bash

ロケールの設定

# dpkg-reconfigure locales


raspbianでは馴染みのあるダイアログですね。
最初の画面でja_JP.UTF-8を選択して次にこの画面でja_JP.UTF-8を有効にします。

タイムゾーンの設定

# timedatectl set-timezone Asia/Tokyo

 

vncserver

コンテナ起動時vncserverを有効にします。

# systemctl daemon-reload
# systemctl enable vncboot
# systemctl start vncboot
# systemctl status vncboot

vncserverが起動していたらkillしてパスワード設定

# vncserver -kill :2
# vncpasswd

/root/.vnc/vnc.conf
tigervncserverはlocalhost=noを指定しないと外部から接続できません。

$geometry     = "846x502";
$depth        = 24;
$desktopName  = "debian";
$localhost    = "no";

/root/.vnc/xstartup

#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid gray15
vncconfig nowin=1 &
uim-xim &
lxpanel &
sleep 1
cd && xterm -geometry 80x24+180+110 &
openbox &
sleep 5
uim-toolbar-gtk &

xtermを使う場合は~/.Xresourcesを適切に設定しておきます。
準備ができたらvncserver起動

# vncserver :2

クライアントから接続

$ vncviewer -SecurityTypes VncAuth,TLSVnc -passwd ~/.vnc/passwd 172.17.0.2:2


クライアント(OrangePi3)にはtigervncviewerをインストールしています。
OrangePi3もtigervncserverのホストとして稼働しています。同じパスワードを設定していいれば自身のパスワードを-passwdスイッチとして使用できます。
ここでコンテナをリスタートして問題なく接続できることを確認。debian busterではリスタート後ここで接続できませんでした。


lxpanelの体裁を好みのスタイルに合わせてここでコミットします。

$ docker container commit debian3 stretch

docker networkを作成

$ docker network create orangepi3-network
$ docker network inspect orangepi3-network
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"

コミットしたイメージからnetworkを付加して新たにコンテナを作成

$ docker container run --net=orangepi3-network --ip=172.18.0.9 --privileged -d -p 5902:5902 --name stretch stretch /bin/systemd

問題なく起動するようであれば不要なコンテナを削除

$ docker container rm debian3
$ docker container rm debian2


作成したイメージ(stretch)は940MBになりました。起動は約10秒位かかります。
stretchは先に作成したdebian3の差し分けになっているはずなのでイメージdebian3をrmするとタグが外れています。(削除はできません)
パッケージはpcmanfmとlxappearanceを追加しています。
pcmanfmからはホストのドライブが全部見えています。rootでログインしているので扱い注意です。

ボタン(OrangePi3から実行)

# Button debian
def debian():
    subprocess.run("docker container start stretch", shell=True)
    time.sleep(10)
    subprocess.run("vncviewer -SecurityTypes VncAuth,TLSVnc -passwd ~/.vnc/passwd 172.18.0.9:2 &", shell=True)
    root.quit()
icon3 = PhotoImage(file='~/.icons/64x64/debian.png')
button3 = ttk.Button(
    frame1,
    image=icon3,
    command=debian)
button3.grid(row=2,column=1)

lxpanelはpulseaudioを依存でインストールします。mplayerなどをインストールするとコンテナからホストを通してpulseaudio serverに接続可能になります。
smtubeのコンパイルやあまり重くない動画の再生もOKです。
終了はターミナルからpoweroffでコンテナstopします。
ホストにインストールする前のテストやコンテナで処理しても問題ないような用途に使っていきたいと思います。

Orange Pi 3 docker (CentOS)

前回のalpineに続いて学習用CentOSのコンテナを作成してみました。

CentOSではsystemdを使いたいので–privilegedオプションでコンテナを作成、sshからログインすることにしました。

CentOSは使い慣れていないOSでそれもdockerコンテナということもありlocaleの設定で躓いてしまいました。

CentOS

docker hubからpull run(–name centos-opi3 適当)

$ docker pull centos
$ docker container run --privileged -d --name centos-opi3 centos /sbin/init

ホストから.bashrcをコピー、コンテナに入ります。

$ docker cp .bashrc centos-opi3:/root
$ docker container exec -it centos-opi3 /bin/bash

アップデート

# yum -y update

localeの確認

# localectl                              
   System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: us
# localectl list-locales | grep -i ja
なし
# locale -a
C
POSIX
# locale                               
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

localeの設定

何度かコンテナを作り直して結果的に下記の方法でうまくいきました。

# localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
# localectl set-locale LANG=ja_JP.UTF-8
# source /etc/locale.conf

設定後

# localectl
   System Locale: LANG=ja_JP.UTF-8
       VC Keymap: us
      X11 Layout: us
# localectl list-locales | grep -i ja
ja_JP.utf8
# locale -a
C
POSIX
ja_JP.utf8

localeはコマンドラインからexport

# export LANG=ja_JP.UTF-8
# locale
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=

localeはユーザー設定になると思うのでコンテナに直接入った場合は読み込まないようです。適切なユーザーでログイン.bashrc(.cshrc)などから設定を読み込む。

タイムゾーンの設定

# date
2019年  7月  7日 日曜日 03:18:21 UTC
# timedatectl set-timezone Asia/Tokyo
# date
2019年  7月  7日 日曜日 12:20:11 JST

ツールのインストール

# yum -y install tcsh less file bind-utils whois iproute wget

openssh-server

sshd_configはPermitRootLogin yesを有効にしてroot passwordを設定しておきます。

# yum -y install openssh-server openssh-clients
/etc/ssh/sshd_config
PermitRootLogin yes
# systemctl enable sshd
# systemctl start sshd
# passwd
Changing password for user root.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

ホストから別ターミナルを開いてsshからログインできることを確認

$ ssh root@172.17.0.2
root@172.17.0.2's password:
# date
2019年  7月  7日 日曜日 12:52:48 JST

コミット

コンテナから抜けてここでコミット、新しいコンテナ(centos)を作成
コンテナをstopするとexecでアクセスすることは不可になります。

$ docker container stop centos-opi3
$ docker container commit centos-opi3 centos-ssh
$ docker container run --privileged -d --name centos centos-ssh /sbin/init
$ docker container rm centos-opi3

コンテナスタート

$ docker container start centos


poweroffでコンテナstop
ターミナルをexitで抜けるとコンテナは起動したままになっています。


webではCentOSベースの記事が多いですね。少し使ってみたいと思います。
CentOSと比べるとalpineのベースイメージの小ささがよくわかります。少し詰め込むと大きくなりますが特定の用途や実験などにはいいかもしれません。

起動ボタン

# Button centos
def centos():
    subprocess.run("docker container start centos", shell=True)
    time.sleep(3)
    subprocess.run("xterm -e ssh root@172.17.0.2 &", shell=True)
icon2 = PhotoImage(file='~/.icons/64x64/centos.png')
button2 = ttk.Button(
    frame1,
    image=icon2,
    command=centos)
button2.grid(row=1,column=2)

rangerは前回のalpineの要領で入れています。(pythonはベースイメージにインストール済)
現状はdocker networkを構成していないのでalpineを先に起動するとipが(172.17.0.3)となってボタンの指定とずれてしまいます。(今後の勉強次第ですね)

Orange Pi 3 Docker-CE (Alpine Linux)

Orange Pi 3(ARM64/AARCH64)もraspbian同様Docker-CEを簡単にインストールできるようです。
https://tomono.tokyo/2019/04/22/7578/

目的はコンテナを作成するにあたりOSの学習用またdockerの練習用として気軽に試せる環境を作成しようと思います。
今回はまずalpineコンテナを作成してみます。

ホスト

$ uname -a
Linux orangepi3 5.1.15-sunxi64 #5.90.190703 SMP Thu Jul 4 00:31:21 CEST 2019 aarch64 GNU/Linux

Docker-CEのインストール

$ curl -fsSL get.docker.com -o get-docker.sh

ホームディレクトリで実行するとスクリプト(get-docker.sh)がダウンロードされます。

$ sudo sh get-docker.sh
----
Client:
 Version:           18.09.7
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        2d0083d
 Built:             Thu Jun 27 17:56:21 2019
 OS/Arch:           linux/arm64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.7
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       2d0083d
  Built:            Thu Jun 27 17:23:19 2019
  OS/Arch:          linux/arm64
  Experimental:     false
---

ユーザー権限で実行する

sudo usermod -aG docker your-user

Alpine Linux

docker hubからalpineをpull

$ docker pull alpine
$ docker image ls
alpine     latest       e67514d6f5dd        2 weeks ago         5.33MB

コンテナ作成 –name alpine3(適当)

$ docker container run --name alpine3 -it alpine /bin/sh
/ # ls
bin   dev   etc   home   lib   media  mnt   opt   proc   root   run   sbin   srv   sys   tmp   usr   var

exitして再度コンテナに入る

/ # exit
$ docker container start -i alpine3

リポジトリを追加

# vi /etc/apk/repositories
http://dl-cdn.alpinelinux.org/alpine/edge/community/

アップデート、ツールをadd 日付はJST

# apk update && apk upgrade
# apk add bash tcsh tzdata openrc bind-tools
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# date
Sat Jul  6 20:17:18 JST 2019

python3のインストール
python3をaddしてpythonにリンク(python3.7)

# apk add python3 file
# cd /usr/bin
# ln -s python3.7 python
# ls -la python*
lrwxrwxrwx    1 root     root             9 Jul  5 16:14 python -> python3.7*
lrwxrwxrwx    1 root     root             9 Jul  5 16:10 python3 -> python3.7*
-rwxr-xr-x    2 root     root          5744 May  1 23:04 python3.7*
-rwxr-xr-x    2 root     root          5744 May  1 23:04 python3.7m*
# python --version
Python 3.7.3

rangerの導入

# wget https://ranger.github.io/ranger-stable.tar.gz
# tar -xvf ranger-stable.tar.gz
# cd ranger-1.9.2
# ./ranger.py

# ./ranger.pyで実行 終了はq
rangerは特にインストールしないで展開したファイルから実行します。
デフォルトの設定ファイルは展開したファイルの中にあります。
正規にインストールした場合と同じように使えます。

ホストから設定ファイル(~/.config/ranger)をコピー

$ docker cp ~/.config/ranger alpine3:/root/.config

ホストから.bashrcと.cshrcをコピー

$ docker cp .bashrc alpine3:/root
$ docker cp .cshrc alpine3:/root

.bashrcと.cshrcにaliasを設定

~ # vi ~/.bashrc
alias ranger='~/ranger-1.9.2/ranger.py'
# vi ~/.cshrc
alias ranger  ~/ranger-1.9.2/ranger.py
alias r       ~/ranger-1.9.2/ranger.py
# exit

alpine3をコミット(イメージ作成)コンテナalpine3を削除

$ docker container commit alpine3 alpine3-img
$ docker container rm alpine3

作成したイメージ(alpine3-img)から新たにコンテナalpineを作成
当サイトではメインのshellをtcshで作成しています。(.cshrcは必須)

$ docker run --name alpine -it alpine3-img /bin/bash

exitして再度スタート

$ docker container start -i alpine

イメージサイズはOS学習用なのであまり気にしないことにします。

$ docker image ls
alpine3-img         latest     9bfd90814cbe        30 hours ago        86.3MB
alpine              latest     e67514d6f5dd        2 weeks ago         5.33MB


rangerを起動
残念ながらテキストのオートプレビューはできないようです。
但し”i”キーでプレビューは可能です。
ディレクトリranger-1.9.2は.config以下に移動しています。aliasも変更

ホスト(OrangePi3)から使いやすくするため起動ボタンを作成しています。

# Button alpine
def alpine():
    subprocess.run("xterm -e docker container start -i alpine &", shell=True)
icon1 = PhotoImage(file='~/.icons/64x64/alpine.png')
button1 = ttk.Button(
    frame1,
    image=icon1,
    command=alpine)
button1.grid(row=1,column=1)

CentOSとdebianは今のところボタンだけですが次はCentOSにチャレンジしてみようと思います。

Raspberry Pi 3 Raspbian Buster

Raspberry Pi 3にRaspbian Busterをインストールしてみました。

ユーザー設定ファイルはstretchからそのまま移行しているので見た目は以前と全く一緒ですが気がついたところを少し記録してみたいと思います。

インストールはSDカードとSSDそれぞれ新規にインストールします。
SDカードは通常通りなので特に問題はありませんね。
今回のBuster10から従来よりbootパーティションがこれまでの約45MBから256MBに増えています。実際のファイル容量もstretchと比べると2倍近くになっています。64bit化対応予定でしょうか(?)

boot rootfs

ssdのデータ領域は消去したくないのでbootとrootfsを一旦削除切り直します。

bootは256MBで切って残りをrootfsに割り当てます。
PARTUUIDは変わりませんでした。データ領域も無事生きています。

bootとrootfsはkpartxでloopデバイスに展開したイメージをそのままコピーします。

# cp -r /dir/loop0p1/* /media/BOOT
# cp -Rp /dir/loop0p2/* /media/rootfs

PARTUUIDは変わってないのでstretchの/boot/cmdline.txt及び/etc/fstabをコピーします。
起動すると通常の初期インストール画面になります。
最近のSDカードからのブートは最適化されているせいか以前と比べるとかなり早くなっています。それと比べるとssdブートは待ち時間を考慮しても遅いですね。
Raspberry Pi 4がusb3.0経由のos運用を考慮しているかどうかはわかりませんがSDカードからブート、ssdからOS起動が使いやすいと思います。
但しSDカードのkernelバージョンとssdのバージョンは一致している必要があります。

boot/config.txt

pi4ではOpenGLが有効になっていますがpi3では有効になりません。[all]の項にあるコメントを外します。

[pi4]
# Enable DRM VC4 V3D driver on top of the dispmanx display stack
dtoverlay=vc4-fkms-v3d
max_framebuffers=2
[all]
#dtoverlay=vc4-fkms-v3d


当サイトで使っているsurfブラウザはOpenGLを有効にしないと限りなくcpu使用率が100%になります。
mp4再生もOpenGLを有効にしたほうがスムーズに再生可能になります。
surfブラウザはstretchでコンパイルしたものを/usr/local/binから起動しています。

docker

dockerはstretchでのインストール手法はbusterではできないようです。
現段階ではdebian busterも正式公開になってないことからいずれサポートされるものと思います。取り敢えず動かしたい場合は下記に情報があります。
https://github.com/docker/for-linux/issues/709

ダウンロードしてインストール

# dpkg -i containerd.io_1.2.6-3_armhf.deb
# dpkg -i docker-ce-cli_18.09.7_3-0_debian-buster_armhf.deb
# dpkg -i docker-ce_18.09.7_3-0_debian-buster_armhf.deb

インストールするとsystemdに登録dockerが動き出しますが記事にあるとおりネットワークに問題があるようです。
また/etc/apt/sources.list.dにはdocker.listが作成されますがupdateするとRelease ファイルがないよと怒られます。サイトを参考に自力で解決するか片付けておくのがいいでしょう。

以前作成したRPDは動きますがホストのネットワークを専有してしまいます。
やはり少し待ったほうが良さそうです。

アプリケーション

各アプリケーションは比較的新しい安定したバージョンがインストールされます。
不具合ではないのですがUIの印象がずいぶん変わったので
gimp 2.10.8

真っ黒のgimp

少し使ってみます。

その他

gdevilspieが依存関係でインストールできない。
devilspieは問題ないので手書きで書けばいいでしょう。

今まで勝手にデスクトップにアイコンを貼り付けて実行していたのですがこんなダイアログが出るようになりました。
勝手にフォーカスがあたって重いアプリが開くよりはワンクリック余計ですがいいでしょう。

ディフォルトのpythonは2系のままですね。python3になると思っていたのですが、やはり過去の互換性を重視しているのでしょうか

$ python --version
Python 2.7.16
$ python3 --version
Python 3.7.3

今回は32bit OSですがほかのSBCは64bitを採用しているものが多くなっていると思います。
raspbianの64bit化も時間の問題と考えています。

Top