Windows10 Homeへのリモートデスクトップ接続

これをやっていいのは、有識者かつ個人の趣味レベル。さもなくば、いろいろな意味で危険なので、素直にWindows10 Proへアップグレードしましょう。Windows10 Proならば、Windows10 Home、Linuxスマホ等から比較的安全かつ安定的にリモートデスクトップ接続が可能です。


Windows10 Homeへリモートデスクトップ接続するには、rdpwrap潜在的Windowsの機能を呼び起こせば良いのだが、Windows Updateした後にアクセスできなくなることがよくある。こんなとき、google先生に普通に聞くと情報が多すぎるので、直近期間を指定して検索するか、またはgithub掲示板の英語をこまめに読む。

今回は下記投稿による救済がヒットした。rdpwrap.iniを更新するたけだが、中身は全く理解していない (^^;)
https://github.com/stascorp/rdpwrap/issues/763
https://github.com/stascorp/rdpwrap/files/3138022/rdpwrap_corrected_single_10.0.17763.437.zip

rdpwrap.iniが上書きできないときは、「Remote Desktop Services」を一旦停止してから上書きすると良い。

備考:
・この処置を実施する前にUltraVNCを使ってみたが、何かいまひとつという感じだった。
Ubuntuからのリモートデスクトップ接続には「remmina」を使用している。

Intel SoC FPGAのGSRDユーザランド構築

先に紹介したUbuntu Mate 18.04 踊るデスクトップ上で、Intel SoC FPGA用のユーザランドを構築するメモ。組込の開発ではたいていガイド通りにはいかないので、柔軟に対応していく必要がある。

総合ガイド

Wikihttps://rocketboards.org/foswiki/Documentation/GSRDCompilingLinux
参考:https://service.macnica.co.jp/library/126489

Ubuntu Mateの準備

踊るデスクトップ機能は封印。MATE Tweak => ウィンドウ => Marco (Adaptive compositor)
Wikiではホームにワークディレクトリを作っているが、仮想マシンを柔軟に使っていく私の流儀では/opt/alteraに100GB程度の仮想HDDをマウントし、そこに全てを入れる。つまり、ワークディレクトリは/opt/altera/angstrom-buildとなる。

開発に必要なパッケージ

Wikiでは「phablet-tools」も入れているが、repoコマンドかその依存物をあてにしたものであり、不要なはず。他にも不要なものはあるが、パッケージが存在しているものは入れておく。

sudo apt instlal sed wget cvs subversion git-core coreutils unzip texi2html  texinfo libsdl1.2-dev docbook-utils gawk python-pysqlite2 diffstat help2man  make gcc build-essential g++ desktop-file-utils chrpath libgl1-mesa-dev  libglu1-mesa-dev mercurial autoconf automake groff libtool xterm lib32z1 lib32ncurses5 lib32stdc++6 
ユーザランド構築

以下、ユーザ権限で操作している。Wikiから変えたところはコメントしている。

## ワークディレクトリを/opt/altera/angstrom-buildとする。
mkdir /opt/altera/angstrom-build
cd /opt/altera/angstrom-build
wget http://releases.rocketboards.org/release/2019.04/src/altera.xml
wget http://commondatastorage.googleapis.com/git-repo-downloads/repo
chmod 777 repo
export PATH=$PATH:/opt/altera/angstrom-build

## repo init -u git://github.com/Angstrom-distribution/angstrom-manifest -b angstrom-v2018.06-sumo
## git ls-remote git://github.com/Angstrom-distribution/angstrom-manifest で確認したところ、
## 「angstrom-v2018.12-thud」という新しいブランチがあったので、そちらを指定する。
repo init -u git://github.com/Angstrom-distribution/angstrom-manifest -b angstrom-v2018.12-thud

mkdir -p .repo/local_manifests
mv altera.xml .repo/local_manifests/
repo sync

MACHINE=cyclone5 . ./setup-environment  ## <= cyclone5に変更した。

