ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

Raspberry Pi 3B+ にDebian(64bit)をインストールしてみたよ

(2021-02-04 初稿 - )

はじめに

ついに、Raspberry Pi OSの64bit版が正式公開された。早くarn64のChromeChrome Remote Desktopが動いてくれると良いなぁと考えている。

さて、自宅で余っていたRaspberry Pi 3B+ にDebian 11(Bullseye) arm64版をインストールしてみた。Raspberry Piに64bitをインストールするメリットとデメリットは以下のとおり(正直なところ、あまり思いつかなかった (^^ゞ)。

ただし、今回の作業を通じて、fbtermやlocale、keyboard設定などcliで使うときのスキルがいろいろと学べたので、その記録として残す。

【メリット】

  • 通常のDebianとパッケージ更新にタイムラグがなく、細かい操作が同じ

【デメリット】

  • 未確認だが、I2CやGPIOの利用が面倒

筆者はRaspberry PiChromeブラウザを動作させて、Chrome Remote Desktopのサーバにしたかったのだが、残念ながらChromeブラウザのインストールはできなかった(Chromiumブラウザはインストール可)。

 

ちなみに、Chrome Remote Desktopのことは、以下を参照のこと。

Debian 11(Bullseye)のインストール

インストールは、以下のサイトを参考にした。多謝。

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

まずは、Debianのインストールイメージのダウンロード。以下のサイトから、Raspberry Pi 3B+用のBullseyeをダウンロードした。

実際にダウンロードしたイメージは、20220121_raspi_3_bullseye.xz。

xz圧縮のファイルは、以下のとおり解凍してimgファイルにする。

xz -d Downloads/20220121_raspi_3_bullseye.xz
⇒ Downloads/20220121_raspi_3_bullseye.img

Imagerを使ってimgファイルをMicroSDカードに焼き付け

まだImagerをインストールしていない場合は、以下のサイトからダウンロード。ここでは、UbuntuDebianの場合のインストールを示す。

sudo apt install imager

f:id:hymd3a:20211130140823p:plain

imagerでSDカードの作成(図のイメージは違うよ)

Imagerは、使い方が難しいソフトではないので、説明は省略する。

Raspberry Piへカードを挿して起動

MicroSDカードの準備ができたら、いよいよ初回の起動を行う。

起動の際に、ディスプレイ、キーボードと有線LANの接続は必須である。インストール後は手動で無線LANも使えるようになるが、Wi-Fi設定は思いの外面倒である。

 

起動後、login: プロンプトが出て、ユーザはroot、パスワードはなし(Enterキーのみ)でログインできる。

login: root
passwd なし

ログイン後、セキュリティの関係上、まずはrootのパスワードを設定する。

# passwd
(root のパスワードの設定)

なお、この時点では、キーボードの設定が jp106ではないので、パスワードに特殊な文字を使わないほうが無難である。

 

ちなみに、筆者はvimを使っているので、いつも「:」を探してしまう。(^_^;)

Shift+;(セミコロン)なので、覚えておくように > 自分

参考までに、以下のサイトから頂いたキーボード画像を貼っておく。多謝

f:id:hymd3a:20220203085830j:plain

インストール時のキーボード

インストールされているパッケージの更新

# apt update;  apt upgrade

一般ユーザの追加とsudoの設定

常にrootで作業するのは、セキュリティ上好ましくないため一般ユーザを作成し、sudoを使えるようにする。ここでは、追加するユーザ名をhogeとする。

# adduser hoge
   (hogeのpasswd 設定等)
# apt install sudo
# visudo
# User privilege specification
root    ALL=(ALL:ALL) ALL
hoge    ALL=(ALL:ALL) ALL   (この行を追加、権限はご自由に)

Hostnameの変更

hostnameが pi3-20220128(インストールするイメージにより異なる)等になっているので、使いやすいhostnameに変更する。ここでは、hostnameをfugaとする。

$ sudo hostnamectl set-hostname fuga
$ sudo vi /etc/hosts
127.0.0.1    localhost
127.0.1.1    fuga.example.com   fuga

ネットワークの設定

ネットワークの設定は、/etc/network/interfaces.d/eth0 で行う。

cat /etc/network/interfaces.d/eth0 
auto eth0
iface eth0 inet dhcp
iface eth0 inet6 auto

なお、ネットワークの初期設定はDHCPだが、サーバ用途等で固定IPアドレスにする場合は、上記ファイルを以下のように変更する。

auto eth0
iface eth0-home inet static
   address 192.168.xxx.xxx
   netmask 255.255.255.0
   gateway         192.168.xxx.1
   dns-nameservers 192.168.xxx.xxx  8.8.8.8

なお、 無線LANで接続する場合は、少々手こずったので別ページに対策をアップした。参考までに載せておく。

sshの設定

筆者が試したイメージでは、インストール直後からsshはインストールされていた。

もし、インストールされていない場合は、以下のとおりインストールする。

$ sudo apt install ssh

localesの設定

sudo apt install locales
sudo dpkg-reconfigure locales
  ja_JP.UTF-8を選択

キーボードの設定

sudo apt install keyboad-configurations console-setup
sudo vi /etc/default/keyboard
XKBMODEL="jp106"
XKBLAYOUT="jp"

タイムゾーンの設定

sudo timedatectl set-timezone Asia/Tokyo

fbtermのインストール

localesを日本語環境に変更すると、日本語でメッセージがでるため、Terminalに表示される日本語が文字化けする。この対策として、fbtermをインストールし、ユーザ hogeをVideoグループに追加、さらにIPAの日本語フォントをインストールする。

sudo apt install fbterm
sudo usermod -aG video hoge
sudo apt isntall fonts-ipafont

再起動後、fbtermを起動してから、コマンドを入力すれば、日本語が正常に表示される。

X環境のインストール

筆者が試した範囲では、少なくともPi 3B+ではX環境をインストールしない方が快適に使えると思う。ただし、どうしてもX環境が必要であったり、Pi 4以降の機種であれば以下のように軽いLXDEをインストールすれば、X環境を整えることができる。

sudo apt install lxde

なお、筆者はいつもディレクトリ名を英語にしているので、以下のコマンドで英語表記にしている。

sudo apt install xdg-user-dirs-gtk
LANG=C xdg-user-dirs-gtk-update

関連ページ

RTNETLINK answers: Operation not possible due to RF-kill エラー対策

(2022-02-03 初稿 - 2022-02-04 追記)

はじめに

Raspberry Pi 3B+に、Debian 11(Bullseye) arm64版をインストールして、一足先に64bit環境を楽しもうと思いインストールした。

インストールの方法や細々とした設定については、別ページにアップする。

ここでは、Debian 11をインストール後のRaspberry PiWi-Fi設定に手こずったので、その対策をアップする。

現象

別ページに記載した方法で、Debianをインストールするとネットワークの制御は以下のファイルで行う。

cat /etc/network/interfaces.d/eth0

auto eth0
iface eth0 inet dhcp
iface eth0 inet auto

有線ケーブルを接続しDHCP環境で利用する場合は全く問題がないが、ケーブルの取り回しが面倒な場所にRaspberry Piを置きたかったので、Wi-Fiで接続することにした。

# To enable wireless networking, uncomment the following lines and -naturally-
# replace with your network's details.
#
allow-hotplug wlan0
iface wlan0 inet dhcp
iface wlan0 inet6 dhcp
     wpa-ssid YOUR-SSID
     wpa-psk JugemuJugemu

wlan0 ファイルができたので、以下のコマンドでWi-Fiを有効にしようとしたところ、以下のエラーメッセージが出た。

$ sudo ifup wlan0
RTNETLINK answers: Operation not possible due to RF-kill
(以下省略)

ネットで検索するとrfkillコマンドで確認できるとのことで、rfkillをインストールして、確認。

$ sudo apt install rfkill
$ sudo rfkill list
0: phy0: Wireless LAN
    Soft blocked: yes
    Hard blocked: no
1: hci0: Bluetooth
    Soft blocked: yes
    Hard blocked: no

どうも、Wireless LANとBluetoothはソフトウェア的に使えなくしているらしい。

余計なことをしおってと思ったが、少ない電力で動かないといけないRaspberry Piには必要な機能かもしれないね。

対策

なるほど、以下のサイトを参照して、blockを解除しよう。

$ sudo rfkill unblock wifi
$ sudo rfkill list
0: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
1: hci0: Bluetooth
    Soft blocked: yes
    Hard blocked: no

おし、ブロック解除だ。

$ sudo ifup wlan0
$ ping 192.168.xxx.xxx  必ずつながるところへping
(省略 成功)

よっしゃー、ということでRaspberry Piを再起動。

$ ping 192.168.xxx.xxx  必ずつながるところへping
(省略 失敗 (T_T) )

なんで、(・・?

$ sudo rfkill list
0: phy0: Wireless LAN
    Soft blocked: yes
    Hard blocked: no

また、ブロックしてるじゃん。

ネットで検索して以下のページ発見。多謝 m(__)m。

$ connmanctl enable wifi

ということで、connmanctlで設定した場合は、再起動してもWi-Fiが無事に使えた。

Raspberry PiWi-Fiにつなげるだけで、どっと疲れた。

それにしても、connmanctlなんてコマンド初めて知った。

Linuxは何年使っていても、学ぶこと一杯だね。^^;

関連ページ

Chrome Remote Desktopのインストールとわが家のネットワーク

(2022-02-02 初稿 - )

はじめに

Chrome Remote Desktopというネットワークサービスがあり、これを用いれば自宅や職場のPCに遠隔地から接続して操作できるようになる。

筆者は忘れ物が多く、ファイルや趣味で撮影した写真を職場等で取り出すために、Chrome Remote Desktopを利用してみたので、そのメモを残す。

我が家のネットワーク

まず最初にわが家のネットワークについて、簡単に下図で説明する。

  • Chrome Remote Desktopのアクセス先(以下、リモートサーバ)は、電源ONでないとアクセスできないので、省電力のノートPCを24時間電源稼働している。省電力というと聞こえはいいが、要は古いノートPCにDebianをインストールして利用している。(^^ゞ
  • PC作業の大半は、DebianのインストールされたデスクトップPCで行っており、ここにファイルや写真等が保存されていることが多い。
  • また、省電力のRaspberry Piは24時間稼働しており、大容量のハードディスクを接続してファイルサーバとして利用している。
  • Raspberry PiとリモートサーバのノートPCは24時間稼働だが、デスクトップPCやWindowsのノートPCは通常電源OFFで、必要なときにWakeOnLANで起動する。
  • 遠隔地からは、Chrome Remote Desktopでリモートサーバにアクセスして、必要に応じて起動したデスクトップPCやWindowsノートPC、常時稼働のRaspberry Pi等にSSHVNCで接続して作業を行う。

f:id:hymd3a:20220131201624j:plain

わが家のネットワーク構成

Chrome Remote Desktopのインストール

まずは、自分のGoogle アカウントでChromeにログイン後、以下のサイトに行く。

WindowsMacのPCならば、すんなりインストール可能と思われるが、筆者のDebianのノートPCだったので、少しだけ苦労した。^^;

f:id:hymd3a:20220131202247p:plain

Chrome Remote Desktopのインストール開始


上図の青いダウンロードボタンを押すと、ダウンロードが始まってインストールが開始されるが、管理者権限がないのでインストールが先に進まない。^^;

インストールが中断したら、ターミナルで以下のコマンドを入力すると無事インストールできる。 

$ sudo apt install ~/Downloads/chrome-remote-desktop_current_amd64.deb

インストールが中断し、少しあわてたが、無事にインストールできると以下の2つを入力する。

f:id:hymd3a:20220202105233j:plain

PC名の入力

遠隔地からもわかりやすいPC名を入力する。

f:id:hymd3a:20220202105338j:plain

PINの入力

セキュリティのためのPIN(6桁以上の数値)を入力。

サーバは、Chromeブラウザを立ち上げておく必要もなく、ログアウトしていても電源ONであればリモートからの接続は可能である。

Chrome Remote Desktop クライアントからの接続

クライアントにはソフトウェアのインストール不要で、自分のGoogleアカウントで以下のサイトにアクセスすると先程設定したサーバのPC名があるので、接続したPC名をクリックすれば接続できる。

その他の細々とした設定

ノートPCのディスプレイを閉じてもサスペンド等しないように

以下の記事を参考に、設定をした。

sudo vi /etc/systemd/logind.conf
HandleLidSwitch=suspend    (変更前)
HandleLidSwitch=ignore     (変更後)

変更したら、再起動でディスプレイを閉じてもサスペンドしないようになる。

WakeOnLANでPCの電源をONに

拙作の記事だが、以下にリンクを貼っておく。

 

関連ページ

Debian PCをWake On LANで起動できるようにしたよ

(2022-01-31 初稿 - )

はじめに

Chrome Remote Desktopを利用すると、多くの場合ネットワークの設定を変更せずに職場や自宅のネットワークにアクセスできるようになる(職場のPCにリモート接続する場合は、許可が必要な場合がある)。

少なくとも、職場のPCから自宅のPCにアクセスできれば、ファイルの忘れ物等は防ぐことができて便利だ。

ここでは、Wake On LANで起動する側のPCを「起動PC」、起動を命令するPCを「命令PC」と呼ぶことにする。

Wake On LANの設定

以下のサイトを参照し設定した。多謝 m(__)m

設定したPCの環境(起動PC、命令PCともに)

Debian  Bullseye
Linux 5.10.0-11-amd64 #1 SMP Debian 5.10.92-1 (2022-01-18) x86_64 GNU/Linux

現状の確認

まずは、起動PC(Wake On LANされる側PC)の現在の状態を確認する。

上記のサイトに従って、ethotoolをインストール。

sudo apt install ethtool

自身のネットワークを確認する。

less /etc/network/interfaces
iface enp12s0 inet dhcp

sudo ethtool enp12s0
  Wake-on: d (dの場合は WakOnLAN不可)

Wake On LANを可にする方法は、以下のドキュメントのとおりいろいろあるが、筆者はinterfacesを変更する方法にした。

cat /etc/netword/interfaces
(省略)    
auto enp12s0
iface enp12s0 inet dhcp
        ethernet-wol g

設定したら、再起動する。

Mac Addressの調査

最近のDebianは、ifconfigではなく、ip addressでネットワークの状態を調べるので、以下のコマンドでMac Addressを調べる。

$ ip a
(省略)
2: enp12s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 169.254.9.128/16 brd 169.254.255.255 scope link enp12s0:avahi
       valid_lft forever preferred_lft forever
(省略)

上の出力の「link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff」 の行のether直後の6つの16進数がMac Address。

これをメモしておく。

WakeOnLANを命令する側PCの設定

$ sudo apt install wakeonlan
$ wakeonlan MAC Address

毎回MAC Addressを入力するのも面倒ですので、以下のBashスクリプトを作成。

なんと作成の日付は、2004年(・o・)。かなり以前に作ったスクリプト

ここでは、kawaとnijiというhostnameのPCを起動できるようにした。

$cat ~/bin/wol
#!/bin/sh
# wol ver0.01 2004/02/03-
# Written by H.Yamada

case $1 in
    kawa | KAWA | Kawa ) echo "Wakeup kawa"
	 wakeonlan -i 192.168.xxx.255 xx:xx:xx:xx:xx:xx ;;
    niji | NIJI | Niji ) echo "Wakeup niji"
	 wakeonlan -i 192.168.xxx.255 xx:xx:xx:xx:xx:xx ;;
    * ) echo "error:  $1 is unknown machine"
	echo "Usage: wol machinename"
	exit 1 ;;
