体に染み付いた古い習慣を一掃

どの分野においても、変化を受け入れ順応していくと、更なる新しい展開を楽しく受け入れられるようになる。

未だにifconfigとか、service samba restartとか、体に染み付いた時代遅れコマンドをつい使ってしまうが、Debian 10やCentOS 8の運用をきっかけに、今時の実装に慣れていきたいと思う。

以下、気付いたコマンド・デーモン。

古い実装 今時の実装 備考
ifconfig
(net-tools)
ip a, ip -s a, ip n, …  
route add -net default gw 192.168.0.1 nmcli c modify eth0 ipv4.gateway 192.168.0.1  
iptables nftables  
ntpd chronyd redhat解説
xorg wayland (GNOME, KDE) XFCExorg
cron systemd.timer man systemd.timer
rsyslog journalctl man journalctl
service, rcconf, chkconfig, ... systemctl  
eth0 enp0s3 命名規則等
AppArmor RedHat系ではSELinux

参考:Debian 10 (buster) リリースノート (64 ビット PC 用)

server-worldさんの備忘録ページで、Debian10や、間もなく出てくるであろうCentOS8に関する記事の設定を見ると良いと思う。

iptables/fireholでNAT/IPマスカレード/ポートフォワディングしている部分をnftablesに乗り換えるところは、いずれ整理したい。 

 

Debian10 でScreenlets

[再掲] Screenletsのようなガジェットは、セキュリティリスクが多分にあって全く推奨できず、標準パッケージはもはや存在しないが、閉塞的な開発PCや仮想マシンでの限定的な用途であれば問題無いであろう、たぶん。


やり方はここと同じノリだが、やはり一筋縄でななかった。
やった後で気付いたのだが、単に、stretchのリポジトリを指定してインストールすればよかった気もするが、試していない。

apt install python-cairo python-gtk2 libwnck22 libwnck-common python-gobject-2 python-tz python-dbus python-xdg gnome-icon-theme
apt install python-gconf  ## GNOMEを使う場合は必要みたい
wget http://ftp.debian.org/debian/pool/main/g/gnome-python-desktop/python-wnck_2.32.0+dfsg-3_amd64.deb
wget http://ftp.debian.org/debian/pool/main/g/gnome-python-desktop/python-rsvg_2.32.0+dfsg-3_amd64.deb
wget http://ftp.debian.org/debian/pool/main/b/beautifulsoup/python-beautifulsoup_3.2.1-1_all.deb
sudo dpkg -i *.deb

## 必要に応じて
sudo apt --fix-broken install

## 以下、UbuntuとDebianで、ScreenletsのPythonコンテンツの対応とフォルダ構成が
## わずかに異なる。過去の資産に合わせて対応すると良い。

## Ubuntu派:screenletsをlaunchpadから入手
wget https://launchpad.net/screenlets/trunk/0.1.7/+download/screenlets-0.1.7.tar.bz2
tar xaf screenlets-0.1.7.tar.bz2
cd screenlets-0.1.7/
sudo make install  ## エラー出るけど無視

## Debian派:screenletsを http://ftp.debian.org/debian/pool/main/s/screenlets/ から入手
wget http://ftp.debian.org/debian/pool/main/s/screenlets/screenlets_0.1.2-8.1.diff.gz
wget http://ftp.debian.org/debian/pool/main/s/screenlets/screenlets_0.1.2.orig.tar.gz
gunzip -d screenlets_0.1.2-8.1.diff.gz
tar xaf screenlets_0.1.2.orig.tar.gz
cd screenlets
patch -p1 < ../screenlets_0.1.2-8.1.diff 
sudo make install  ## エラー出るけど無視

## シンボリックリンクの処置
cd /usr/share/icons
ln -s hicolor/scalable/apps/screenlets-tray.svg 
ln -s hicolor/scalable/apps/screenlets.svg 
ln -s /usr/lib/python2.7/site-packages/screenlets /usr/lib/python2.7/dist-packages/screenlets

