[エアロビ]ステップ

エアロビで覚えたステップの名前を以下に示す。

レッグカール
グレープバイン
ステップニー
マンボー
サイドマンボー
シャッセ♥
ボックスステップ
Aステップ/Vステップ
ステップビハインド
ツイスト
チャチャ
ピボットターン
ヒールジャック♥
ポールチェンジ
キックポールチェンジ♥
パドブレ
ランニングマン

♥:好きなステップ

これらの組み合わせに、ターン、フリーズ、フェイクと、先生オリジナルのステップが混じる。
20年前のエアロビは、こんなんではなかったはずだが。。。

[エアロビ] 脱力の重要性

学業・仕事・趣味、どのような分野に対する取り組みも、成長が停滞する時期がある。力が入りすぎてもがき苦しみ、永く暗い停滞の後で、ふと、力を抜く機会を得ると、壁を超えることができる。まさに、そのような経験を、今月、味わった。

主治医からの助言でエアロビクスを20年ぶりに再開し、約2年が経過した。ほぼ週1回のペースでスタジオに入り、徐々にレベルを上げていったが、今年初めに壁にぶつかった。どうしてもコリオ(振り付け)に乗れない、覚えられない。先生がステップのレベルを上げたのは分かったが、悶々とした日々が約3カ月続き、リフレッシュしに来たはずが、逆にストレスをもらって帰る日もあった。

そんな中、ある週末、ボーっとテレビを見ていた時、最近、急に強くなった女子テニスプレーヤーにインタビューするシーンが放送され、ある事が心に留まった。どうやら、新コーチから、「力を抜く」を徹底指導されたとのこと。それは、まさに、このブログのサブテーマ=「脱力」だった。そうだ、忘れていた!

その後、コリオを力づくで覚えることは放棄し、脱力を意識し、感じるままにコリオに乗ってみると、、、体が軽い! ちょっと間違えても気にならなくなり、大きく動けるようにもなって、体が自然に動きを覚えるようになった。更に、8ビートではなく、16ビードでコリオに乗ると、余裕すら感じるようになった。

昨年11月に玉砕した、最上位クラスのエアロビに臨む時が来たかもしれない。ビールの好きそうなメタボな魑魅魍魎(ちみもうりょう)たる人々*1が、前後左右クルクル回りながら軽やかにステップする伏魔殿の中で、私ひとり、お地蔵様であった。あの伏魔殿に、リベンジできる日も近い。

ちなみに、私は、ジムで、友達ができたことが無い。。。

*1:この時は緊張と恐怖のあまりそう見えましたが、実際にはそんなことはありません。m(_ _;)m

ddで書込後のMicroSDのハッシュが元ファイルと一致しない

LinuxホストでMicroSDカードを作る時、どうしてもハッシュが一致しなかったが、解決した。
自動マウント機能が有効だと、ddの途中でマウントされてしまい、何か駄目になるらしい。
そもそもマウントされると、ジャーナル機能が何かしら走るため、マウント前後では内容は一致しなくなるが、ddの途中でそれが発生すると、コピー中のファイルシステムが崩れるっぽい。下記いずれかの処置(または、いくつかの処置)で大丈夫になるはず。実際、全部やったら、ハッシュが一致するようになった。おそらく対処1だけでも問題は回避できていたと思うが、自動マントされた後ではハッシュでの確認がとれない。

別解(この方が確実):
Shift + Ctrl + [F1]
rootで
service lightdm(gdm) stop
その後、dd操作。

対処1:nice(優先度)の調整でしのぐ。マイナス20が最高優先。
sudo nice -n -20 dd if=2017-06-21-raspbian-jessie.img of=/dev/sdg

対処2:自動マウント機能をOffにする。
私の環境は、XFCE-Thunarがファイルマネージャ。
「設定」→「詳細」→ボリューム管理
「ボリューム管理を有効にする」をOffにするか、もしくは、更に「設定」を押して細かく設定(チェックを外す)。

対処3:dconf-editorにて、
sudo apt install dconf-editor
dconf-editorにて、「/org/gnome/desktop/media-handling」まで選択し、各設定項目をfalseにしていく。