esac
exit 0

もちろん、MAC AddressやPCの増減は、お手元の環境に合わせてね。

関連ページ

eskk.vimで日本語入力してみたよ

(2022-01-28 初稿 - )

はじめに

最近、ネットワーク接続してRaspberry PiやリモートPCに接続し、Vimで日本語入力を行うことが多くなってきた。

普段は、Debianを使っているのでfcitx-mozcで日本語入力しているが、どのPCに接続していても、常にお気に入りの日本語環境になるのは素晴らしいかなと思い、Vimではeskkを使ってみようと思った。

eskkの詳しいことは、他所に譲るとして、eskk(skk)の日本語入力方法は変わっていて、漢字やカタカナの区切りを以下のように自分で認識させる。

例えば「日本語入力モードは変わっている。」を入力する場合は、挿入モードで、C-jで(eskk)モードになってから、以下のように入力する。

Nihongonyuuryoku(Space)Modo(q)haKawaTteiru.

eskk.vimのインストール

筆者は、Vimの標準パッケージ管理を利用しているので、インストールは以下のとおり。

cd ~/vim/pack/mypkg/start
git clone https://github.com/vim-skk/eskk.vim.git

辞書をいただきて、以下のところに保存。

Download SKK-JISYO.L
mv SKK-JISHO.L ~/.eskk