## Screenletsのコンテンツにこれまでのコレクションを適用する場合
scp -r <Screenletsが稼働しているPC>:/usr/share/screenlets /tmp
# root権限で
mv /tmp/screenlets /usr/share
chown -R root:root /usr/share/screenlets

## Screenletsの設定を引き継ぐ場合
## Ubuntu派はSが小文字:
cd $HOME/.config/screenlets
scp -r <Screenletsが稼働しているPC>:/home/<user>/.config/screenlets/* .
## Debian派はSが大文字:
cd $HOME/.config/Screenlets
scp -r <Screenletsが稼働しているPC>:/home/<user>/.config/Screenlets/* .


Screenletsウィジェットをマウスで移動できないときの処置:
GNOME環境ではこの処置が必要だが、Cinammon, MATE, XFCE環境では不要(やってもいい)。処置する場合、インストール前のソース __init__.py またはインストール後の/usr/lib/python2.7/site-packages/screenlets/__init__.py を、ここにある内容となるように編集する。
つまり、
 NG: self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DOCK)
 OK: self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_UTILITY)

ラズパイ・アラカルト

新ラズパイ

Raspberry Pi 4 がもうすぐ国内でも発売されるはず。CPUパワーアップだけでなく、これまでLANが基板内部でUSB経由だったところがCPU直結となる点が嬉しい。

シリーズはWiki先生が整理してくれている。

10/M追記:技適認許はいつも長いが、それについてエンジニアからの説明がここにある。

 

FPGAラズパイ

空想の世界では存在する。SF小説『オービタル・クラウド』。IT/IoT/サイバー/宇宙に関心のある方は、文庫上巻の末尾にある用語解説を見るだけで好奇心が湧いてくるはず。

来年FPGAラズパイが本当に出たら、予言的中! まぁ、それに近いモデルは既にあるが、ラズパイのような価格/流通量ではない。

 

アクリルラズパイ

かつて私の恋人だったPi3 Model B。2つ型落ちとなり、今はアクリルを身にまとうオブジェに。 

f:id:t0a9n9a4k:20190813203706j:plain

 ・・・真面目に使う場合はファンをまわしてはいけない。ヒートシンクにしよう。アクリルは基板に密接するので、型番が少しでも違うとNG。手配するときは型番をしっかりマッチさせよう。

 

エアロの合間にBodyjam

サウンドとムーブメントの絶妙なマッチング。爽快にはじけ飛ぶ展開。それらをゆったりとつなぐ気の流れはまるで太極拳。そうした流れを60分間楽しめる。うまく動ける必要はなく、楽しめればOK。Youtube等で様子を見ると、後ろの方は結構グダグダ、でも、みんな楽しんでいる。

内部構成:Warmup → Cardio1 → Interval
          → Cardio2 → Cooldown

新曲は1,4,7,10月。それ以外の月は先生の趣味でMix。Mixでは内部構成もMixされることが多い。

以下、私的メモ。まだ経験1年。随時更新。

No. MEMO ひざ注
70 面替え要素が若干あるけど、周囲の流れに乗れば、大丈夫。  
73 古いようで、古くない。ゆるいようで、ゆるくない。横キックポールチェンジをシャッフル的にキレ良く決めたい。  
74 5 more hours, just getting started. ♫ ・・・そう、あと5時間行けそうなノリ。
 
75 微かなエスニックの雰囲気と、独特のアーム・ステップが楽しい。  
80 Rihanna ♠ アームの動きがクール。  
81 経験した中では最強。270左エア+3ステップバック+ポールチェンジ+左ターンのしびれる展開。いつかリベンジ。
 ・・・    
84c1 ちょっと苦手な動きだけど、嫌いではない。一瞬の横キックポールチェンジは決めたい。  
84c2 バランスをとるところが好き。  
85c1 私のBodyjamデビューはここ。ややゆるめで助かった。  
85c2 キレよくリバースターンを決めよう。但し、力入りすぎないように。  
86c1 ♪ Rihanna ❤ 最初のターンはエアロではまず無い少ない右軸足の左ターン。  
86c2 ラテンが多いから腹筋意識。途中、何故かCardio1の割込処理が入る。  
87c1 「Mr.コーエン」って誰?(笑)、ネーミングと妙にマッチする振り。  
87c2 リバースターンからはじけ飛ぶバレエ的展開。その後のノリもGood。
88c1 スリーシックスティ右エアは、力まない方が決まる。着地はスキーやスノボと同様、足幅確保でひざ曲げて! 調子悪ければ棒ジャンプ。
88c2 リッキーマーティンの後は、右方向です。最後は気持ちよく大きく左ターン。  
89c1 いきなり左軸足の右旋回。ヒップホップは次の展開に入る1ステップ前のバリエーションを楽しもう。以外と奥が深い。  
89c2 バレエ的なスイープバック。ジャンプキックではじける後半。終わるとみんな無口。
90c1 ビートにしっかり乗り、しっかり刻めるようになると、気分爽快です。  
90c2 はじけ飛び方がWest Side Storyの雰囲気。腕を開く勢いで跳ぶと軽やか。ひざには意外とやさしい。  
91全体 いつもより多い1歩前・半歩裏前(=カウント8の表・裏)の意識ポイントをキャッチしきれば、壮絶にカッ飛べます。  
91c1 マンボターンもどきは、2歩目、4歩目をどこに置くか、研究中。  
91c2 流れに呑まれるとアドレナリンMAX! 抑えよう。
2ndターン予備動作は左足から。 
 
ひざ注:ひざや足首に負担がかかるので、できれば下半身の筋トレとストレッチを先にしておきたい。調子が悪い時は躊躇せずオプションでスルー。
 
最後は心もクールダウン。最後の深呼吸に、先生と周囲の方々への感謝の気持ちを込めて、謙虚な精神状態に戻ろう。
 
 

Xfceデスクトップアイコン文字背景を透過にする

前回記載した通り、アップグレードを続けていると、古い実装が残り、新しいトレンドに出会う機会を喪失し、やがて損をすることになる。そこで、Debian10は新規に育てることとする。

Debian10のデスクトップ環境は、デフォルトのGnome以外にもいろいろ選べる。私は、軽量かつ機能十分のXfce4で育てる。インストール直後のXfce4デスクトップ画面はとても素っ気なく、モチベーションが全く上がらないので、透過設定やアンチエイリアス設定をしてビジュアルを整える。整え方がわかりにくければ、私の場合、永年ホビーマシンにしてきたUbuntu Studio(デフォルト Xfce4)の実装が参考になる。

Xfce4のビジュアルは、たいてい、「設定マネージャー」か右クリックで直感的に何とかできるが、毎回分かりにくいのが、デスクトップアイコン文字背景の透過設定である。これは、/usr/share/themes/ 以下にある「gtkrc」を編集すれば透過になるのだが、パッケージを入れて一気に解決できる。

sudo apt install greybird-gtk-theme
アプリケーション→設定マネージャー => 外観 => Greybird, Blackbird等

なお、とあるローカルサーバ用途へ展開するDebian10は、安定稼働に入れば、lightdm/Xfce4を起動させない対応をとる。サーバの位置付けによっては、当然、デスクトップ環境は根こそぎアンインストールする。一方で、開発環境向けにはいつものようにScreenletsを無理やり入れる。

Debian10で、さっそくトラップを踏む

めでたくDebian10がStableに昇格したので、アップグレードしたところ、さっそくトラップを踏みました。

安直アップグレード:

sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list
sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list.d/*.list
sudo apt update
sudo apt upgrade

 

トラップ:

uimの依存関係崩れでアップデートが中途半端に終わり、にっちもさっちもいかなくなりました。元の/etc/apt/sources.list次第なのですが、日本語環境でuim関連パッケージが入っているならば、アップグレード作業に入る前に、根こそぎ削除しておいた方が良さそうです。

 

私は、結局、元のsources.listに一旦戻し、apt updateしてから、dpkg -l | grep uim でひっかかるパッケージを全てapt purgeすることとなりました。

 

その後、sources.listをbusterに戻し、apt update; apt full-upgradeの後、apt install uim-anthyで解決。今のところ私の環境では、これ以外のトラブルは無さそうですが、まぁ、普通は、アップグレードはもう少し待つべきでしょう。。。

 

なお、この件は、既知の問題のようです。

https://www.reddit.com/r/linuxquestions/comments/80sfo3/cant_install_remove_or_update_packages_uimanthy/

 

・・・そもそも、アップグレードを続けていると、古い実装が残り、新しいトレンドについていけなくなります。今回も、nftablesとかwaylandとか、目玉がいろいろありあす。夏休みを目途に、新規で育てます。

 

ラズパイ MicroSD自己増殖

電源プチ切り対応したラズパイのMicroSDを自己増殖する。コピー先のMicroSDは、100均のMicroSD-USB変換アダプタを使ってラズパイに挿入する。そのMicroSDは「/dev/sda」として認識されるはずである。ddコマンドだけで安直にコピーしても、おそらく問題は起きないが、コピーチェクの時間まで考慮すると、cp -aで実施した方が速い。そのため、下記のような少し手の込んだ対応をする。

前提:私のラズパイのMicroSD(コピー元)のパーティションは下記のようになっている。UUID関連の出力は省略している。

~# blkid
/dev/mmcblk0: PTTYPE="dos"
/dev/mmcblk0p1: LABEL="boot" TYPE="vfat"
/dev/mmcblk0p2: LABEL="rootfs" TYPE="ext4"
/dev/mmcblk0p3: LABEL="nfsroot" TYPE="ext4"

以下、非インタラクティブなシェルにしている。(まだ作成中)
ラズパイの場合、先頭領域をddでコピーしなくても良さそうだが、念のためそうしている。

#!/bin/bash
## 先頭64MBだけはddでコピー(パーティション情報と先頭のfat領域をコピー)。
dd if=/dev/mmcblk0 of=/dev/sda bs=16M count=4 
sync
## ベリファイ
MD5_ORG=`dd if=/dev/mmcblk0 bs=16M count=4 | md5sum`
MD5_SDA=`dd if=/dev/sda bs=16M count=4 | md5sum`

if [ ! ${MD5_ORG::32} == ${MD5_SDA::32} ] ; then
    echo "先頭領域のコピーでエラーが発生しました。途中終了します。"
    exit 1
fi

## MicroSDの容量変更
# 容量を変える場合はフォーマットの前にパーティション調整する。
# CUIならparted, HDMIモニタのX-Window環境ならgpartedで調整すると楽だろう。

## ext4フォーマット
mkfs.ext4 -F /dev/sda2
mkfs.ext4 -F /dev/sda3

## ラベル付与
e2label /dev/sda2 rootfs
e2label /dev/sda3 nfsroot

## コピー
### 電源ブチ切り対応でROマウントしていた部分を一旦RWにする。
mount -oremount,rw /   
[ -d /mnt/org ] || mkdir /mnt/org
[ -d /mnt/new ] || mkdir /mnt/new
mount /dev/mmcblk0p2 /mnt/org
mount /dev/sda2 /mnt/new
cp -aT /mnt/org /mnt/new
sync; echo 3 > /proc/sys/vm/drop_caches
umount -f /mnt/org /mnt/new
### ROに戻す。
mount -oremount,ro /

mount /dev/mmcblk0p3 /mnt/org
mount /dev/sda3 /mnt/new
cp -aT /mnt/org /mnt/new
sync; echo 3 > /proc/sys/vm/drop_caches
umount -f /mnt/org /mnt/new

備考:

  • ddコマンドはコピーチェックをしないので、書込後のハッシュチェックはした方が良い。

  • cp や rsync はコマンド内にコピーチェック機能が含まれているので、書込後のハッシュチェックは不要。

  • rsyncよりcpの方が、コピー後のディスク容量が小さくて済む。どちらでも良いケースでは、標準コマンドであるcpを使う方が良い。 一方で、rsyncやddは、progress(進捗)表示が可能。