確認:目視で先頭4桁程度合っていればOK。
sudo md5sum /dev/sdg
※2018年11月補足:/dev/sdgはサイズ指定して比較した方が良い。.imgファイルはたいてい16Mで割り切れるので、その場合は下記のようにすればよい。16M=2**24。

sudo dd if=/dev/sdg bs=16M count=$((`wc -c < 2018-11-13-raspbian-stretch.img`/2**24)) status=progress | md5sum

md5sum 2018-11-13-raspbian-stretch.img

備考:ddプログレス表示は status=progress

箱を開ける

購入してから1年以上お蔵入りしていたが、日の目を見る時が来た。普通にraspbianをddでコピーして起動した。手持ちのMicroSDは16GBなので、Ubuntuホストのgpartedを使い、MicroSDext4の領域を引き伸ばした。

※ 電源は重要。USB2.0での給電だと、パケロス多発。USB3.0からの給電で解消された。2.4〜2.5A対応のACアダプタを買おう。あんまり安いACアダプタだと焦げたりするから、2.4A(正規規格)で、実績のあるメーカ品が良いと思う。・・・結局、100均の5V2.4A ACアダプタ @300円でやってますw。

まずは、HDMIディスプレイ/マウス/キーボード接続から開放されたい。当座の目的は、Wireshakが使えること。究極の目的は、UTM(Unified Threat Management)の簡易環境を構築すること。

セットアップメモ:

## 最初
sudo su -
apt update
apt upgrade
rpi-update
reboot

## 日本語化
 左上メニュー → Preferences → Raspberry Pi Configuration

## SSHサーバ起動
 上記と同じ画面から設定可能。

## xrdp(リモートデスクトップ)
sudo su -
apt install tightvncserver	# 何故か必要
apt install xrdp
cd /etc/xrdp

## 以下の手当はstretchでは日本語パッチがあてられたので不要。
wget http://w.vmeta.jp/temp/km-0411.ini
ln -s km-0411.ini km-e0010411.ini
ln -s km-0411.ini km-e0200411.ini
ln -s km-0411.ini km-e0210411.ini

## その代わり、stretchでは下記の処置が必要だった。
/etc/xrdp.iniにて、[Xvnc]のセクションと[Xorg]のセクションを入れ替える、
[Xvnc]が先。

## xrdp起動
service xrdp restart

## wireshark
apt install wireshark
# root以外での... という選択肢はNoを選択した上で、下記を実施。
setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/dumpcap

Ubuntu RAM-Linux その4:overlayfsで

URLにあるoverlayの実装は古く、そのままではうまくいかない。以下、aufs側のスクリプトをベースにoverlayfs向けに調整した。
[2018年1月]手元のホビーマシンではUbuntu17.10でも通用している。

#!/bin/sh
# ルート「/」をoverlayfsでマウントするinitrd向けスクリプトです。
# リブートすると、「/」は元の状態に戻ります。
#
# 【準備】
# 1. このスクリプトは、下記ファイルへ保存して下さい。
# /etc/initramfs-tools/scripts/init-bottom/rootoverlay
# また、実行権限を与えて下さい。
# chmod 0755 rootoverlay
#
# 2. initrdにoverlayモジュールを入れる指示をします。
# echo overlay >> /etc/initramfs-tools/modules
#
# 3. initrdを更新して下さい。
# update-initramfs -u
#
# 4. grub.cfgを更新して下さい。
# vi /boot/grub/grub.cfg
# overlay=tmpfs をエントリに追加して下さい。
# do not add this line to single user mode.
# boot to single user mode in order to install software. 
# または、/etc/grub.d/ にoverlayfs用のエントリを作成し、
# update-grubを実行して下さい。

case $1 in
prereqs)
    exit 0
    ;;
esac

#export overlay
for x in $(cat /proc/cmdline); do 
    case $x in 
    root=*)
        ROOTNAME=${x#root=}
        ;;
    overlay=*)
        overlay=${x#overlay=}
        case $overlay in
        tmpfs-debug)
            overlay=tmpfs
            overlaydebug=1
            ;;
        esac    
        ;;
    esac