.vimrcには、以下のサイトを参考に記述。

" eskk
let g:eskk#directory = "~/.eskk"
let g:eskk#dictionary = { 'path': "~/.skk-jisyo", 'sorted': 0, 'encoding': 'utf-8', }
let g:eskk#large_dictionary = { 'path': "~/.eskk/SKK-JISYO.L", 'sorted': 1, 'encoding': 'euc-jp', }
set imdisable

簡単な使い方

C-j eskkモード
S-英数 or ; で変換モード    spaceで変換 
l 半角英数 
L 全角英数
q カタカナ  変換モードで後からqを押しても可

カスタマイズ

以下のサイトを参考にカスタマイズを少しだけした。

let g:eskk#keep_state = 1                " eskkモードを保存
let g:eskk#egg_like_newline = 1      " 漢字変換を確定後改行しない

eskkモードを保存は、挿入モードからノーマルモードに戻って、再度挿入モードに戻ったときに、前回の挿入モードの状態を保持してくれているモードである。便利な反面、副作用もあるので、あくまでもお好みで。

おまけ

neoconplcacheを以下からインストールして、.vimrcに記述するとすごい単語補完ができるそうなのだが、まだ筆者は試していない。(^^ゞ

let g:eskk#enable_completion = 1

関連ページ

vimの標準パッケージ管理を使うことにしたよ

(2022-01-26 初稿 - )

久しぶりに使いたいパッケージがあって、Vimの設定を見直した。
これまではVundleを使っており、使ってというよりは、数年前に設定してそのままだった。(^^ゞ
すっかり使い方を忘れてしまったVundleのことを調べていたら、Vim 8.0以降は、標準でパッケージ管理機能があるとか。
筆者のように物忘れが酷くて長い間使っていると、標準で備わっているってことが、結構重要だったりする。だって検索の範囲がVim内だけで済むから。
そこで、このVim標準のパッケージ管理を使ってみることにした。

<ちなみに、今までのBundleは以下のとおり(一部抜粋)。

├── bundle
     ├── googletranslate-vim
     ├── vundle
     └── w3m.vim

標準のパッケージ管理システム

標準のパッケージ管理では、以下のフォルダになる。

この内、mypkgとeskk.vimのフォルダ名は、任意でよいとのこと。

 ├── pack
     └── mypkg
         ├── opt
         └── start
             └── eskk.vim

startディレクトリは、Vim起動時から読み込まれるパッケージ
optディレクトリは、Vim起動後、手動で読み込まれるパッケージ

 

以下、実際に設定してみる。

# パッケージ管理のディレクトリ作成
mkdir -p ~/.vim/pack/mypkg/start
mkdir -p ~/.vim/pack/mypkg/opt

例として、eskk.vimをインストールする。
これが、筆者の使ってみたかったパッケージ。(^^ゞ

$ cd ~/.vim/pack/mypkg/start
$ git clone https://github.com/vim-jp/vimdoc-ja.git

後は、パッケージの指示どおり.vimrcに記述すれば良い。

Vimも、どんどん進化しているなぁ。

関連ページ

Bash,Python,Ruby等のスクリプトを簡単にはてなブログのHTML編集に貼れるように

(2022-01-25 初稿 - )

はじめに

はてなブログに投稿を始めて、先日アップした記事が100を越えた。
多くの記事は以前アップしていたサイトからの転載だが、2021年5月15日から始め255日で100記事を超えることができた。

はてなで記事を書くことは、とても楽しいのだが、唯一苦痛なことは、スクリプトのソースを貼付ける作業だ。編集(みたまま)モードで貼り付けると、<p>や<br>等のhtmlタグを削除するのが面倒なんだよね。(^_^;)

そこで、Bashスクリプトを作った。

簡単なスクリプトなので、特に解説はしないよ。

#/bin/bash
# src2hb
# bash python ruby等のスクリプトをはてなブログに
# 貼り付けられるように変換
# ver0.01 2022-01-23 Started
# ver0.04 2022-01-23 順番修正

# Global Variable
USAGE="src2hb Ver0.04 Convert src to hatena blog
[Usage] cat source-script | src2hb"

echo "<pre><code>"
while IFS= read line
#while read line
do
  #echo "$line"
  line=${line//&/&amp;} # 順番大事
  line=${line//</&lt;}
  line=${line//>/&gt;}
  echo "$line"
done
echo "</pre></code>"

使い方

cat some-script | src2hb
some-script < src2hb

筆者は短かいスクリプトしか作らないので、そのままターミナルにたれ流しているけど、リダイレクトしてファイルに保存すれば長いスクリプトでも大丈夫。

cat some-script | src2hb > output.txt

実際にはてなブログに貼るときは、はてなブログをHTML編集モードにしてから貼り付ける。
貼り付けたサンプルは、このページのスクリプトのようになるよ。

関連ページ