sed -i '/meta-altera/a \ \ ${TOPDIR}\/layers\/meta-altera-refdes \\' conf/bblayers.conf # This is to add the meta-altera-refdes layer to conf/bblayers.conf
sed -i '/meta-atmel/d' conf/bblayers.conf # this has conflicting packages
sed -i '/meta-freescale/d' conf/bblayers.conf # this has conflicting packages
echo "DISTRO_FEATURES_remove = \" wayland \"" >> conf/local.conf # broke builds prior to this not needed for GSRD
echo "DISTRO_FEATURES_remove = \" alsa \"" >> conf/local.conf # breaking builds prior to this not needed for GSRD

## 下記ファイルはもはや元から存在しない
# rm layers/meta-altera-refdes/recipes-devtools/socfpga-test/socfpga-test_1.0.bb # developmental unit tests stub for older kernels

export KERNEL_PROVIDER=linux-altera-ltsi
export KERNEL_TAG=refs/tags/ACDS19.1_REL_GSRD_PR
export KBRANCH=socfpga-4.14.73-ltsi
export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE KBRANCH KERNEL_TAG UBOOT_TAG KERNEL_PROVIDER"

## meta-altera-refdes/recipes-alteraにある.bbファイルのメンテ不足でbitbakeができない。
## .bbファイル内で、「REFDES_BRANCH ?= "master"」などと、存在するbranch名を指定するか、
## もしくは、ベンチマーク用でおそらく不要なので削除する。以下では削除。
rm -rf /opt/altera/angstrom-build/layers/meta-altera-refdes/recipes-altera/*
  # [備考] もし削除したフィアルを復旧したければ、
  # pushd layers/meta-altera-refdes
  # git checkout .
  # popd

## ベーキング
bitbake gsrd-console-image 

あとはベーキング完了待ち。長いのは初回だけだが、気長に2時間〜約半日放置する。 待ち時間はホスト/ネットの環境次第。うまくいけば、
 deploy/glibc/images/cyclone5/
に各種イメージファイルが生成される。

Kernelの構築

bitbakeでKernelを作ることもできるが、新しいtoolchainを使ってKernelを構築する。理由:MicroSDイメージに含まれているKernelについては新しいtoolchainで構築されている。

###
###  toolchainを展開
###
mkdir /opt/altera/toolchain
cd /opt/altera/toolchain
wget https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz
tar axf gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz
## シンボリックリンクを作っておく。
ln -s gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf/bin

###
### Kernel構築
###
cd /opt/altera
git clone https://github.com/altera-opensource/linux-socfpga
cd linux-socfpga
git checkout socfpga-4.14.73-ltsi
vi Makefile
  ## 下記2行を冒頭付近に追加
  # ARCH = arm
  # CROSS_COMPILE = /opt/altera/toolchain/bin/arm-linux-gnueabihf-
make socfpga_defconfig   ## Cyclone5 SoC デバイス向けのconfig
make -j3 zImage    ## -j オプションはCPUスレッド数-1が目安


deb系Linux ユーザランドのダイエット/クリーニング

debLinuxユーザランドのダイエットとクリーニングを行うときのメモ。最近はあまり必要の無い作業ではあるが、組込系では必須に近い。なお、デブ系だからダイエットというわけではない。deb系とはDebianをベースにしたディストリビューションのことであり、DebianUbuntu、Mint、ラズパイ向けのRaspbianなどがある。

## 冗長なロケール情報を削除。
apt install localepurge
dpkg-reconfigure localepurge
apt clean
apt autoclean
apt autoremove

## ディレクトリを消去すると不都合が起きるケースがある。
## 例えば /var/cache/debconf。ここではファイルだけ消す。
find /var/cache -type f | xargs rm -rf
find /var/log -type f | xargs rm -rf

## アップデートファイル格納場所をクリア。
rm -rf /var/lib/apt/lists/*
rm -rf /var/lib/aptitude/*

##  クリーニング。以下、それぞれ、やっていいかはケースバイケース。
rm -rf /var/spool/cron/crontabs/*
rm -rf /var/spool/anacron/*
rm -rf /etc/udev/rules.d/* /etc/resolv.conf /etc/apt/apt.conf
rm -rf /usr/share/man
rm -rf $HOME/.*istory $HOME/.viminfo $HOME/.ssh/*

他にも、/etc 以下にシステム固有情報や個人情報があれば、リリース時には削除すべきだろう。

踊る3Dデスクトップ on VirtualBox with screenlets and cairo-dock

Compiz FusionデスクトップがVirtualBoxの仮想グラボで10分足らずでできてしまうとは、、、昔はこれをやるために、高めのNVIDIA製グラボを買い、いろいろソースを集めてビルドした。そして、鉛筆回しのフィーリングでキューブを回したり、時には火を灯したり、雨を降らしてワイパーしたりして気晴らししたものだ。

VirtualBox仮想グラボ上の3Dデスクトップはとても安定しており、かつスムーズだ。ただし、どこまでやるかにもよるとは思う。

実は、VirtualBoxでのデモ動画(著作権フリーミュージック付き)を作ってはみたものの、残念ながら、ここには画像しかアップできないことが判明した _| ̄|○ 仕方ないので、作成したデモ動画の一部を画像でアップする。

f:id:t0a9n9a4k:20190421211953p:plain

Compizの準備:
・ホストPCのスペックはCore i7/メモリ16GB以上であること。その上で、ゲストOSの仮想マシンにはCPU 4コア/メモリ8GB/ビデオメモリー128MBを割り当てれば、安定動作する。
・ホストOSはWindowsでもLinuxでもOKだが、SSD環境の方が快適に動く。
・ホストには、VirtualBoxの最新版をインストールすること。
・ゲストOSはUbuntu MATE(マテ茶)がやりやすいが、他のLinuxでも可能ではある。
・ゲストOSには「Guest Additions CD」をインストール済みであること。

・MATE Tweak => ウィンドウ => ウィンドウマネージャー => 「Compiz ・・・」を選択
・MATEの「ようこそ」画面でひっかかるケースがあるので右下のチェックを外し削除すること。
(また見たければ、メニュー=>システム管理=>「ようこそ」)

インストール:
apt install compizconfig-settings-manager
更に凝りたい人は、compiz-addon、cairo-dockを入れると良いと思う。

何か問題が起きてCompizを止めたいときは、
MATE Tweak => ウィンドウ => ウィンドウマネージャー => 「Compiz」以外を選択

参考:
有志の方が作成された3Dデスクトップのデモ例(VirtualBox上ではない)をいくつかリンクしておく。このデモ動画意外にも、いろいろと面白いことができる。
https://youtu.be/k43C6b2Ucgs
https://youtu.be/4QokOwvPxrE

レディースTシャツ

ジムで、背中に何か痛〜い視線を感じるときがあった。背中で何かを語っているつもりはなく、なにかあるなぁ〜、、、と思って気付いたのが、某人気ブランドのTシャツ。3年前、「メンズ」コーナのたたき売りで購入したはずだが、、、おそらくは「レディース」。背中の首元で何かを語っていたのは、ジムに通う人だれもが一着は持っている、あの新興ブランドのマーク!!


実は、3年前買った当初、自分でもうすうす気付き、うちの奥さんに確認したところ、「ノープロブレム!」とのことだったので、低頻度でたま〜に着ていた。が、最近、すっかりそのリスクを忘れ、細身のバランスが気に入っていたこともあり、高頻度で着用。

 

念のため、男がレディース着ていいか、google先生に聞いてみたら、意外にも肯定的な内容が数多くヒットした。少し勇気付けられたが、今後も着るかは、T.B.D.  *1

 

なお、その後の調査で、レディースTシャツであることが確定。... _| ̄|◯

 


*1:To Be Determined

ラズパイ:シャットダウンフリー tmpfs-bind編

もし、手の届かない離島に電源ブチ切りラズパイを置くなら、私ならばoverlayもfuseも使わない。理由は、デバイス屋/組込屋としての直感から来る警告だが、ここ に現実に沿ったコメントもある。
以下に紹介する方法は、X-Windowの利用が不要もしくは削除されているようなラズパイを、長期安定運用する場合などに適する。一方で、手に届く範囲の運用や趣味レベルならば、overlayfs方式を推奨する。overlayfs方式の方が起動は少し速い。なお、いずれも、ご利用は自己責任で。

前提1:tmpfsにコピーする領域は500MB未満で、なるべく小さくすること。そうできない場合には、overlayfs方式でとなる。
前提2:準備①〜③が完了していること。fuseとoverlayは不要。

~# mkdir /tmpfsroot
~# dosfslabel /dev/mmcblk0p1 boot
~# e2label /dev/mmcblk0p2 rootfs
~# mount -oremount,rw /boot
~# cp -a /boot/cmdline.txt /boot/cmdline_org.txt

/boot/cmdline.txt:

・・・・・ init=/sbin/myinit fastboot ro

~# mount -oremount,ro /boot


/etc/fstab_tmpfsroot:

# tmpfsroot用の/etc/fstab
# proc
proc          /proc    proc  defaults             0 0
# 軟弱なFAT領域はroマウント
LABEL=boot    /boot    vfat  ro,defaults          0 2
# rootfsはコメントアウト
#LABEL=rootfs  /        ext4  ro,defaults,noatime  0 1
# /tmpもroになるのでtmpfsにする
tmpfs         /tmp     tmpfs defaults             0 0


/sbin/myinit:

#!/bin/bash
## /tmpfsrootが存在すればtmpfsrootを構築する
if [ -d /tmpfsroot ] ; then
    ## tmpfsを作成
    mount -t tmpfs tmpfs /tmpfsroot
    ## 主要rwフォルダをtmpfsにコピーし、bindマウントで元位置に戻す。
    ## tmpfs容量(500MB)より小さくなるように調整すること。/varは別処置する。
    #for d in etc home root; do
    for d in etc root; do
        cp -a /${d} /tmpfsroot/
        mount -obind /tmpfsroot/${d} /${d}
    done
    ## /varは選択的に処置
    mkdir /tmpfsroot/var
    find /var/ -type d | cpio -pdm /tmpfsroot/
    find /var/ -type l | cpio -pdm /tmpfsroot/
    rm -rf /tmpfsroot/var/lib/*
    cp -a /var/lib/* /tmpfsroot/var/lib/
    mount -obind /tmpfsroot/var /var
    ## tmpfsroot用の/etc/fstabを設定。tmpfsroot化済みのため元ファイルは消えない。
    [ -e /etc/fstab_tmpfsroot ] && mv -f /etc/fstab_tmpfsroot /etc/fstab
    ## tmpfsroot用のログインロゴがあれば設定
    [ -e /etc/issue_tmpfsroot ] && mv -f /etc/issue_tmpfsroot /etc/issue
    [ -e /etc/motd_tmpfsroot  ] && mv -f /etc/motd_tmpfsroot  /etc/motd
fi
## Start Systemd
exec /sbin/init

~# chmod +x /sbin/myinit ← 忘れずに!


元の環境に戻す場合:
~# mount -oremount,rw /boot
~# cp -a /boot/cmdline.txt /boot/cmdline_tmpfsroot.txt
~# cp -a /boot/cmdline_org.txt /boot/cmdline.txt
~# mount -oremount,ro /boot
~# reboot


デコレーション(任意):

/etc/issue_tmpfsroot:

 ______    _______  _______  _______  _______  ___   _______  __    _
|    _ |  |   _   ||       ||       ||  _    ||   | |   _   ||  |  | |
|   | ||  |  |_|  ||  _____||    _  || |_|   ||   | |  |_|  ||   |_| |
|   |_||_ |       || |_____ |   |_| ||       ||   | |       ||       |
|    __  ||       ||_____  ||    ___||  _   | |   | |       ||  _    |
|   |  | ||   _   | _____| ||   |    | |_|   ||   | |   _   || | |   |
|___|  |_||__| |__||_______||___|    |_______||___| |__| |__||_|  |__|

SSH/Telnetログインでは見れない。

/etc/motd_tmpfsroot:

  ,--.                    ,---.                              ,--.
,-'  '-.,--,--,--. ,---. /  .-' ,---. ,--.--. ,---.  ,---. ,-'  '-.
'-.  .-'|        || .-. ||  `-,(  .-' |  .--'| .-. || .-. |'-.  .-'
  |  |  |  |  |  || '-' '|  .-'.-'  `)|  |   ' '-' '' '-' '  |  |
  `--'  `--`--`--'|  |-' `--'  `----' `--'    `---'  `---'   `--'
                  `--'

↑ 環境が分かりやすくなるので推奨。

Ubuntu Mate 18.04 でScreenlets

組込開発のLinuxホストをCentOS7からUbuntu Mate(マテ茶)18.04 LTSに徐々に移すことにした。理由はいろいろあるが、Ubuntuフレーバの中でも何にするか紆余曲折した。最後の決め手はデスクトップのカスタマイズがしやすく遊び心を満たしてくれること、マテ茶調のデザインが気に入ったこと、軽いこと、ラズパイ向けの対応もあるということだった。かつて夢中になったCompiz FusionでのキューブデスクトップとファイヤーもVirtualBoxかラズパイでいずれやるつもり。
Screenletsガジェットは個人的には必須のアイテム。ガジェットはセキュリティリスクが多分にあって全く推奨できず、標準パッケージはもはや存在しないが、閉塞的な開発PCや仮想マシンでの限定的な用途であれば問題無いであろう、たぶん。
以下、Screenletsの無理矢理インストールの手順メモである。何か抜けはあるかもしれない。

cd Downloads
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
cd ..

sudo apt install python-beautifulsoup python-cairo python-gtk2 libwnck22  libwnck-common python-gobject-2 python-tz python-dbus

wget http://launchpadlibrarian.net/328363369/python-wnck_2.32.0+dfsg-4_amd64.deb
wget http://launchpadlibrarian.net/328363368/python-rsvg_2.32.0+dfsg-4_amd64.deb

sudo dpkg -i python-*.deb

wget http://ftp.riken.jp/Linux/ubuntu/pool/universe/i/indiv-screenlets/screenlets-pack-basic_0.1.6-0ubuntu1_all.deb
sudo dpkg -i screenlets-*.deb

cd /usr/share/icons
sudo ln -s hicolor/scalable/apps/screenlets-tray.svg 
sudo ln -s hicolor/scalable/apps/screenlets.svg 

## 無理矢理インストールしたパッケージを名目上削除
sudo cp -a /usr/share/screenlets/screenlets-pack-basic /usr/local/src
sudo apt --fix-broken install -y  # ← screenlets-pack-basicが削除される
sudo mv /usr/local/src/screenlets-pack-basic  /usr/share/screenlets/

## 晴れて起動
cd
screenlets

## もし起動しなければ、下記の存在を確認し手当する。
[ -e /usr/lib/python2.7/dist-packages/screenlets ] || \
ln -s /usr/lib/python2.7/site-packages/screenlets /usr/lib/python2.7/dist-packages/screenlets


f:id:t0a9n9a4k:20190216215425p:plain

備考:上記デモ画面では、バックグランドでCPU負荷を入れている。


関連:CentOS7のXFCE4環境でScreenletsガジェット - Linux放浪紀Ⅲ