done

if [ "$overlay" != "tmpfs" ]; then
    #not set in boot loader 
    #I'm not loved. good bye
    exit 0
fi

echo 
echo "       root-overlay:  Setting up overlay on ${rootmnt} as root file system "
echo 

modprobe -q --use-blacklist overlay
if [ $? -ne 0 ]; then
    echo    root-overlay error:      Failed to load overlay.ko
    exit 0
fi

#make the mount points on the init root file system
mkdir /overlay /rw /ro

# mount the temp file system and move real root out of the way
mount -t tmpfs tmpfs /rw

# リアルルート(/root)を/roへ移動する。
# (/rootには/dev/sda1などがマウントされているはず。)
mount --move ${rootmnt} /ro 
if [ $? -ne 0 ]; then
    echo    root-overlay error:    ${rootmnt}  failed to move to /ro
    exit 0
fi

# overlay向けにupperdirとworkdirに分ける。overlayではworkdirが必要。
mkdir /rw/rw
mkdir /rw/wk

# リアルルート(/ro)とtmpfs(/rw)を重ね、/overlayにマウントする。
mount -t overlay overlay -o lowerdir=/ro,upperdir=/rw/rw,workdir=/rw/wk /overlay
if [ $? -ne 0 ]; then
    echo    root-overlay error:      Failed to mount /overlay files system
    exit 0
fi

# test for mount points on overlay file system
[  -d /overlay/ro ] || mkdir /overlay/ro

# リアルルートが隠れないよう、/overlay/roに移動する。 
mount --move /ro /overlay/ro
if [ $? -ne 0 ]; then
    echo    root-overlay error:      Failed to move /ro /overlay/ro 
    exit 0
fi

#*********** fix fstab on tmpfs ******************
# test for /dev/sdx 
# this is not on the real file system.  This is created on the tmpfs each time the system boots.
# The init process will try to mount the root filesystem listed in fstab. / and swap must be removed.  
# the root file system must be mounted on /ro not on /

if [ "0$overlaydebug" -eq 1 ]; then
    echo  "   root-overlay debug:    Remove the root file system and swap from fstab "
    echo 
    echo 
    echo  "         ROOTNAME $ROOTNAME "
    echo  "         resume   $resume   "
    echo 
    echo  '     BlaYO pointed out that grep can be used to quickly remove '
    echo  '      the root file system from fstab. '
    echo 
    echo  '     Thank you BlaYO for the debug info.'
    echo

fi
# old code
# I'm sure that sed can do this in one step but I want to correct on the rootname  not matching the root in fstab.
#cat /overlay/ro/etc/fstab|sed -e s/$ROOTNAME/\#$ROOTNAME/ -e s/$resume/\#$resume/ >/overlay/etc/fstab  

# /etc/fstab_overlayをあらかじめ準備している場合は、そちらを利用する。
if [ -f /overlay/ro/etc/fstab_overlay ]; then
    cp -f /overlay/ro/etc/fstab_overlay /overlay/etc/fstab
else
    #Add the comment block to fstab
    cat <<EOF >/overlay/etc/fstab
#
#   Rootoverlay has mounted the root file system in ram
#
#  This fstab is in ram and the real fstab can be found /ro/etc/fstab
#  the root file system ' / ' has been removed.
#  All Swap files have been removed. 
#

EOF

    #remove root and swap from fstab
    cat /overlay/ro/etc/fstab|grep -v ' / ' | grep -v swap >>/overlay/etc/fstab  
    if [ $? -ne 0 ]; then
        echo    root-overlay error:      Failed to create /overlay/etc/fstab 
        #exit 0
    fi
fi

# add the read only file system to fstab
#ROOTTYPE=$(/lib/udev/vol_id -t ${ROOT})
ROOTTYPE=$(cat /proc/mounts|grep ${ROOT}|cut -d' ' -f3)
ROOTOPTIONS=$(cat /proc/mounts|grep ${ROOT}|cut -d' ' -f4)
echo ${ROOT} /ro $ROOTTYPE $ROOTOPTIONS 0 0 >>/overlay/etc/fstab

