でんげき☆ Network Service

Raspberry Pi 4 で運用実験中 Connect checker

2021年11月 この範囲を時系列順で読む

Arduino Leonardo (Pro Micro) でマルチメディアキーボードを作ろう!

20211203181404-admin.jpeg
 
前回に引き続き Arduino 的な諸々をひとつって事で…マルチメディア・キーボードって云うんですかね?
20211114113829-admin.png
+α的に実装されている音量調節などのキーとかノート PC でよく見かける Fn キーと併用して使える再生とか早送りなどのキーを ATmega32U4 を搭載した Arduino Leonardo (Pro Micro) でどうにかしてみるお話です

そんな今回の実験の様子
202111141138293-admin.jpeg
以前のマウスクリック超連射実験の回路がくっついたままなんで判りにくいですよね…

202111141138291-admin.png
申し訳程度に回路図を描いてみたけど…それでも判りづらいですよね(汗 まぁとにかく 2 番ピンと 3 番ピンを使用しました

今回のマルチメディア・キーボード(?)的な機能を簡単に実装するためにライブラリを追加してみました
202111141138292-admin.jpeg
Arduino IDE で [スケッチ] → [ライブラリをインクルード] → [ライブラリ管理] してライブラリ管理画面を出す

202111141138291-admin.jpeg
目的のライブラリを「hid」ってキーワードで検索して…出てきた「HID-Project」をインストールする ※画面は既にインストール済みだけどまぁそんな感じで(汗

後は Arduino IDE でこんな感じのを用意してそれをマイコンボードに書き込みます

----------

// include the HID library
#include "HID-Project.h" // 今回インストールしたやつをインクルードする

// definitions for each pin used
const int pinLed = LED_BUILTIN;
const int playButton = 2; // 今回使うピン番号
const int fwdButton = 3; // 今回使うピン番号
const int backButton = 4; // 以下今回は使わない(-_-;)
const int volUpButton = 5;
const int volDwnButton = 6;
const int muteButton = 7;


void setup() {
  // define the pin mode for each pin used
  pinMode(pinLed, OUTPUT);
  pinMode(playButton, INPUT_PULLUP); // 今回使うピン番号
  pinMode(fwdButton, INPUT_PULLUP); // 今回使うピン番号
  pinMode(backButton, INPUT_PULLUP); // 以下今回は使わない(-_-;)
  pinMode(volUpButton, INPUT_PULLUP);
  pinMode(volDwnButton, INPUT_PULLUP);
  pinMode(muteButton, INPUT_PULLUP);

  // begin HID connection
  Consumer.begin();
}

void loop() {
  if (!digitalRead(playButton)) {
    digitalWrite(pinLed, HIGH); // turn on LED
    Consumer.write(MEDIA_PLAY_PAUSE); // 一時停止・再生的なコマンド
    delay(500); // 動作確認用の LED 点滅
    digitalWrite(pinLed, LOW); // turn off LED
  }
  
  if (!digitalRead(fwdButton)) {
    digitalWrite(pinLed, HIGH);
    Consumer.write(MEDIA_NEXT); // 次の曲的なコマンド
    delay(500); // 動作確認用の LED 点滅
    digitalWrite(pinLed, LOW);
  }
}

----------

20211114113829-admin.jpeg
Ubuntu 20.04.3 LTS と Audacious 3.10.1 で動作チェックしたところ…「再生/一時停止」と「次の曲」の動作をタクトスイッチの押下にて実現できました やったね!

わりと入手しづらいイメージのマルチメディア・キーボード(?)の拡張部分を Arduino Leonardo (Pro Micro) でどうにかできる事が判明しました 後は程よいケースとスイッチを用意すれば完成なんだけど…それはまた後の話ってかんじで

  :

他にも機能があるっていうか…キーコードは Arduino/libraries/HID-Project/src/HID-APIs/ConsumerAPI.h に定義されています ※ファイルの場所は環境によって異なる場合があります

enum ConsumerKeycode : uint16_t {
  // Some keys might only work with linux
  CONSUMER_POWER = 0x30,
  CONSUMER_SLEEP = 0x32,

  MEDIA_RECORD = 0xB2,
  MEDIA_FAST_FORWARD = 0xB3,
  MEDIA_REWIND = 0xB4,
  MEDIA_NEXT = 0xB5,
  MEDIA_PREVIOUS = 0xB6,
  MEDIA_PREV = 0xB6, // Alias
  MEDIA_STOP = 0xB7,
  MEDIA_PLAY_PAUSE = 0xCD,
  MEDIA_PAUSE = 0xB0,

  MEDIA_VOLUME_MUTE = 0xE2,
  MEDIA_VOL_MUTE = 0xE2, // Alias
  MEDIA_VOLUME_UP = 0xE9,
  MEDIA_VOL_UP = 0xE9, // Alias
  MEDIA_VOLUME_DOWN = 0xEA,
  MEDIA_VOL_DOWN = 0xEA, // Alias

  CONSUMER_BRIGHTNESS_UP = 0x006F,
  CONSUMER_BRIGHTNESS_DOWN = 0x0070,

  CONSUMER_SCREENSAVER = 0x19e,

  CONSUMER_PROGRAMMABLE_BUTTON_CONFIGURATION = 0x182,
  CONSUMER_CONTROL_CONFIGURATION = 0x183,
  CONSUMER_EMAIL_READER = 0x18A,
  CONSUMER_CALCULATOR = 0x192,
  CONSUMER_EXPLORER = 0x194,

  CONSUMER_BROWSER_HOME = 0x223,
  CONSUMER_BROWSER_BACK = 0x224,
  CONSUMER_BROWSER_FORWARD = 0x225,
  CONSUMER_BROWSER_REFRESH = 0x227,
  CONSUMER_BROWSER_BOOKMARKS = 0x22A,

今回使った MEDIA_PLAY_PAUSEMEDIA_NEXT の他にもいろいろあります 例えば CONSUMER_BROWSER_REFRESH を超連打して…いわゆる F5 アタックを実装するのもいいかもしれません ※やめて!(>_<)q

  :

まぁざっくりこんな感じですかね これを用いてちょっと便利な補助キーボードを作れるとイイナ! #Arduino

情報 <3322文字>

Arduino Leonardo (Pro Micro) でマウスクリック連射装置を作ろう!

20211203180938-admin.jpg
 
ワンボードマイコンっていうか…ここんとこ Arduino が人気沸騰で気になりますよね!って事なんでモノは試しに安っすい VKLSVAN Pro Micro USB ATmega32U4 を買ってぼちぼちイジってみることにしました

202111130723461-admin.jpeg
まぁなんか Arduino にもいろいろあるようで…その中で ATmega32U4 を搭載した Arduino Leonardo と呼ばれるものが HID 機能を搭載しているって事で気になっていました そんな Arduino Leonardo の互換機が今回購入した Pro Micro って感じです
その HID 機能とはなんぞや?って話ですがまぁざっくり PC の標準的なキーボードやマウスを指すようです 要するに USB 接続した Arduino Leonardo (Pro Micro) がキーボードやマウスに化けるって事なんですね
そこで今回は連打系ブラウザゲーとして名高い CookieClicker を超連射できるボタンを実装してみることにしました

20211113072346-admin.jpg
そんな Pro Micro のピン配列図 なんかいろいろ書いてあるけど…単純な On/Off スイッチを付ける場合は  Arduino  と色付けされた 0 から 20 までのピンを使うようです

20211113072346-admin.png
それを今回はこんな感じで 10 番ピンに配線しました
そしてお次はそれを制御するプログラムで…

----------

#define RX_LED 17 // RX LED はポート 17 っぽい?
#define TX_LED 30 // TX LED はポート 30 っぽい?
#define SW 10 // スイッチ用
#include <Mouse.h> // マウス機能を使いたい

void setup() {
  pinMode(SW, INPUT_PULLUP);
  Mouse.begin();
}

void loop() {
  if(!digitalRead(SW)) {
    digitalWrite(TX_LED, LOW); // TX LED を点灯
    //Mouse.click();
    //delay(100);
    Mouse.press(MOUSE_LEFT);
    //delay(17); // 最速
    delay(20);
    Mouse.release(MOUSE_LEFT);
    //delay(9); // 最速
    delay(10);
    digitalWrite(TX_LED, HIGH); // TX LED 消灯
  } else {
    digitalWrite(RX_LED, LOW); // RX LED を点灯
    delay(40);
    digitalWrite(RX_LED, HIGH); // RX LED 消灯
    delay(20);
  }
}

----------

Arduino IDE でこんな感じのを用意してそれをマイコンボードに書き込みます 書き込まれた後に直ちに動作を開始します
スイッチが Off の時には基板上の LED が細かく点滅しています スイッチを On にするとマウスクリックの連射が始まります

マウスのクリックには Mouse.click(); って関数と Mouse.press(); Mouse.release(); とを選べるようです
Mouse.click(); は…いい感じに「押して離す」をまとめて実行できるようです
Mouse.press(); は…ドラッグ操作っていうんですかね この関数を実行するとマウスボタンが押されたままになり Mouse.release(); を実行するとマウスボタンが離されます

どちらの関数をどのようなタイミングで繰り返すかは個々の環境によって違うかと思いますが…
20211113072346-admin.jpeg
我が家の環境では Mouse.press(); Mouse.release(); を使って 1 秒間に 38 連射を記録しました → マウスクリック連射速度テスト
高橋名人もびっくりな超高速連射を実装できて満足しました!

Arduino Leonardo (Pro Micro) の HID 機能は手軽に有用な機能を実装できてなかなか楽しいです またぼちぼちイジっていきたいと思いました #Arduino

情報 <1926文字>

2021年10月 この範囲を時系列順で読む

ラズパイの頻度低めだけど知っておきたい設定メモ Vol.3

20211203180402-admin.png
 
・ラズパイとファイルのやり取りしたい
・ラズパイのアプリを PC 上で実行する?

  :

----- ラズパイとファイルのやりとりしたい -----

ファイル共有に samba サーバを建てるほどじゃないんだけど… PC とちょっとしたファイルのやりとりをしたい!って場面はちょくちょくあると思います そんな時は scp コマンドを使うと良いみたいです

使い方
scp [オプション] コピー元 コピー先

オプションはいろいろあるけど…よく使うものを勝手に抜粋(汗
-p 元のファイルの変更時間とアクセス時間およびモードを維持します
-r ディレクトリ全体を再帰的にコピーします

PC からラズパイにファイルを送信する その1
scp ./dir/filename.ext pi@hostname:
PC 上の ./dir/filename.ext ってファイルをラズパイにコピーする この場合…ユーザ pi のホームフォルダ (/home/pi) に filename.ext がコピーされる

ラズパイから PC にファイルを受信する その1
scp pi@hostname:/var/www.html/index.html ./
ラズパイ上の /var/www.html/index.html が PC 上のカレントフォルダに index.html としてコピーされる

PC からラズパイにフォルダを送信する その2
scp -pr ./pic pi@hostname:
PC 上の ./pic ってフォルダとその中身の全てをファイル更新日時・モードを保持したままラズパイにコピーする この場合…ユーザ pi のホームフォルダ (/home/pi) に pic フォルダを作成してコピーする

ラズパイから PC にフォルダを受信する その2
scp -pr pi@hostname:/etc/apache2 ./
ラズパイ上の /etc/apache2 ってフォルダとその中身の全てをファイル更新日時・モードを保持したまま PC に apache2 フォルダを作成してコピーする
※ ただし /etc/apache2 はユーザ pi で読めるけど…逆に書き込もうとすると root 権限が無いんで失敗しますが

hostname は IP アドレスでも OK です ファイル名にはワイルドカードも使えるようです

2018 年 4 月頃のアップデートで Windows 10 に OpenSSH ってのが導入されているらしく…その時に scp コマンドが入ったようです
20211024175230-admin.png
202110241752301-admin.png
試しに使ってみたところちゃんとコピーできたようです

  :

----- ラズパイのアプリを PC 上で実行する? -----

ラズパイ上で動くアプリケーションの画面を PC 上に持ってくることができるようです

使い方
ssh [オプション] pi@hostname

オプションはいろいろあるけど…よく使うものを勝手に抜粋(汗
-Y 信頼できるX11転送を有効にします
-C データ転送を圧縮します

普通に SSH による接続なんですが…ファイルマネージャ (pcmanfm) とかのグラフィカルなアプリケーションの実行画面を PC 上で再現できるようになるようです
SSH でログインした後にコマンドラインに実行したいアプリケーションのコマンドを打ち込み実行します
pcmanfm :ファイルマネージャ
lxtask :タスクマネージャ
lxterminal :LXTerminal
例えば上記のようなコマンドです

20211024175159-admin.png
Ubuntu MATE 上に再現されたラズパイのアプリケーション画面 心もち再現しきれてないものもあるけどご愛嬌かな
ファイルマネージャからイメージビューワなんかを起動するとその画面も PC 上に出てきます
ただしログインしたユーザ権限で動作できるアプリケーションに限るようです
macOS 系ではできたって話を聞いたことがあります Windows 系ではできないかも知れません(汗

そろそろネタが尽きてきたかな…って感じで長々とお疲れさまでした! #[Raspberry Pi] #コマンドヘルプ

  ●ラズパイの頻度低めだけど知っておきたい設定メモ Vol.3
  ●ラズパイの頻度低めだけど知っておきたい設定メモ Vol.2
  ●ラズパイの頻度低めだけど知っておきたい設定メモ Vol.1
  ●ラズパイで Apache2 サーバを建ててゆるい設定をする
  ●モニタ無しでラズパイを VNC 接続できるとこまでセットアップ

情報 <2042文字>

ラズパイの頻度低めだけど知っておきたい設定メモ Vol.2

20211203175809-admin.png
 
・テキストエディタ nano の超基本の使い方
・ユーザを切り替えて root で作業したい
・ラズパイは sudo した時にパスワードを聞かれないのは何故?

  :

----- テキストエディタ nano の超基本の使い方 -----

端末上(LX Terminal等)でテキストファイルを編集するには vi か nano を使うことになるんだけど… vi は操作感が少々特殊でとっつきにくいんでその辺が判りやすい nano を使うことが多いのかな?って事でその nano を初めて使う方向けの超基本の使い方の解説です

コマンド名は nano です 管理者権限で使いたい時は sudo nano って感じで使います
nano もしくは sudo nano とコマンド名のみで起動すると「新規ファイル」の編集として起動します nano 「ファイル名」 とファイル名を付けて起動すると「ファイル名のファイル」を編集します

202110181533153-admin.png
nano とだけ打ち込み起動した状態
よく使う(と思われる)コマンドが下部に記載されています
この中の 「^G ヘルプ」 とか 「^X 終了」 の「^」意味は以下のようになっています

ショートカットキーの記法は以下の通りです。(^)で表記されているショートカットはCtrlキーを押すか、Escキーを二回続けて押すことを表してします。(M-)で表記されているショートカットはAltキーCmdキーEscキーなどのメタキーを押して入力します。
 また、Escキーを二回押した後に000から255までの十進数を入力することで、コードに対応する文字を入力することができます。以下のキーストロークは主なエディタのウィンドウで使用できます。代替のキーストロークは括弧で囲って表記されます。


試しに Ctrl キーを押しながら G キーを押してみましょう
202110181533152-admin.png
nano のヘルプが表示されました
長くて表示しきれてないんでキーボードの ↑ キーと ↓ キーを使ってスクロールさせます
ヘルプの終了は Ctrl キーを押しながら X キーを押します
いっぱいコマンドがあって覚えきれなさそうだけど…実際には「ちょっと編集を」って感じなんで数個のコマンドを使うだけになると思います

そんなよく使うコマンド例

Ctrl + X :nano の終了 ファイルに変更がなければそのまま終了します 変更があれば保存するか破棄するか聞いてきます
Ctrl + O :ファイルの書き込み 新規ファイルとして編集していればファイル名を聞いてきます 既存ファイルを編集していればそのファイル名が表示されそこに保存します
Ctrl + S :ファイルを確認なしで保存する 慣れてくるとこれをよく使います
Ctrl + W :文字列の検索 指定した文字列が見つかればカーソルがその文字列の場所に移動する さらに次の文字列を探す場合には Alt + W もしくは Alt + で…逆向きに探す場合には Alt + Q もしくは Alt + と操作します
Ctrl + / :文字列の置換 探す文字列を指定した後に置き換える文字列を指定します 見つかった時に「1箇所置換」するか「全部を置換」するかを聞いてきます
Alt + # :コメント行の切り替え カーソルがいる行の先頭に # を付ける/付けないを繰り返す わりと便利なんでよく使う

だいたいこんなもんですかね しょーみもっと込み入った編集をしたい時には GUI で操作できる mousepad とかを使ったほうが判りやすくて便利だと思います ただ nano は諸々の設定作業なんかで「使わない訳にはいかない」テキスト・エディタなんで最低限の操作は覚えておきたいものです

  :

----- ユーザを切り替えて root で作業したい -----

サーバの設定をしてる時とかに…いちいち sudo + コマンド ってやるんがめんどくさい!!(-_-#)って時に感情に任せて root にチェンジして作業したいと思ったことはありませんか? 私はたまにあります…って事なんでその辺の話を少々

202110181533155-admin.png
通常はユーザ pi で作業してるんだけどこれをユーザ切り替えの su コマンドを使って管理者 root になろうとするんだけど…認証失敗して root になれません これは root にパスワードが設定されてないんで「パスワードによる認証ができない」ってのが原因のようです

まぁこれを解決するには root にパスワードを設定すればいいんだけど…世間的にはセキュリティ云々の事情で root にパスワードを設定すべきではないって事なんでちょっと躊躇しちゃいますね ※ root にパスワードを設定すると SSH などで root ログインできるようになるんで好ましくないらしいのです

しかしこれが実機の前に居るのであれば別の方法でどうにかできます LXTerminal を sudo で起動してみましょう

202110181533154-admin.png
sudo x-terminal-emulator
無事(?)に root に切り替えることができました
でもまぁ何でもできる管理者 root なんで…くれぐれも慎重な操作をお願いします(汗

※ 追記 ※
別のシェルでログインを試みるって手法をもっと試してみるっていうか…なんか su コマンドにシェルを指定するオプションがあるのに気づいたんでそっちも試してみることにします
sudo su -s /bin/bash root
これで root に切り替えることができました こっちのほうがスマートな操作って感じなのかな

ちなみにオプション指定の違いがあるっていうか…
20211205041659-admin.png
sudo su -s /bin/bash root
sudo su -s /bin/bash - root
「-」オプションを付けない時はコマンドを実行したユーザのホームディレクトリ・環境変数が引き継がれて
「-」オプションを付た時は指定したユーザのホームディレクトリ・環境変数に設定されるようです

※ さらに追記 ※
もうちょっとシンプルにっていうか sudo -isudo susudo su - でもいいみたい
この場合もそれぞれ環境変数の引き継ぎに違いがあったりするようです 使いやすい手法を覚えておきタイネ!

  :

----- ラズパイは sudo した時にパスワードを聞かれないのは何故? -----

Ubuntu などを使っている時に sudo すると…
202110181533151-admin.png
パスワードを聞かれます

20211018153315-admin.png
でも Raspberry Pi OS の sudo だとパスワードを聞かれません これは何故なんでしょう?

まぁ sudo がそう云う設定になってるんですけどね…って事でその設定を見てみましょう sudo の設定内容は sudo cat /etc/sudoers で確認することができます
その中に %sudo ALL=(ALL:ALL) ALL なんて行があります これはグループ sudo に属する全てのユーザが全てのコマンドを実行できるって定義らしいです

それではグループ sudo に誰が属しているのか見てみましょう これは sudo getent group sudo で確認できます おそらく sudo:x:27:pi ってなってると思うんだけど…まぁグループ sudo にユーザ pi が含まれているのが判ります この設定によりユーザ pi が sudo した時に全てのコマンドが使えるって事になるらしいです

ちなみに /etc/sudoers は極めて重要なファイルなんで直接編集しないほうがいいらしいです これを編集するには専用コマンドの sudo visudo を使います なんでも書き込んだ内容に間違いがないか構文チェックして正しければ書き込むって感じになってるらしいです

まぁそれはともかく sudo した時にパスワードを聞かれないって話でしたよね これはさらに細やかな設定ファイルが /etc/sudoers.d/ に入ってるらしいのでそれを sudo cat /etc/sudoers.d/010_pi-nopasswd で確認してみましょう
すると pi ALL=(ALL) NOPASSWD: ALL ってのがあります この NOPASSWD ってのがパスワードを聞かれないための設定らしいです
この /etc/sudoers.d の設定ファイルも直接書き換えるのではなく専用コマンドの sudo visudo -f /etc/sudoers.d/010_pi-nopasswd を使うらしいです

まぁただそれだけの話なんですけどね モヤモヤしてた謎が解けたらイイネ!って感じで長々とお疲れさまでした! #[Raspberry Pi] #コマンドヘルプ

  ●ラズパイの頻度低めだけど知っておきたい設定メモ Vol.3
  ●ラズパイの頻度低めだけど知っておきたい設定メモ Vol.2
  ●ラズパイの頻度低めだけど知っておきたい設定メモ Vol.1
  ●ラズパイで Apache2 サーバを建ててゆるい設定をする
  ●モニタ無しでラズパイを VNC 接続できるとこまでセットアップ

情報 <3977文字>

ラズパイの頻度低めだけど知っておきたい設定メモ Vol.1

20211203174442-admin.jpg
 
・有線 LAN 接続時の固定 IP な設定
・ホストネームの変更
・ファイルマネージャを root 権限で使う
・Raspberry Pi の基盤穴サイズ

  :

----- 有線 LAN 接続時の固定 IP な設定 -----

/etc/dhcpcd.conf を編集
# Example static IP configuration:
#interface eth0
#static ip_address=192.168.0.10/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=192.168.0.1
#static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1


この部分で設定する 必要な行の先頭の # (コメント記号)を消して有効にして必要な内容に書き換える
以下は設定例(IP アドレスが 192.168.0.80 でゲートウェイ(ホームルータ)アドレスが 192.168.0.100 で Google のパブリック DNS を使用の場合)

# Example static IP configuration:
interface eth0
static ip_address=192.168.0.80/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.0.100
static domain_name_servers=8.8.8.8 8.8.4.4

ファイル保存後に OS を再起動することにより有効になる

  :

----- ホストネームの変更 -----

/etc/hostname を編集
標準状態で raspberrypi が設定されているのでそれを適宜書き換える

sudo nano /etc/hosts で編集
最終行の 127.0.1.1    raspberrypi の raspberrypi の部分を上記と同じものに書き換える

ファイル保存後に OS を再起動することにより有効になる

  :

----- ファイルマネージャを root 権限で使う -----

重要なファイル類の操作や編集を GUI でどうにかしたい時に便利かもしれないけど危険かも知れない(汗
ターミナル内で sudo pcmanfm としてもいいんだけど…何かと面倒なんでアプリケーションランチャーに登録しておく

DESKTOP ファイルとか云うものを作成する ※既にあるファイルマネージャのものをコピーして編集する
sudo cp /usr/share/applications/pcmanfm.desktop /usr/share/applications/pcmanfm_sudo.desktop

sudo nano /usr/share/applications/pcmanfm_sudo.desktop
Icon=system-file-managerIcon=user-desktop に変更する ※アイコンは何でもいいんだけど…個人的にこの辺が判りやすいアイコンだったんでこのようにした
Name=File Manager PCManFMName=File Manager sudo に変更する
Name[ja]=ファイルマネージャ PCManFMName[ja]=ファイルマネージャ sudo に変更する
GenericName[ja]=ファイルマネージャGenericName[ja]=ファイルマネージャ sudo に変更する
Exec=pcmanfm %UExec=sudo pcmanfm %U に変更してファイルを保存する

202110161733492-admin.png
デスクトップの「ランチャアイコン上」で右クリックしてメニューを出しアプリケーション・ランチャー Settings をクリック

202110161733491-admin.png
何故か「システムツール」に入っているファイルマネージャ sudo を選び 追加(A) ボタンを押す

20211016173349-admin.png
新しい「ランチャアイコン」が追加された

202110161747561-admin.png
root 権限なんで(概ね)どのフォルダ/ファイルでも操作できる その際にツールバーの左端に「現在あなたは管理者権限で操作しています」を表す マークが表示されています
そしてもちろん右クリックでメニューを出して各種操作もできる

20211016174756-admin.png
メニュー操作により root 権限が必要なファイルの編集もできる
ただしシステムに関連した重要なファイルの変更などで取り返しのつかない事態に陥る危険性もあります 使用には細心の注意が必要です!

  :

----- Raspberry Pi の基盤穴サイズ -----

Raspberry Pi の基盤穴サイズっていうか…適合するボルト径ですかね
20211016234940-admin.jpg
M2.5 ってやつがピッタリ合うようです M3 だと微妙に太くて通らないようです
設定って話じゃないけど…ちょっと気になったんでメモしておきます

今回はここまで! 長々とお疲れさまでした! #[Raspberry Pi] #コマンドヘルプ

  ●ラズパイの頻度低めだけど知っておきたい設定メモ Vol.3
  ●ラズパイの頻度低めだけど知っておきたい設定メモ Vol.2
  ●ラズパイの頻度低めだけど知っておきたい設定メモ Vol.1
  ●ラズパイで Apache2 サーバを建ててゆるい設定をする
  ●モニタ無しでラズパイを VNC 接続できるとこまでセットアップ

情報 <2516文字>

Raspberry Pi 4 で素早く Apache2 サーバを建ててゆるい設定をするメモ

20211203173447-admin.png
 
常時接続が当たり前の昨今に於いてお家で Raspberry Pi 4 を Web サーバにする需要が多いと聞きますが…わりと Apache2 の設定って難解で面倒なんですよね その辺をぐぐってみてもバージョン違いや実装の違いでいまいち思ったように設定できないって困ったことはありませんか? 私はあります(汗って事なんで…セキュリティ的な云々は後回しにして手っ取り早く簡単に設定できる方法を模索してみます

そんなラズパイへの Apache2 のインストール自体はコマンド一発で簡単にできます
sudo apt install apache2
これで Apache2 がインストールされサーバが動き出します
試しに PC などのブラウザのアドレス欄に ホスト名.local と入れて確認してみましょう ちなみに標準状態のラズパイのホスト名は raspberrypi なんで raspberrypi.local になります

20211016095920-admin.png
我が家のラズパイはホスト名を pi4 にしてるんでアレだけど…概ねこんな感じになると思います
これは Apache2 のテスト用に用意されたページで /var/www/html にある index.html を表示しています この /var/www/html をドキュメントルートと呼びます 基本的にこのフォルダにホームページ用のデータを置いていきます

  :

初期状態の Apache2 は各種機能が制限されているっていうか CGI が動かなかったりとか物足りない感じなんでその辺をどうにかします
20211016101700-admin.png
そんな Apache2 の設定ファイルは /etc/apache2 にあります この中の apache2.conf を編集したくなる感じですが…世間的にはよっぽどの事がない限りこのファイルはイジらないほうがいいって事らしいんで別の手法で設定します

20211016102522-admin.png
/etc/apache2 を眺めてると… conf-availableconf-enabled の対になったフォルダに mods-availablemods-enabled の対と sites-availablesites-enabled の対になったフォルダがあるのに気づきます
これがラズパイの Apache2 の設定ファイル&モジュール管理の基本となります このフォルダ内にファイルを作ったりして設定を進めます

20211016103332-admin.png
そのそれぞれ対になった *-available*-enabled 関係ですが… available は編集中のものを含め全ての候補となるファイルが入っています 対する enabled には Apache2 を起動する際に実際に読み込まれるファイルのシンボリック・リンクが入ります
※いろいろ設定した後の内容なんで…インストール直後のものとは違いがあります(汗

それぞれ対になってる conf と mods と sites の意味ですが… conf にはアクセス制御系の設定が mods には拡張モジュールが sites にはバーチャルホスト系の設定が入ります
そしてその 有効/無効 にするための専用のコマンドが用意されています
conf の有効化には a2enconf で無効化には a2disconf を使います
mods の有効化には a2enmod で無効化には a2dismod を使います
sites の有効化には a2ensite で無効化には a2dissite を使います

  :

では試しに CGI を有効化する設定をしてみましょう
CGI を使うにはそれ用のモジュールが必要らしいんで sudo a2enmod cgid で有効化します
一応 sudo systemctl restart apache2 で Apache2 を再起動します

これで /usr/lib/cgi-bin に配置した CGI 的なプログラムが可能になりますが…どうせならドキュメントルートである /var/www/html でも CGI を使えるようにしましょう

sudo nano /etc/apache2/conf-available/cgi.conf で新規ファイルとして編集して…
<Directory "/var/www/html">
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl .py .rb
    AllowOverride All
</Directory>

上記の 5 行を追加して保存します 今回は cgi.conf としましたが他の名前にしても大丈夫です

保存したら sudo a2enconf cgi でその設定ファイルを有効化します
最後に sudo systemctl restart apache2 で Apache2 を再起動します
これで /var/www/html でも CGI が使用可能になりました

  :

CGI の設定とは少し違いますが…上記の cgi.conf に書き込んだ AllowOverride All って設定があります これは  .htaccess を使用可能にする設定です
.htaccess が使えれば Apache2 の再起動をすることなく設定を即座に反映させることができるようになります その分ページ表示されるまで余計な処理が増えて重くなるらしいんだけど…めったにアクセスの無い個人ページならまぁ問題にならないでしょう(滅
.htaccess についての詳しい説明は…いろいろ多岐にわたる内容すぎて書ききれないんで省略します 気になる方はぐぐってみると良いでしょう(瀧汗

  :

そうそう Perl で書かれた CGI で「CGI モジュールが必要」ってのをちょくちょく見かけるんで…そんな Perl のモジュールインストールメモをひとつ
Perl のモジュール管理(?)に CPAN (Comprehensive Perl Archive Network) を使うって話を度々目にすることがあったのも時既に過去の話だったのかなって遠い目をする話じゃなくて(汗そんな Perl モジュールの中で必須とする数個のインストールのためだけに CPAN を入れるのもめんどっちぃなぁって事なんで…普段使ってる sudo apt install でその辺をどうにかするメモ

結論から云うと CGI モジュールは sudo apt install libcgi-session-perl で入ります その他の有名どころのモジュールもだいたい sudo apt install で入れることができます
上記のCGI モジュールは心もち特殊な例なんでアレだけど…他の多くは sudo apt install lib(モジュール名)-perl でイケる事が多いです

例.GD モジュール→ sudo apt install libgd-perl  NKF モジュール→ sudo apt install libnkf-perl などなど
確証はないけど…知っておくと損はないかもです

そんなこんなな長々とお疲れさまでした! #[Raspberry Pi] #Apache #CGI

  ●ラズパイの頻度低めだけど知っておきたい設定メモ Vol.3
  ●ラズパイの頻度低めだけど知っておきたい設定メモ Vol.2
  ●ラズパイの頻度低めだけど知っておきたい設定メモ Vol.1
  ●ラズパイで Apache2 サーバを建ててゆるい設定をする
  ●モニタ無しでラズパイを VNC 接続できるとこまでセットアップ

情報 <3321文字>

完全モニタ無しで Raspberry Pi 4 を VNC 接続できるとこまでセットアップするメモ

20211203170030-admin.png
 
※ Raspberry Pi OS が新しくなったんで…それに対応した新しい解説はこちら→ 続・モニタ無しでラズパイを VNC 接続できるとこまでセットアップする

  :

某風の噂で「ラズパイ4ってモニタが無いと動かないらしいんだぜ?」って聞いたんだけど…いやいやそんなバカな話があるもんかガセネタにも程がある!って思ったんでここはひとつラズパイ4に一切モニタを繋がないで(ついでにキーボードもマウスも繋がないで)セットアップして VNC 接続して操作できる辺りまでどうにかしてみました

  :

今回使用したのは Raspberry Pi OS with desktop です
20211015182803-admin.png
モニタ無しって事はサーバ運用だろ? なんで GUI な環境がいるん?? そう思うかも知れないけど…ド初心者は何かとグラフィカルな操作を求めがちなんだよ察しろ!

ちなみにラズパイ起動用の microSD を作成するのには Raspberry Pi Imager を使うといいらしいんだけどなんか面倒くさかったんで Linux(Ubuntu) 付属の dd コマンドで済ませちゃいました(汗
sudo dd if=2021-05-07-raspios-buster-armhf.img of=/dev/sdX bs=4M conv=fsync status=progress
of=/dev/sdXX は個々の環境によって違います あと conv=fsync は付けた方がいいらしいです

  :

こうして出来た microSD を PC にマウントすると rootfs パーティションと boot パーティションが現れます ただし rootfs パーティションは ext4 ファイルシステムなんで Windows では読めないらしいんで現れないかも知れません
もうひとつの boot パーティションは FAT32 ファイルシステムなんで Windows でも問題なく読み書きできます そして起動前の操作はこの boot パーティションに対して行います

まぁその操作は SSH を使えるようにするおまじないみたいなもんですかね
先ほどの boot パーティションのルートフォルダにファイル名が「ssh」もしくは「ssh.txt」のファイルを新規作成するか…もしくは何処かからコピーするだけです 「ssh」もしくは「ssh.txt」のファイルの中身は何でも構いません 空のファイルでもいいです

これで前準備は完了です この microSD を Raspberry Pi 4 に挿して電源を供給します
赤色のパワー LED が点灯して…その横にある緑色のアクセス LED が不規則に点いたり消えたりして起動していきます

※起動の際に何かエラーがあるとこの緑色のアクセス LED が規則的に点滅して知らせてくれます
※点滅の回数などで何のエラーなのかある程度知ることが出来ます
こちらのページ に詳しく書かれているんでもしもの時には参考になるかも??

起動が完了すると緑色のアクセス LED が殆ど点灯しなくなります その辺が起動の見極め時ですかね
そして PC から SSH 接続します Ubuntu(Linux) には標準で ssh が用意されているけど… Windows はどうなんだろう? そっちにも用意されているとは聞いたことがあるようなないような(汗

ssh pi@raspberrypi.local
LAN 内にラズパイが 1 台だけなら基本的にこの手法で繋がります
なおラズパイのネットワークへの接続は有線 LAN を使います
無線 LAN(WiFi) を使いたい場合は「wpa_supplicant.conf」でどうにかするらしいのですが…今回は有線 LAN のみを使ったんで詳細は不明です

余談ですが…我が家には既にラズパイ3が動いているんで上記の raspberrypi.local が使えませんでした
それなら IP アドレスで…と思うのですが DHCP による割り当てなんでアドレスが判りません(汗
まぁそんな時は arp -a とかすると活きた IP アドレスが列挙されるんでアタリを付けやすくなりますが

そうこう云いつつ SSH 接続を開始します
今回は ssh の -l オプションでユーザ pi を指定してるけど Windows の ssh はオプションの意味が違うらしい?
ここは ssh pi@192.168.0.34 とかの書き方のほうが判りやすくていいかもだけどどうなんだろう
202110151828031-admin.png
初接続時のみ「未知の証明書なんだけど大丈夫? 接続していいの??」って聞かれるんで yes する

202110151828032-admin.png
パスワードを聞かれます ラズパイの初期設定パスワードは raspberry なんでそれを入力する

202110151828033-admin.png
接続できたら次の作業っていうか sudo raspi-config して設定ツールを起動する
キーボードの矢印キーで移動してエンターキーで決定ってスタイルです
Tab キーを使う場面もあります

202110151828034-admin.png
3 Interface Options を選ぶ

202110151828035-admin.png
P3 VNC を選ぶ

202110151828036-admin.png
VNC サーバを有効にするけどいいの?と聞かれるんで <Yes> を選ぶ

202110151828037-admin.png
設定完了
それじゃ早速 PC の VNC Viewer で接続してみましょう 我が家では Remmina を使ってみました

202110151828038-admin.png
・・が繋がりません なんか「Unknown authentication scheme from VNC server: 13, 5, 6, 130, 192」ってエラーっぽい?
これはラズパイ側のセキュリティ設定との兼ね合いらしいんでその辺をどうにかします

202110151828039-admin.png
先ほどの SSH でラズパイの設定ファイルを編集します
sudo nano /root/.vnc/config.d/vncserver-x11

テキストエディタに nano を使ったけど vi も使えます お好きな方でどうぞ
そして末尾に以下の 3 行を追加します

2021101518280310-admin.png
Authentication=VncAuth
Encryption=AlwaysOff
Password=


2021101518280311-admin.png
sudo systemctl restart vncserver-x11-serviced で VNC サーバを再起動する

2021101518280312-admin.png
再び PC の VNC Viewer で接続を試みる
パスワードを聞いてくるようになりました でもなんかエラーが出て繋がりません

2021101518280313-admin.png
再び SSH で sudo vncpasswd -service と入力する

2021101518280314-admin.png
パスワードを聞かれるのでお好みのパスワードを 2 回入力する
そして sudo systemctl restart vncserver-x11-serviced で VNC サーバを再起動する

2021101518280315-admin.png
またまた PC の VNC Viewer で接続を試みる 先ほど設定したパスワードを入力する
しかしまだ繋がらない(汗

これはラズパイ側のモニタ設定(?)が問題らしいのでその辺を解決する

2021101518280316-admin.png
sudo nano /boot/config.txt を編集する

2021101518280317-admin.png
#hdmi_force_hotplug=1 を探す

2021101518280318-admin.png
あった

2021101518280319-admin.png
先頭の # (コメント記号)を消して有効にする

2021101518280320-admin.png
これで設定は完了なんでラズパイを再起動する
sudo reboot

2021101518280321-admin.png
これで VNC Viewer での操作が可能になりました
なんかデフォルトのパスワードだと云々…のダイアログが出てるけどまぁ OK する

2021101518280322-admin.png
せっかくなんで初期設定も済ませちゃおっか

2021101518280323-admin.png
お国の設定は Japan にすると概ね日本語になるよ

2021101518280324-admin.png
ログインパスワードの再設定をする ラズパイ初期設定パスワード raspberry のままだと何かと不安なんでお好みのものに変更しておく

2021101518280325-admin.png
ラズパイにモニタを繋げている人向けの設定
黒枠があったりして見づらい時にはチェックを入れておくとどうにかしてくれるらしい?

2021101518280326-admin.png
WiFi の設定は使わなかったんで素通りした(汗

2021101518280327-admin.png
最後にソフトウエア等のアップデート 全自動でやってくれるから見てるだけなんだけど結構時間がかかります

  :

そんな感じで作業完了してモニタ無しのラズパイを VNC Viewer で操作できるようになりました
そして某風の噂の「ラズパイ4ってモニタが無いと動かないらしいんだぜ?」って話は正しくないと判明しました
まぁ実際に長期の運用をしてみないとアレかもだけど…感触的には大丈夫っぽそうかな

そんなこんなな長々とお疲れさまでした! #[Raspberry Pi]

  ●ラズパイの頻度低めだけど知っておきたい設定メモ Vol.3
  ●ラズパイの頻度低めだけど知っておきたい設定メモ Vol.2
  ●ラズパイの頻度低めだけど知っておきたい設定メモ Vol.1
  ●ラズパイで Apache2 サーバを建ててゆるい設定をする
  ●モニタ無しでラズパイを VNC 接続できるとこまでセットアップ

情報 <3954文字>

ウルトラスーパービッグマキシムグレートストロングトット

20211015151830-admin.jpg

マリネちゃん
202110151518301-admin.jpg

おもらし
20211015151830-admin.png

メモ <46文字>

DASHBOARD

■複合検索:

  • 投稿者名:
  • 投稿年月:
  • #タグ:
  • カテゴリ:
  • 出力順序:

■ハッシュタグ:

■カテゴリ:

■日付検索:

■機器状態:

Raspberry Pi 4 Status

編集

RSSフィード