# S22mount on debian systems is not mounting  /ro correctly after boot
# add to rc.local to correct what you see from df
#replace last case of exit with #exit
cat /overlay/ro/etc/rc.local|sed 's/\(.*\)exit/\1\#exit/' >/overlay/etc/rc.local  
echo mount -f  /ro >>/overlay/etc/rc.local 

# add back the root file system. mtab seems to be created by one of the init proceses. 
# 不要と思われコメントアウトした。
#echo "echo overlay / overlay lowerdir=/ro,upperdir=/rw/rw,workdir=/rw/wk 0 0 >>/etc/mtab" >>/overlay/etc/rc.local
#echo "echo tmpfs /rw tmpfs rw 0 0 >>/etc/mtab" >>/overlay/etc/rc.local 
#echo exit 0 >>/overlay/etc/rc.local 

#  Copyright 2008 Joaqu&#237;n I. Bogado Garc&#237;a
#fix para apparmor, se desactiva y listo ( From the lethe project. )
[ -e /scripts/init-bottom/_apparmor ] && rm /scripts/init-bottom/_apparmor
[ -e /overlay/etc/init.d/apparmor ] && rm /overlay/etc/init.d/apparmor

# リマウントコマンドは不要なのでコメントアウトする。
#build remountrw
#echo \#!/bin/sh >/overlay/bin/remountrw
#echo mount -o remount,rw ${ROOT} >>/overlay/bin/remountrw
#chmod 0700 /overlay/bin/remountrw

#build remountro
#echo \#!/bin/sh >/overlay/bin/remountro
#echo mount -o remount,ro ${ROOT} >>/overlay/bin/remountro
#chmod 0700 /overlay/bin/remountro

# This should drop to a shell. (rewrite)
if [ "0$overlaydebug" -eq 1 ]; then
    echo
    echo "   root-overlay debug:    mount --move /overlay ${rootmnt} "
    echo 
    echo '   root-overlay debug:   init will stop here.   '
    echo  
    exit 0
fi

# overlayで重ねたユーザランドをリアルルート(/root)に戻しておく。
# (init最後のrun-initでリアルルートにchrootされるので/roや/rwは隠蔽される。)
mount --move /overlay ${rootmnt}

exit 0 

Ubuntu RAM-Linux その3:良いソリューションあるので、やる気喪失しかけた。

私のUbuntuホビーマシンは、/homeや/varを別HDDに入れており、これらをtmpfsにするには、どう料理したらいいか、調べていたら、根本的なソリューションがいろいろ出てきた。少し横道に逸れるが、記載しておく。

代替案
1. fsprotect … aufsが前提。これが一番簡単そう。別HDDにしているディレクトリは/etc/default/fsprotectで指定するだけ。下記ファイルしかインストールされないので、いくつか見てみると良いでしょう。
http://packages.ubuntu.com/yakkety/all/fsprotect/filelist
⇛ 試したが、/etc/default/fsprotectの内容が反映されない。残念。

2. bilibop … 未調査だが、こっちの方が新しいかも。但し、日本語情報無い。
http://manpages.ubuntu.com/manpages/trusty/man7/bilibop.7.html
→ インストールしようとしたが、何やらudevとか根こそぎ変更しそうなので、危険を感じて中断。

3. casper … 未調査。かつての主流?
→ 未着手。

4. aufs/overlayfs
ユーザランドがHDDひとつの構成なら、これで問題無さそう。
https://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash
→ やっぱこれかな。
別のHDDにしている/homeや/varは、/etc/fstabの記述だけで何とかなりそう。
全部fstabでやってしまう手もある。

5. device-mapper (thin-pool)を使う。
→ これが最メジャーな実装であろうと思われるが、応用が難しい。ちゃんと理解して進まないと、何か間違えそう。いつか、この方式で、やり切りたい。

ところで、CoW(Copy on Write)方式は、aufsがいまひとつで、Docker+aufsはもはや少数派らしい。じゃぁ、何が主流なんだ?
→ kernelに組み込まれているdevice mapperとoverlayfsが主流と思われる。