20190820のLinuxに関する記事は8件です。

SSH接続方法まとめ

概要

ちょくちょく聞かれる内容を記事として残しておきます

鍵の生成

$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/key-name -C "user-name@host-name"

コメントを削除したい場合は-C ""とすればよい

SSH接続

基本

$ ssh user-name@host-name 

よく使うオプション

  • -i 秘密鍵
  • -p ポート番号

configファイルを利用したSSH接続

configファイルを使う事で入力を簡略化する事が可能

configファイルの作成と権限の調整

$ touch ~/.ssh/config
$ chmod 600 ~/.ssh/config

設定例

Host ec2_test
  HostName xxx.xxx.xxx.xxx
  port 22
  User ec2-user
  IdentityFile ~/.ssh/aws-key

警告メッセージを出したくない場合は下記の設定を加えておくとよい

Host *
  StrictHostKeyChecking no
  UserKnownHostsFile=/dev/null

接続コマンド

configのHostで指定した値を使う事でコマンドの省略が可能

$ ssh ec2_test
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Slackware 向け日本語環境構築スクリプト群

 無 保 証 で す

当方執筆の技術情報に関するライセンス、免責事項、禁止事項
本記事記載スクリプト群の対応バージョン : Slackware 14.2 x86_64

用途・目的別 Slackware 系ディストリビューション紹介

Slackware らしさを受け継ぎつつ充実した日本語環境・ドキュメントを有する Linux が使いたい
Plamo Linux

GUI の各種管理ツールが付属するシンプル1 な Slackware 互換 Linux が使いたい2
Salix OS

インストール直後から快適に使えるようチューニングされ、TUI/GUI 向けに各種管理ツールが追加されたシンプル1 な Slackware 互換 Linux が使いたい3
Zenwalk

TUI/GUI 双方で動作するシンプルな統合システム管理ツールを有する Slackware 系 Linux が使いたい
VectorLinux

軽量かつキュートな Slackware 系 Linux が使いたい
Slacko Puppy Linux

軽さを追及したポータブル4 Slackware 系 Linux が使いたい
Porteus

ゆるい Linux が使いたい
Slackware Linux

こちらもどうぞ

Slackware 14.2 インストールの流れ/cgdisk による TUI パーティショニング/pkgtool によるシステムの再セットアップ

Slackware で SlackBuilds.org を利用する/SlackBuilds.org や公式リポジトリの更新通知を受けとる

デフォルトランレベル変更ツール

Slackware のデフォルトランレベルを対話的に変更する。

TUIによる対話的再設定スクリプト
https://gitlab.com/earthsimilarityindex/fluidagate-toolbox/blob/master/fa-defaultrunlevel
https://gitlab.com/earthsimilarityindex/fluidagate-toolbox/raw/master/fa-defaultrunlevel
ダウンロードしたスクリプトを /usr/local/sbin 等に置いて実行権限を付与。
使用時は root で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/fluidagate-toolbox/raw/master/fa-defaultrunlevel && chmod +x $(pwd)/fa-defaultrunlevel && su -l -c $(pwd)/fa-defaultrunlevel

スクリーンショット

VirtualBox_Slackware64_17_08_2019_17_44_24.png
VirtualBox_Slackware64_17_08_2019_17_45_59.png
VirtualBox_Slackware64_17_08_2019_17_46_30.png

コンソールのキーマップ再設定ツール

Linux コンソールのキーマップを対話的に再設定する。

TUIによる対話的再設定スクリプト
https://gitlab.com/earthsimilarityindex/fluidagate-toolbox/blob/master/fa-keyboardreconfig
https://gitlab.com/earthsimilarityindex/fluidagate-toolbox/raw/master/fa-keyboardreconfig
ダウンロードしたスクリプトを /usr/local/sbin 等に置いて実行権限を付与。
使用時は root で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/fluidagate-toolbox/raw/master/fa-keyboardreconfig && chmod +x $(pwd)/fa-keyboardreconfig && su -l -c $(pwd)/fa-keyboardreconfig

スクリーンショット

VirtualBox_Slackware64_20_08_2019_19_19_30.png
VirtualBox_Slackware64_20_08_2019_19_20_00.png
VirtualBox_Slackware64_20_08_2019_19_20_19.png
VirtualBox_Slackware64_20_08_2019_19_21_00.png

xwmconfig 用日本語環境ラッパー

ラッパーファイルを生成し、xwmconfig に日本語環境設定機能を加える。
切り替え可能なインプットメソッドフレームワークは SCIM, IBus, Fcitx, uim

TUIによる対話的再設定スクリプト
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/xwmconfiglocalize
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/xwmconfiglocalize
ダウンロードしたスクリプトを /usr/local/bin 等に置いて実行権限を付与。
使用時は一般ユーザー権限で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/xwmconfiglocalize && chmod +x $(pwd)/xwmconfiglocalize && $(pwd)/xwmconfiglocalize

スクリーンショット

VirtualBox_Slackware64_26_07_2019_17_38_04.png
VirtualBox_Slackware64_26_07_2019_17_43_02.png
VirtualBox_Slackware64_20_08_2019_18_16_24.png
VirtualBox_Slackware64_26_07_2019_17_40_26.png
VirtualBox_Slackware64_26_07_2019_17_40_39.png
VirtualBox_Slackware64_26_07_2019_17_40_56.png
VirtualBox_Slackware64_26_07_2019_17_41_06.png
VirtualBox_Slackware64_21_08_2019_16_11_26.png
VirtualBox_Slackware64_21_08_2019_16_11_51.png
VirtualBox_Slackware64_21_08_2019_16_12_19.png
VirtualBox_Slackware64_26_07_2019_17_41_39.png

SlackBuilds.org 向け各種フロントエンドの導入

sbopkg の導入

公式サイトから最新版をダウンロードしインストール。

2019/08/20時点
wget https://github.com/sbopkg/sbopkg/releases/download/0.38.1/sbopkg-0.38.1-noarch-1_wsr.tgz && su -l -c "upgradepkg $(pwd)/sbopkg-0.38.1-noarch-1_wsr.tgz" || su -l -c "installpkg $(pwd)/sbopkg-0.38.1-noarch-1_wsr.tgz"

sbotools 導入スクリプト

https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/blob/master/install_sbotools-2.7.sh
https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/raw/master/install_sbotools-2.7.sh
ダウンロードしたスクリプトを /usr/local/sbin 等に置いて実行権限を付与。
使用時は root で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/raw/master/install_sbotools-2.7.sh && chmod +x $(pwd)/install_sbotools-2.7.sh && su -l -c $(pwd)/install_sbotools-2.7.sh

sboui(通知機能無し版)導入スクリプト

https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/blob/master/install_sboui-2.0.1.sh
https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/raw/master/install_sboui-2.0.1.sh
ダウンロードしたスクリプトを /usr/local/sbin 等に置いて実行権限を付与。
使用時は root で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/raw/master/install_sboui-2.0.1.sh && chmod +x $(pwd)/install_sboui-2.0.1.sh && su -l -c $(pwd)/install_sboui-2.0.1.sh

日本語表示環境の整備

各種日本語フォント導入ツール

指定されたフォントをダウンロードし ~/.fonts 以下に配置しフォントキャッシュを更新する。

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/modify-jfonts
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/modify-jfonts
ダウンロードしたスクリプトを /usr/local/bin 等に置いて実行権限を付与。
使用時は一般ユーザー権限で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/modify-jfonts && chmod +x $(pwd)/modify-jfonts && $(pwd)/modify-jfonts

スクリーンショット

VirtualBox_Slackware64_19_08_2019_16_37_45.png
VirtualBox_Slackware64_19_08_2019_16_48_16.png

対応フォント
HackGen
IPA
Kochi-substitute
Migu
Monapo
M+
Noto CJK JP
Ricty Diminished
Sazanami
Ume
UmePlus
VL Gothic

serif, sans-serif, monospace のフォールバック先については /etc/fonts/conf.avail/65-nonlatin.conf に記載有り。

65-nonlatin.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <alias>
        <family>serif</family>
        <prefer>
            <family>Artsounk</family> <!-- armenian -->
            <family>BPG UTF8 M</family> <!-- georgian -->
            <family>Kinnari</family> <!-- thai -->
            <family>Norasi</family> <!-- thai -->
            <family>Frank Ruehl</family> <!-- hebrew -->
            <family>Dror</family>  <!-- hebrew -->
            <family>JG LaoTimes</family>  <!-- lao -->
            <family>Saysettha Unicode</family>  <!-- lao -->
            <family>Pigiarniq</family> <!-- canadian syllabics -->
            <family>B Davat</family> <!-- arabic (fa) -->
            <family>B Compset</family>  <!-- arabic (fa) -->
            <family>Kacst-Qr</family> <!-- arabic (ar) -->
            <family>Urdu Nastaliq Unicode</family> <!-- arabic (ur) -->
            <family>Raghindi</family> <!-- devanagari -->
            <family>Mukti Narrow</family> <!-- bengali -->
            <family>malayalam</family> <!-- malayalam -->
            <family>Sampige</family> <!-- kannada -->
            <family>padmaa</family> <!-- gujarati -->
            <family>Hapax Berbère</family> <!-- tifinagh -->
            <family>MS Mincho</family> <!-- han (ja) -->
            <family>SimSun</family> <!-- han (zh-cn,zh-tw) -->
            <family>PMingLiu</family> <!-- han (zh-tw) -->
            <family>WenQuanYi Zen Hei</family> <!-- han (zh-cn,zh-tw) -->
            <family>WenQuanYi Bitmap Song</family> <!-- han (zh-cn,zh-tw) -->
            <family>AR PL ShanHeiSun Uni</family> <!-- han (ja,zh-cn,zh-tw) -->
            <family>AR PL New Sung</family> <!-- han (zh-cn,zh-tw) -->
            <family>ZYSong18030</family> <!-- han (zh-cn,zh-tw) -->
            <family>HanyiSong</family> <!-- han (zh-cn,zh-tw) -->
            <family>MgOpen Canonica</family>
            <family>Sazanami Mincho</family>
            <family>IPAMonaMincho</family>
            <family>IPAMincho</family>
            <family>Kochi Mincho</family>
            <family>AR PL SungtiL GB</family>
            <family>AR PL Mingti2L Big5</family>
            <family>AR PL Zenkai Uni</family>
            <family>MS 明朝</family>
            <family>ZYSong18030</family>
            <family>NanumMyeongjo</family> <!-- hangul (ko) -->
            <family>UnBatang</family> <!-- hangul (ko) -->
            <family>Baekmuk Batang</family> <!-- hangul (ko) -->
            <family>KacstQura</family>
            <family>Frank Ruehl CLM</family>
            <family>Lohit Bengali</family>
            <family>Lohit Gujarati</family>
            <family>Lohit Hindi</family>
            <family>Lohit Marathi</family>
            <family>Lohit Maithili</family>
            <family>Lohit Kashmiri</family>
            <family>Lohit Konkani</family>
            <family>Lohit Nepali</family>
            <family>Lohit Sindhi</family>
            <family>Lohit Punjabi</family>
            <family>Lohit Tamil</family>
            <family>Meera</family>
            <family>Lohit Malayalam</family>
            <family>Lohit Kannada</family>
            <family>Lohit Telugu</family>
            <family>Lohit Oriya</family>
            <family>LKLUG</family>
        </prefer>
    </alias>
    <alias>
        <family>sans-serif</family>
        <prefer>
            <family>Nachlieli</family> <!-- hebrew -->
            <family>Lucida Sans Unicode</family>
            <family>Yudit Unicode</family>
            <family>Kerkis</family> <!-- greek -->
            <family>ArmNet Helvetica</family> <!-- armenian -->
            <family>Artsounk</family> <!-- armenian -->
            <family>BPG UTF8 M</family> <!-- georgian -->
            <family>Waree</family> <!-- thai -->
            <family>Loma</family> <!-- thai -->
            <family>Garuda</family> <!-- thai -->
            <family>Umpush</family> <!-- thai -->
            <family>Saysettha Unicode</family> <!-- lao? -->
            <family>JG Lao Old Arial</family> <!-- lao -->
            <family>GF Zemen Unicode</family> <!-- ethiopic -->
            <family>Pigiarniq</family> <!-- canadian syllabics -->
            <family>B Davat</family> <!-- arabic (fa) -->
            <family>B Compset</family> <!-- arabic (fa) -->
            <family>Kacst-Qr</family> <!-- arabic (ar) -->
            <family>Urdu Nastaliq Unicode</family> <!-- arabic (ur) -->
            <family>Raghindi</family> <!-- devanagari -->
            <family>Mukti Narrow</family> <!-- bengali -->
            <family>malayalam</family> <!-- malayalam -->
            <family>Sampige</family> <!-- kannada -->
            <family>padmaa</family> <!-- gujarati -->
            <family>Hapax Berbère</family> <!-- tifinagh -->
            <family>MS Gothic</family> <!-- han (ja) -->
            <family>UmePlus P Gothic</family> <!-- han (ja) -->
            <!-- chinese fonts are actually serifed -->
            <family>SimSun</family> <!-- han (zh-cn,zh-tw) -->
            <family>PMingLiu</family> <!-- han (zh-tw) -->
            <family>WenQuanYi Zen Hei</family> <!-- han (zh-cn,zh-tw) -->
            <family>WenQuanYi Bitmap Song</family> <!-- han (zh-cn,zh-tw) -->
            <family>AR PL ShanHeiSun Uni</family> <!--han (ja,zh-cn,zh-tw) -->
            <family>AR PL New Sung</family> <!-- han (zh-cn,zh-tw) -->
            <family>MgOpen Modata</family>
            <family>VL Gothic</family>
            <family>IPAMonaGothic</family>
            <family>IPAGothic</family>
            <family>Sazanami Gothic</family>
            <family>Kochi Gothic</family>
            <family>AR PL KaitiM GB</family>
            <family>AR PL KaitiM Big5</family>
            <family>AR PL ShanHeiSun Uni</family>
            <family>AR PL SungtiL GB</family>
            <family>AR PL Mingti2L Big5</family>
            <family>MS ゴシック</family>
            <family>ZYSong18030</family> <!-- han (zh-cn,zh-tw) -->
            <family>TSCu_Paranar</family> <!-- tamil -->
            <family>NanumGothic</family> <!-- hangul (ko) -->
            <family>UnDotum</family> <!-- hangul (ko) -->
            <family>Baekmuk Dotum</family> <!-- hangul (ko) -->
            <family>Baekmuk Gulim</family> <!-- hangul (ko) -->
            <family>KacstQura</family>
            <family>Lohit Bengali</family>
            <family>Lohit Gujarati</family>
            <family>Lohit Hindi</family>
            <family>Lohit Marathi</family>
            <family>Lohit Maithili</family>
            <family>Lohit Kashmiri</family>
            <family>Lohit Konkani</family>
            <family>Lohit Nepali</family>
            <family>Lohit Sindhi</family>
            <family>Lohit Punjabi</family>
            <family>Lohit Tamil</family>
            <family>Meera</family>
            <family>Lohit Malayalam</family>
            <family>Lohit Kannada</family>
            <family>Lohit Telugu</family>
            <family>Lohit Oriya</family>
            <family>LKLUG</family>
        </prefer>
    </alias>
    <alias>
        <family>monospace</family>
        <prefer>
            <family>Miriam Mono</family> <!-- hebrew -->
            <family>VL Gothic</family>
            <family>IPAMonaGothic</family>
            <family>IPAGothic</family>
            <family>Sazanami Gothic</family>
            <family>Kochi Gothic</family>
            <family>AR PL KaitiM GB</family>
            <family>MS Gothic</family> <!-- han (ja) -->
            <family>UmePlus Gothic</family> <!-- han (ja) -->
            <family>NSimSun</family> <!-- han (zh-cn,zh-tw) -->
            <family>MingLiu</family> <!-- han (zh-tw) -->
            <family>AR PL ShanHeiSun Uni</family> <!-- han (ja,zh-cn,zh-tw) -->
            <family>AR PL New Sung Mono</family> <!-- han (zh-cn,zh-tw) -->
            <family>HanyiSong</family> <!-- han (zh-cn) -->
            <family>AR PL SungtiL GB</family>
            <family>AR PL Mingti2L Big5</family>
            <family>ZYSong18030</family> <!-- han (zh-cn,zh-tw) -->
            <family>NanumGothicCoding</family> <!-- hangul (ko) -->
            <family>NanumGothic</family> <!-- hangul (ko) -->
            <family>UnDotum</family> <!-- hangul (ko) -->
            <family>Baekmuk Dotum</family> <!-- hangul (ko) -->
            <family>Baekmuk Gulim</family> <!-- hangul (ko) -->
            <family>TlwgTypo</family> <!-- thai -->
            <family>TlwgTypist</family> <!-- thai -->
            <family>TlwgTypewriter</family> <!-- thai -->
            <family>TlwgMono</family> <!-- thai -->
            <family>Hasida</family> <!-- hebrew -->
            <family>Mitra Mono</family> <!-- bengali -->
            <family>GF Zemen Unicode</family> <!-- ethiopic -->
            <family>Hapax Berbère</family> <!-- tifinagh -->
            <family>Lohit Bengali</family>
            <family>Lohit Gujarati</family>
            <family>Lohit Hindi</family>
            <family>Lohit Marathi</family>
            <family>Lohit Maithili</family>
            <family>Lohit Kashmiri</family>
            <family>Lohit Konkani</family>
            <family>Lohit Nepali</family>
            <family>Lohit Sindhi</family>
            <family>Lohit Punjabi</family>
            <family>Lohit Tamil</family>
            <family>Meera</family>
            <family>Lohit Malayalam</family>
            <family>Lohit Kannada</family>
            <family>Lohit Telugu</family>
            <family>Lohit Oriya</family>
            <family>LKLUG</family>
        </prefer>
    </alias>
</fontconfig>

FontForgeRicty 導入スクリプト

FontForge 導入スクリプト

https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/blob/master/install_fontforge-20190317.sh
https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/raw/master/install_fontforge-20190317.sh
ダウンロードしたスクリプトを /usr/local/sbin 等に置いて実行権限を付与。
使用時は root で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/raw/master/install_fontforge-20190317.sh && chmod +x $(pwd)/install_fontforge-20190317.sh && su -l -c $(pwd)/install_fontforge-20190317.sh

Ricty 導入スクリプト

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_fonts-ttf-ricty-4.1.1.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_fonts-ttf-ricty-4.1.1.sh
ダウンロードしたスクリプトを /usr/local/bin 等に置いて実行権限を付与。
使用時は一般ユーザー権限で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_fonts-ttf-ricty-4.1.1.sh && chmod +x $(pwd)/install_fonts-ttf-ricty-4.1.1.sh && $(pwd)/install_fonts-ttf-ricty-4.1.1.sh

lv 導入スクリプト

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_lv-4.51-7.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_lv-4.51-7.sh
ダウンロードしたスクリプトを /usr/local/sbin 等に置いて実行権限を付与。
使用時は root で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_lv-4.51-7.sh && chmod +x $(pwd)/install_lv-4.51-7.sh && su -l -c $(pwd)/install_lv-4.51-7.sh

nkf の導入

SlackBuilds.org から導入可能。

導入例(sbotools利用時)
su -l -c "/usr/sbin/sboinstall nkf"

sl の導入

SlackBuilds.org から導入可能。

導入例(sbotools利用時)
su -l -c "/usr/sbin/sboinstall sl"

manpage の日本語表示の適正化スクリプト

/etc/man.conf を編集することで /usr/man/ja 以下のマニュアルアーカイブに対して読み込み時に nkf を用いた UTF-8 への文字コード自動変換を行う「しかけ」を追加する。

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/modify_etc_manconf_for_Japanese_Environment.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/modify_etc_manconf_for_Japanese_Environment.sh
ダウンロードしたスクリプトを /usr/local/sbin 等に置いて実行権限を付与。
使用時は root で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/modify_etc_manconf_for_Japanese_Environment.sh && chmod +x $(pwd)/modify_etc_manconf_for_Japanese_Environment.sh && su -l -c $(pwd)/modify_etc_manconf_for_Japanese_Environment.sh

迷子の manpage について

/usr/man/jp/ や /usr/man/ja.UTF-8/ 以下に参照されない日本語 manpage が存在する場合、/usr/man/ja/ 以下の適切な場所にシンボリックリンクを作成すると良い。

例1( cd-paranoia.1.gz cdparanoia.1.gz lha.1.gz )
su -l -c "ln -s /usr/man/jp/man1/* /usr/man/ja/man1/"
例2( sl.1.ja.gz )
su -l -c "ln -s /usr/man/ja.UTF-8/man1/* /usr/man/ja/man1/"

日本語 manpage の導入

JM Project から最新のマニュアルアーカイブを入手し導入。
Slackware のマニュアルアーカイブのディレクトリ配置は /usr/share/man ではなく /usr/man である点に注意。

スクリーンショット

VirtualBox_Slackware64_20_08_2019_09_30_33.png

日本語マニュアルアーカイブをインストールしたにも関わらず読み込まれない場合、環境変数 LANG の値と日本語マニュアルアーカイブのインストール先のフォルダ名(ja_JP.utf8 や ja_JP.UTF-8 など)を一致させることで表示可能だった。

日本語マニュアルアーカイブのダウンロード

https://linuxjm.osdn.jp/download.html

アーカイブの README ファイル

https://linuxjm.osdn.jp/README.html

アーカイブの INSTALL ファイル

https://linuxjm.osdn.jp/INSTALL.html

日本語入力環境の構築

G-HAL さん Patch 適用済み Anthy 9100h 導入スクリプト

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_Anthy-9100h-G-HAL-patch13-release-2019406.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_Anthy-9100h-G-HAL-patch13-release-2019406.sh
ダウンロードしたスクリプトを /usr/local/sbin 等に置いて実行権限を付与。
使用時は root で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_Anthy-9100h-G-HAL-patch13-release-2019406.sh && chmod +x $(pwd)/install_Anthy-9100h-G-HAL-patch13-release-2019406.sh && su -l -c $(pwd)/install_Anthy-9100h-G-HAL-patch13-release-2019406.sh

SKK 辞書(SKK-JISYO.L)導入スクリプト

/usr/share/skk/ に SKK-JISYO.L をインストールする。

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_skk-jisyo.l.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_skk-jisyo.l.sh
ダウンロードしたスクリプトを /usr/local/sbin 等に置いて実行権限を付与。
使用時は root で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_skk-jisyo.l.sh && chmod +x $(pwd)/install_skk-jisyo.l.sh && su -l -c $(pwd)/install_skk-jisyo.l.sh

ibus の導入

SlackBuilds.org から導入可能。

導入例(sbotools利用時)
su -l -c "/usr/sbin/sboinstall ibus"

ibus-fep 導入スクリプト

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_ibus-fep-1.4.4.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_ibus-fep-1.4.4.sh
ダウンロードしたスクリプトを /usr/local/sbin 等に置いて実行権限を付与。
使用時は root で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_ibus-fep-1.4.4.sh && chmod +x $(pwd)/install_ibus-fep-1.4.4.sh && su -l -c $(pwd)/install_ibus-fep-1.4.4.sh

ibus-qt の導入

SlackBuilds.org から導入可能。
ibus と Qt アプリの連携に。

導入例(sbotools利用時)
su -l -c "/usr/sbin/sboinstall ibus-qt"

ibus-anthy の導入

SlackBuilds.org から導入可能。

導入例(sbotools利用時)
su -l -c "/usr/sbin/sboinstall ibus-anthy"

ibus-skk の導入

SlackBuilds.org から導入可能。

導入例(sbotools利用時)
su -l -c "/usr/sbin/sboinstall ibus-skk"

ibus-mozc の導入

fcitx-mozc の SlackBuild スクリプトを書き換え構築する。

fcitx の導入

SlackBuilds.org から導入可能。

導入例(sbotools利用時)
su -l -c "/usr/sbin/sboinstall fcitx"

fcitx-configtool

SlackBuilds.org から導入可能。
GUI の fcitx 設定ツール。

導入例(sbotools利用時)
su -l -c "/usr/sbin/sboinstall fcitx-configtool"

fcitx-anthy 導入スクリプト

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_fcitx-anthy-0.2.3.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_fcitx-anthy-0.2.3.sh
ダウンロードしたスクリプトを /usr/local/sbin 等に置いて実行権限を付与。
使用時は root で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_fcitx-anthy-0.2.3.sh && chmod +x $(pwd)/install_fcitx-anthy-0.2.3.sh && su -l -c $(pwd)/install_fcitx-anthy-0.2.3.sh

fcitx-skk 導入スクリプト

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_fcitx-skk-0.1.3.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_fcitx-skk-0.1.3.sh
ダウンロードしたスクリプトを /usr/local/sbin 等に置いて実行権限を付与。
使用時は root で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_fcitx-skk-0.1.3.sh && chmod +x $(pwd)/install_fcitx-skk-0.1.3.sh && su -l -c $(pwd)/install_fcitx-skk-0.1.3.sh

fcitx-mozc の導入

SlackBuilds.org から導入可能。

導入例(sbotools利用時)
su -l -c "/usr/sbin/sboinstall fcitx-mozc"

uim 導入スクリプト

クリーンインストール直後のシステムにおいて uim のソースのみでビルド出来ることをビルドオプション選択の目安としました。

Configure Result :
Configure Result :

   Anthy           : yes
   Anthy (UTF-8)   : yes
   Canna           : no
   Mana            : no
   PRIME           : no
   SJ3             : no
   SKK             : yes
   Wnn             : no
   m17n-lib        : yes
   cURL            : yes
   expat           : yes
   OpenSSL         : yes
   SQLite3         : yes
   ffi             : yes
   GTK+2           : yes
   GNOME2 Applet   : no
   GTK+3           : yes
   GNOME3 Applet   : no
   Qt3             : no
   Qt3 immodule    : no
   Qt4             : yes
   Qt4 immodule    : yes
   Qt4 Qt3Support  : yes
   Qt5             : no
   Qt5 immodule    : no
   KDE3 Applet     : no
   KDE4 Applet     : yes
   FEP             : yes
   Emacs           : yes
   XIM             : yes
   Pref            : yes
   DICT            : yes
   EB              : no
   OSX dictionary  : no
   libedit         : no
   notify          : stderr libnotify knotify4 
   Default toolkit : gtk

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_uim-1.8.8.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_uim-1.8.8.sh
ダウンロードしたスクリプトを /usr/local/sbin 等に置いて実行権限を付与。
使用時は root で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_uim-1.8.8.sh && chmod +x $(pwd)/install_uim-1.8.8.sh && su -l -c $(pwd)/install_uim-1.8.8.sh

uim-mozc の導入

macuim に含まれる uim-mozc を slackware 向けにリビルドする。
https://code.google.com/archive/p/macuim/
https://github.com/e-kato/macuim/
Uim を使って日本語を入力 - ArchWiki

フレームバッファ及び KMS/DRM コンソールにおける日本語の表示と入力

Kernel Mode Setting (KMS) — The Linux Kernel documentation
https://www.kernel.org/doc/html/latest/gpu/drm-kms.html

Kernel Mode Setting - ArchWiki
https://wiki.archlinux.jp/index.php/Kernel_Mode_Setting

Frame Buffer — The Linux Kernel documentation
https://www.kernel.org/doc/html/latest/fb/

JF: Linux Kernel 2.6 Documentation: framebuffer.txt
http://archive.linux.or.jp/JF/JFdocs/kernel-docs-2.6/fb/framebuffer.txt.html

※ 非 X 環境、Linux コンソール上では半角/全角キーや変換キー、無変換キー等がインプットメソッドの ON/OFF に使えないかもしれません。その場合は Ctrl+Space などの無難なキーの組み合わせをインプットメソッドの ON/OFF や、かな漢字変換の ON/OFF に割り当てておくと良いでしょう。

kmscon の導入

SlackBuilds.org から導入可能。
kmscon ではマウスカーソルは使えないようである。

導入例(sbotools利用時)
su -l -c "/usr/sbin/sboinstall kmscon"

/etc/inittab で呼び出す

https://linuxjm.osdn.jp/html/SysVinit/man5/inittab.5.html
https://www.atmarkit.co.jp/ait/articles/0204/02/news002.html

以下は /bin/login の代わりに /sbin/agetty を使い、tty6 で kmscon を動かす場合の設定例。

/etc/kmscon/kmscon.conf#login=/sbin/agetty 38400 -- - linux をアンコメントし、/etc/inittabc6:12345:respawn:/sbin/agetty 38400 tty6 linuxc6:12345:respawn:/usr/bin/kmscon と変更する。

/etc/kmscon/kmscon.conf
/etc/kmscon/kmscon.conf
# Config file for kmscon.
# Any long option listed in "man kmscon" can be used here.

# As shipped, all the options in this file are commented out.

# Use agetty for logging in.
# By default, kmscon spawns "/bin/login -p", which works fine but
# isn't as nice (or as familiar) as using agetty.
# If you plan to spawn kmscon from /etc/inittab, you probably want to
# uncomment this.

login=/sbin/agetty 38400 -- - linux


# Enable DRM 2D acceleration. 3D accel won't work unless you have
# GL/ES support (which Slackware doesn't ship with, and isn't available
# on SBo either).

drm


# Font size, in points (not pixels). Don't set too large, you want
# at least 80x25 character cells. 'echo $COLUMNS $LINES' should show
# at least 80 columns and 25 lines.

#font-size=15


# Enable shortcut keys for multiple sessions on the same
# virtual terminal.

#session-control


# Keyboard repeat delay is in milliseconds. Repeat rate is *also* in
# milliseconds (unlike "xset r", which uses repeats-per-second).

#xkb-repeat-delay=200
#xkb-repeat-rate=12


# Keyboard Layout, Variant, Options
xkb-layout=jp
xkb-variant=OADG109A

/etc/inittab
/etc/inittab
#
# inittab   This file describes how the INIT process should set up
#       the system in a certain run-level.
#
# Version:  @(#)inittab     2.04    17/05/93    MvS
#                                       2.10    02/10/95        PV
#                                       3.00    02/06/1999      PV
#                                       4.00    04/10/2002      PV
#                                      13.37    2011-03-25      PJV
#
# Author:   Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
# Modified by:  Patrick J. Volkerding, <volkerdi@slackware.com>
#

# These are the default runlevels in Slackware:
#   0 = halt
#   1 = single user mode
#   2 = unused (but configured the same as runlevel 3)
#   3 = multiuser mode (default Slackware runlevel)
#   4 = X11 with KDM/GDM/XDM (session managers)
#   5 = unused (but configured the same as runlevel 3)
#   6 = reboot

# Default runlevel. (Do not set to 0 or 6)
id:3:initdefault:

# System initialization (runs when system boots).
si:S:sysinit:/etc/rc.d/rc.S

# Script to run when going single user (runlevel 1).
su:1S:wait:/etc/rc.d/rc.K

# Script to run when going multi user.
rc:2345:wait:/etc/rc.d/rc.M

# What to do at the "Three Finger Salute".
ca::ctrlaltdel:/sbin/shutdown -t5 -r now

# Runlevel 0 halts the system.
l0:0:wait:/etc/rc.d/rc.0

# Runlevel 6 reboots the system.
l6:6:wait:/etc/rc.d/rc.6

# What to do when power fails.
pf::powerfail:/sbin/genpowerfail start

# If power is back, cancel the running shutdown.
pg::powerokwait:/sbin/genpowerfail stop

# These are the standard console login getties in multiuser mode:
c1:12345:respawn:/sbin/agetty --noclear 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
#c6:12345:respawn:/sbin/agetty 38400 tty6 linux
c6:12345:respawn:/usr/bin/kmscon

# Local serial lines:
#s1:12345:respawn:/sbin/agetty -L ttyS0 9600 vt100
#s2:12345:respawn:/sbin/agetty -L ttyS1 9600 vt100

# Dialup lines:
#d1:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS0 vt100
#d2:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS1 vt100

# Runlevel 4 also starts /etc/rc.d/rc.4 to run a display manager for X.
# Display managers are preferred in this order:  gdm, kdm, xdm
x1:4:respawn:/etc/rc.d/rc.4

# End of /etc/inittab

/etc/rc.d/rc.4 から呼び出す

以下はグラフィカルログインマネージャを kmscon で乗っ取る場合の設定例。/etc/inittab でデフォルトランレベルを 4 に設定し、/etc/rc.d/rc.4 を編集してログインマネージャの代わりに kmscon が起動するよう変更する。

具体的には、/etc/inittabid:3:initdefault:id:4:initdefault: とし、/etc/rc.d/rc.4 の gdm の呼び出し行の上に kmscon の呼び出し行を書く。

/etc/inittab
/etc/inittab
#
# inittab   This file describes how the INIT process should set up
#       the system in a certain run-level.
#
# Version:  @(#)inittab     2.04    17/05/93    MvS
#                                       2.10    02/10/95        PV
#                                       3.00    02/06/1999      PV
#                                       4.00    04/10/2002      PV
#                                      13.37    2011-03-25      PJV
#
# Author:   Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
# Modified by:  Patrick J. Volkerding, <volkerdi@slackware.com>
#

# These are the default runlevels in Slackware:
#   0 = halt
#   1 = single user mode
#   2 = unused (but configured the same as runlevel 3)
#   3 = multiuser mode (default Slackware runlevel)
#   4 = X11 with KDM/GDM/XDM (session managers)
#   5 = unused (but configured the same as runlevel 3)
#   6 = reboot

# Default runlevel. (Do not set to 0 or 6)
id:4:initdefault:

# System initialization (runs when system boots).
si:S:sysinit:/etc/rc.d/rc.S

# Script to run when going single user (runlevel 1).
su:1S:wait:/etc/rc.d/rc.K

# Script to run when going multi user.
rc:2345:wait:/etc/rc.d/rc.M

# What to do at the "Three Finger Salute".
ca::ctrlaltdel:/sbin/shutdown -t5 -r now

# Runlevel 0 halts the system.
l0:0:wait:/etc/rc.d/rc.0

# Runlevel 6 reboots the system.
l6:6:wait:/etc/rc.d/rc.6

# What to do when power fails.
pf::powerfail:/sbin/genpowerfail start

# If power is back, cancel the running shutdown.
pg::powerokwait:/sbin/genpowerfail stop

# These are the standard console login getties in multiuser mode:
c1:12345:respawn:/sbin/agetty --noclear 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux

# Local serial lines:
#s1:12345:respawn:/sbin/agetty -L ttyS0 9600 vt100
#s2:12345:respawn:/sbin/agetty -L ttyS1 9600 vt100

# Dialup lines:
#d1:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS0 vt100
#d2:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS1 vt100

# Runlevel 4 also starts /etc/rc.d/rc.4 to run a display manager for X.
# Display managers are preferred in this order:  gdm, kdm, xdm
x1:4:respawn:/etc/rc.d/rc.4

# End of /etc/inittab

/etc/rc.d/rc.4
/etc/rc.d/rc.4
#! /bin/sh
#
# rc.4      This file is executed by init(8) when the system is being
#       initialized for run level 4 (XDM)
#
# Version:  @(#)/etc/rc.d/rc.4  2.00    02/17/93
#
# Author:   Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
# At least 47% rewritten by:  Patrick J. Volkerding <volkerdi@slackware.com>
#

# Tell the viewers what's going to happen...
echo "Starting up X11 session manager..."

# KMSCON
if [ -x /usr/bin/kmscon ]; then
  exec /usr/bin/kmscon
fi

# Try to use GNOME's gdm session manager.  This comes first because if
# gdm is on the machine then the user probably installed it and wants
# to use it by default:
if [ -x /usr/bin/gdm ]; then
  exec /usr/bin/gdm -nodaemon
fi

# Someone thought that gdm looked prettier in /usr/sbin,
# so look there, too:
if [ -x /usr/sbin/gdm ]; then
  exec /usr/sbin/gdm -nodaemon
fi

# Not there?  OK, try to use KDE's kdm session manager:
if [ -x /opt/kde/bin/kdm ]; then
  exec /opt/kde/bin/kdm -nodaemon
elif [ -x /usr/bin/kdm ]; then
  exec /usr/bin/kdm -nodaemon
fi

# Look for SDDM as well:
if [ -x /usr/bin/sddm ]; then
  exec /usr/bin/sddm
fi

# If all you have is XDM, I guess it will have to do:
if [ -x /usr/bin/xdm ]; then
  exec /usr/bin/xdm -nodaemon
elif [ -x /usr/X11R6/bin/xdm ]; then
  exec /usr/X11R6/bin/xdm -nodaemon
fi

# error
echo
echo "Hey, you don't have KDM, GDM, or XDM.  Can't use runlevel 4 without"
echo "one of those installed."
sleep 30

# All done.

キーボードレイアウトを適正化する

/etc/kmscon/kmscon.conf に、
日本語 106/109 キーボードなら例えば
xkb-layout=jp
と指定する。variant や options も指定可能 5 。詳しくは kmscon の manpage を閲覧のこと。

また、環境変数 COLORTERM=kmscon が設定されるので、.profile 等の記述を工夫することで kmscon 下では ja_JP.UTF-8 、Linux コンソールでは en_US.UTF-8 といった切り替えを自動化出来る。

kmscon 用キーボードレイアウト設定ツール

kmsconconfig と命名したものの、現在キーボードレイアウト編集設定機能のみ搭載。/etc/kmscon/kmscon.conf を編集しキーボードレイアウト・ヴァリアント6・オプションを選択・設定する。

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/kmsconconfig
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/kmsconconfig
ダウンロードしたスクリプトを /usr/local/sbin 等に置いて実行権限を付与。
使用時は root で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/kmsconconfig && chmod +x $(pwd)/kmsconconfig && su -l -c $(pwd)/kmsconconfig

kmscon における日本語入力

いずれかのFEPが必要。

ibus-fep を使う場合

ibus-daemon が稼働中、かつ適切なインプットメソッドエンジンが選択されている必要がある。

例:
$ ibus-daemon -dr
$ ibus engine anthy
$ ibus-fep

uim-fep を使う場合

kmscon 上では uim-fep のみを起動すると描画が乱れるが、screen や tmux もしくは byobu 上で実行することにより、描画を崩壊させることなく日本語入力を行えた。

上記以外の日本語入力

vim や emacs 等独自の日本語入力フレームワークを持つものを日本語入力時に使用する。

mlterm のフレームバッファ仕様(mlterm-fb)の導入

日本語入力への対応が簡単。
libsixel により画像データも表示可能。
・マウスポインタもサポート 7
・GNU Screen や tmux 、あるいはタイル型ウィンドウマネージャのような感覚でスクリーンを分割可能。
・オプションを渡せば縦書き表示にも対応。
・現在も活発に開発が続いている。

このように良いこと尽くめであるが、フレームバッファ仕様でビルドした mlterm( mlterm-fb )は動作がやや鈍いと感じた。また、mlterm-fb は X 上では動作しない。

なお、ビルド後に make install ではなく、 make install-fb としてやることで、通常版 mlterm 導入済みの環境で mlterm-fb を共存させられる。

libsixel の導入

SlackBuilds.org から導入可能。
mlterm 構築前にあらかじめこちらを導入しておくことで SixelGraphics 対応版を生成出来る。

導入例(sbotools利用時)
su -l -c "/usr/sbin/sboinstall libsixel"

mlterm の導入

SlackBuilds.org から導入可能。
非 X 環境で日本語入力を行いたい場合は先に各種 Input Method を導入しておくこと。

導入例(sbotools利用時)
su -l -c "/usr/sbin/sboinstall mlterm"

mlterm-fb 導入スクリプト

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_mlterm-fb-3.8.8.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_mlterm-fb-3.8.8.sh
ダウンロードしたスクリプトを /usr/local/sbin 等に置いて実行権限を付与。
使用時は root で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_mlterm-fb-3.8.8.sh && chmod +x $(pwd)/install_mlterm-fb-3.8.8.sh && su -l -c $(pwd)/install_mlterm-fb-3.8.8.sh

mlterm-sdl2 導入スクリプト

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_mlterm-sdl2-3.8.8.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_mlterm-sdl2-3.8.8.sh
ダウンロードしたスクリプトを /usr/local/sbin 等に置いて実行権限を付与。
使用時は root で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_mlterm-sdl2-3.8.8.sh && chmod +x $(pwd)/install_mlterm-sdl2-3.8.8.sh && su -l -c $(pwd)/install_mlterm-sdl2-3.8.8.sh

Linux コンソールから起動する場合、mlterm-fb に比べ少し動作が軽いように思う。また、GPMをOFFにする必要がない。ただし非 X 環境で用いる際は、chmod g-s /usr/bin/mlterm-sdl2 した上でユーザーを input グループに加えておく必要があった。前述の対処を行わない場合、SDL2 の仕様により非 X 環境ではキーボード及びマウスからの入力が全て取り上げられ操作不能におちいるので注意すること。

chmod g-s /usr/bin/mlterm-sdl2 の後に chown root:root して chmod u+s /usr/bin/mlterm-sdl2SUID しておけば utmp/wtmp 関連の動作は root:utmp で SGID な状態と同じになると思われる。

参考とした文献

mlterm(Multi Lingual TERMinal emulator) / [Mlterm-dev-ja] utmp support for linux glibc
https://sourceforge.net/p/mlterm/mailman/message/3285553/

SDL 2.0 日本語リファレンスマニュアル
http://sdl2referencejp.osdn.jp/index.html

SDL_envvars - SDL Documentation Wiki
https://sdl.beuc.net/sdl.wiki/SDL_envvars

Can we now use SDL2 without X11? - SDL Development - Simple Directmedia Layer
https://discourse.libsdl.org/t/can-we-now-use-sdl2-without-x11/23421

linux - Keyboard and mouse in SDL2 app without X11 on Raspberry Pi - Stack Overflow
https://stackoverflow.com/questions/56423753/keyboard-and-mouse-in-sdl2-app-without-x11-on-raspberry-pi

Filesystem Capability Bits - SlackBuilds.org
https://www.slackbuilds.org/caps/

SDL2 で明示的に KMS/DRM を使いたい場合、環境変数で "SDL_VIDEODRIVER=kmsdrm" などとしてやると良さそう。

実行例
SDL_VIDEODRIVER=kmsdrm mlterm-sdl2

fbterm の導入

SlackBuilds.org から導入可能。

導入例(sbotools利用時)
su -l -c "/usr/sbin/sboinstall fbterm"

fbterm における日本語入力

各種 fep の他、fcitx-fbterm が利用可能だった。

fcitx-fbterm 導入スクリプト

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_fcitx-fbterm-0.2.0.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_fcitx-fbterm-0.2.0.sh
ダウンロードしたスクリプトを /usr/local/sbin 等に置いて実行権限を付与。
使用時は root で実行。

使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_fcitx-fbterm-0.2.0.sh && chmod +x $(pwd)/install_fcitx-fbterm-0.2.0.sh && su -l -c $(pwd)/install_fcitx-fbterm-0.2.0.sh
起動例

Linux コンソールで fcitx-fbterm-helper を実行する。fcitx-fbterm-helper が自動的に fcitx 及び fbterm を起動する。

$ /usr/bin/fcitx-remote -e
$ /usr/bin/fcitx-fbterm-helper -l

fcitx-fbterm-helper -h で使い方が表示される。

素材

SBoからのダウンロード&ビルド自動化スクリプトのテンプレート

88x31.png

以下のテンプレートはCC0でリリースしておきます。ご自由にお使い下さい。

テンプレート1:初期型。ハードコーディングだらけ。
  • md5sum のハッシュ値とファイル名の間は半角スペースが二つ入ります。
  • SlackBuilds.org の公開鍵をインポート済みであれば関連する行をアンコメントすることで SlackBuilds.org からダウンロードした tar.gz ファイルの検証を行えます。
テンプレート1
#!/bin/sh

MD5SUM_BAR_000="d41d8cd98f00b204e9800998ecf8427e  /root/Downloads/bar/bar-0.0.0.tar.gz"

checksum_md5sum () {
    timestamp=$(date +%Y%m%d%H%M%S%N)
    rm -f /tmp/md5sum-$1.$timestamp
    echo $2 >/tmp/md5sum-$1.$timestamp
    chmod go-r /tmp/md5sum-$1.$timestamp
    md5sum -c /tmp/md5sum-$1.$timestamp || exit
    rm /tmp/md5sum-$1.$timestamp || exit
    unset timestamp
}

if test ! $USER = root ; then
    echo "Run this script as root, bye."
    exit
else
    cd /root || exit
    . /etc/profile
    test -d /root/Downloads || mkdir /root/Downloads
    cd /root/Downloads
    if test -f /var/log/packages/bar-0.0.0-x86_64-1_SBo ; then
        echo "Bar 0.0.0 is already installed."
    else
        test -d /root/Downloads/bar && rm -r /root/Downloads/bar
        wget https://slackbuilds.org/slackbuilds/14.2/foo/bar.tar.gz || exit
#       wget https://slackbuilds.org/slackbuilds/14.2/foo/bar.tar.gz.asc || exit
#       gpg --verify /root/Downloads/bar.tar.gz.asc /root/Downloads/bar.tar.gz || exit
        tar zxf /root/Downloads/bar.tar.gz
        cd /root/Downloads/bar
        wget http://www.foo.baz/bar-0.0.0.tar.gz || exit
        checksum_md5sum bar000 "$MD5SUM_BAR_000"
        /root/Downloads/bar/bar.SlackBuild
        upgradepkg /tmp/bar-0.0.0-x86_64-1_SBo.tgz ||
            installpkg /tmp/bar-0.0.0-x86_64-1_SBo.tgz
        ldconfig
        cp /tmp/bar-0.0.0-x86_64-1_SBo.tgz /root/Downloads/
        cd /root/Downloads
        less /usr/doc/bar-0.0.0/README
    fi
fi

テンプレート2:利便性向上を狙うも可読性が低下。

https://slackbuilds.org/repository/14.2/games/xcowsay/
https://slackbuilds.org/repository/14.2/games/supertuxkart/

テンプレート2
#!/bin/sh

SOFTWARE_NAME_01="bar"
SOFTWARE_VERSION_01="0.0.0"
SOFTWARE_SOURCE_URL_01="http://www.foo.baz/bar-0.0.0.tar.gz"
SOFTWARE_ARCHIVE_NAME_01="bar-0.0.0.tar.gz"
SOFTWARE_ARCHIVE_MD5SUM_01="d41d8cd98f00b204e9800998ecf8427e"
SOFTWARE_README_01="/usr/doc/bar-0.0.0/README"
SOFTWARE_README_PAGER_01="less"
SBO_PKG_LOG_NAME_01="bar-0.0.0-x86_64-1_SBo"
SBO_SOURCE_URL_01="https://slackbuilds.org/slackbuilds/14.2/foo/bar.tar.gz"
SBO_GPG_VERIFY_01="false"

BUILD_ORDER="01"

checksum_md5sum () {
  tempfile=$(mktemp)
  md5sum_data="$2  /root/Downloads/$1/$3"
  echo "$md5sum_data" >"$tempfile"
  unset md5sum_data
  md5sum -c "$tempfile" || exit
  rm "$tempfile" || exit
  unset tempfile
}

sbo_builder () {
  if test -f "/var/log/packages/$1" ; then
    echo "$2 $3 is already installed."
    return 1
  else
    test -d "/root/Downloads/$2" && rm -r "/root/Downloads/$2"
    rm "/root/Downloads/$2.tar.gz" || rm -r "/root/Downloads/$2.tar.gz"
    wget "$4" || exit
    if test "$5" = true ; then
      wget "$4.asc" || exit
      gpg --verify "/root/Downloads/$2.tar.gz.asc" "/root/Downloads/$2.tar.gz" || exit
    fi
    tar zxf "/root/Downloads/$2.tar.gz"
    cd "/root/Downloads/$2" || exit
    wget "$6" || exit
    checksum_md5sum "$2" "$7" "$8"
    "/root/Downloads/$2/$2.SlackBuild"
    upgradepkg "/tmp/$1.tgz" || installpkg "/tmp/$1.tgz"
    ldconfig
    cp "/tmp/$1.tgz" /root/Downloads/
    cd /root/Downloads
    return 0
  fi
}

if test ! "$USER" = root ; then
  echo "Run this script as root, bye."
  exit
else
  cd /root || exit
  . /etc/profile || exit
  test -d /root/Downloads || mkdir /root/Downloads
  cd /root/Downloads
  unset i
  for i in $BUILD_ORDER ; do
    eval sbo_builder \
      "\$SBO_PKG_LOG_NAME_$i" \
      "\$SOFTWARE_NAME_$i" \
      "\$SOFTWARE_VERSION_$i" \
      "\$SBO_SOURCE_URL_$i" \
      "\$SBO_GPG_VERIFY_$i" \
      "\$SOFTWARE_SOURCE_URL_$i" \
      "\$SOFTWARE_ARCHIVE_MD5SUM_$i" \
      "\$SOFTWARE_ARCHIVE_NAME_$i"
  done
  if test "$?" = 0 ; then
    unset i
    for i in $BUILD_ORDER ; do
      eval \$SOFTWARE_README_PAGER_$i "\$SOFTWARE_README_$i"
    done
    unset i
  fi
fi

パッケージング関連資料

Building A Package - SlackWiki
https://www.slackwiki.com/Building_A_Package

Writing A SlackBuild Script - SlackWiki
https://www.slackwiki.com/Writing_A_SlackBuild_Script

Slack-desc - SlackWiki
https://www.slackwiki.com/Slack-desc

Slackdesc: A tool for generating slack-desc files.
http://slack-desc.sourceforge.net/

slackdesc 導入スクリプト
https://gitlab.com/earthsimilarityindex/aquasuika-et-cetera/blob/master/install_slackdesc-0.02.sh
https://gitlab.com/earthsimilarityindex/aquasuika-et-cetera/raw/master/install_slackdesc-0.02.sh

パッケージ | 逆襲のSlackware
https://slackware.jp/package.html

Slackware14.1でソースからパッケージを自作する - クロの思考ノート
http://note.kurodigi.com/slackware141-makepkg/

SlackBuilds.orgにSlackBuildスクリプトを投稿する - クロの思考ノート
http://note.kurodigi.com/sbo-submit/

Slackwareのパッケージ管理 - slackware @ 日本語ウィキ - アットウィキ
https://www51.atwiki.jp/slackware/pages/20.html

Slackware Linuxのソフトウェア - Akionux-wiki
http://ja.akionux.net/wiki/index.php/Slackware_Linux%E3%81%AE%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2

Slackware Linux 14.1のインストール#パッケージのインストール - Akionux-wiki
http://ja.akionux.net/wiki/index.php/Slackware_Linux_14.1%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB#.E3.83.91.E3.83.83.E3.82.B1.E3.83.BC.E3.82.B8.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB

Slackwareをアップグレードする話 – エンジニアブログ「INAP流」
https://www.inap.co.jp/internapsway/?p=152

TODO

  • 自動化スクリプトテンプレートを改良する。9
  • SlackBuilds.org に日本語の表示・入力関連のビルドスクリプトを投稿する。
  • 可能な範囲で中文や한국어の表示・入力関連のビルドスクリプトも投稿する。
  • 拙作各種スクリプトのリファクタリングを行う。ARM や i386 にも対応させる。
  • ibus-mozc 及び uim-mozc のインストールスクリプトを書く。
  • scim-skk のインストールスクリプトを書く。
  • scim-console のインストールスクリプトを書く。
  • libkkc 系の IME を移植する。
  • libfep を使って fcitx-fep を作ってみる。
  • scim-mozc を書けそうなら書いてみる。
  • Canna や Wnn のインストールスクリプトを書いてみる。

  1. 一つの用途に対して採用されるアプリは一つ。 

  2. VirtualBox で Salix OS をゲスト OS として利用し、かつ GuestAdditions を導入する場合、モジュールのコンパイル時に kernel-headers パッケージのみでは足りず、稼働中のカーネルに対応する kernel-source パッケージを slapt-get で入れる必要があった。 

  3. In 2019 : Zenwalk is a 64 bits "pure" Slackware system with added post-install configurations, optimizations and out of the box tweaks, with a ready to use polished desktop environment, with added graphical system tools, added office and multimedia applications, and striped to keep just "one application per task"!(Zenwalk 公式サイトより引用) 

  4. USB フラッシュメモリ等からの高速起動にフォーカスしている。 

  5. kbd-options で複数のオプションを指定する場合はカンマで区切る必要があった。 

  6. 「ヴ」には厨二心をくすぐられる。 

  7. gpm が有効である場合 mlterm-fb の描画が崩れるので、 chmod -x /etc/rc.d/rc.gpm しておく必要がある。 

  8. * はスクリプトに応じて読み替えて下さい。 

  9. とりあえず、変数で目的のソフトの *.info ファイルを指定するだけで良いようにしたい。 

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Python3.6 sourceインストール時のエラーであわてた

環境

  • Ubuntu16.04LTS
  • Vagrant/virtualbox

必要なライブラリと最新化

sudo apt update && sudo apt upgrade
sudo apt install build-essential
sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev 

Pythonのソースを入手

wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tgz

make&install:システム全体にインストール

tar -xvf Python-3.6.7.tgz
cd Python-3.6.7/

./configure --enable-shared --enable-optimizations
sudo make altinstall

エラー

と、ここで躓きました

エラーメッセージ

python3.6: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory

原因

共有ライブラリが参照できていないようです
ありかを探して見える場所に配置します

sudo find / -name libpython3.6m.so.1.0
=> /lib64/libpython3.6m.so.1.0

sudo ln   /usr/local/lib/libpython3.6m.so.1.0 /lib64/libpython3.6m.so.1.0
sudo ldconfig

めでたし、めでたし
今日も一慌てしました、何事も勉強ですね

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Coralの夏の更新:トレーニング後の量的サポート、TF Lite delegate、および新しいモデル!

Coral’sは、顧客との仕事、流通の拡大、新機能の構築に忙しい夏を過ごしました。もちろん、R&Rには時間がかかります。ローカルAIのプラットフォームの更新、初期の作業、新しいモデルを皆さんと共有できることを楽しみにしています。

1_Jryu97esXxkonWBj4t62fw.jpeg

コンパイラがバージョン2.0に更新され、トレーニング後の量子化を使用して構築されたモデルのサポートが追加されました(完全な整数量子化を使用する場合のみ(以前は量子化対応トレーニングが必要でした))、いくつかのバグが修正されました。 TensorflowチームがMedium postで言及しているように、「トレーニング後の整数量子化により、ユーザーはトレーニング済みの浮動小数点モデルを完全に量子化して、8ビット符号付き整数(つまり int8)のみを使用できます。」モデルサイズを縮小すると、この方法で量子化されたモデルは、Coral製品にあるEdge TPUによって高速化できるようになりました。

また、Edge TPU Pythonライブラリをバージョン2.11.1に更新して、Coral製品の転移学習用の新しいAPIを追加しました。新しいデバイス上の逆伝播APIを使用すると、画像分類モデルの最後のレイヤーで転送学習を実行できます。モデルの最後のレイヤーはコンパイルの前に削除され、デバイス上で実装されてCPUで実行されます。ほぼリアルタイムの転送学習が可能になり、モデルを再コンパイルする必要がありません。以前にリリースされた刷り込みAPIは、既存のクラスをすばやく再トレーニングしたり、他のクラスをそのままにして新しいクラスを追加できるように更新されました。事前に訓練された基本モデルのクラスを保持することもできます。デバイス上での転送学習の両方のオプションの詳細をご覧ください。

これまで、Edge TPUでモデルを高速化するには、Edge TPU Python APIまたはC ++を使用してコードを記述する必要がありました。しかし、TensorFlow LiteインタープリターAPIを使用すると、Edge TPUのTensorFlow Liteデリゲートがリリースされたため、Edge TPUでモデルを高速化できます。 TensorFlow Lite Delegate APIは、TensorFlow Liteインタープリターがグラフ実行の一部またはすべてを別のエグゼキューターに委任できるようにするTensorFlow Liteの実験的な機能です。この場合、他のエグゼキューターはEdge TPUです。 Edge TPUのTensorFlow Liteデリゲートの詳細をご覧ください。

微信截图_20190820104427.png

CoralはEdge TPUおよびAutoMLチームとも協力して、EfficientNet-EdgeTPUをリリースしています。EfficientNet-EdgeTPUは、Edge TPUで効率的に実行するようにカスタマイズされた画像分類モデルのファミリです。モデルはEfficientNetアーキテクチャに基づいており、Edge TPUでの低遅延に最適化されたコンパクトなサイズでサーバー側モデルの画像分類精度を実現します。 Google AIブログでモデルの開発とパフォーマンスの詳細を確認し、コーラルモデルのページでトレーニングおよびコンパイルされたバージョンをダウンロードできます。

また、夏の終わりに合わせて、今年の授業や研究室での実験をお望みの方には、アローが学生教師割引を提供していることもお知らせしたいと思います。

Coralプラットフォームの進化を続けられることを嬉しく思います。coral-support@ google.comでフィードバックを送信してください。


Coral Dev Boardは、Edge TPUコプロセッサーを搭載したシングルボードコンピューターです。 機械学習モデル用の高速なデバイス上の推論を必要とする新しいプロジェクトのプロトタイピングに最適です。

6.27-DEV-无logo.jpg

6.27-USB-无logo.jpg

Google Coral EDGE TPU 海外代理店薦める,グローバル出荷:https://store.gravitylink.com/global
Coral USB Acceleratorは、コンピューターのコプロセッサーとしてEdge TPUを提供するUSBデバイスです。 Linuxホストコンピューターに接続すると、機械学習モデルの推論が高速化されます。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

tasksetとは

tasksetとは

プロセスはロードバランサ機能によってシステムの負荷に応じて複数の論理CPUをまたいで実行することがあるらしい.
そこで, プログラムを1つの論理CPU上で実行させるためのコマンドとして, taskset と呼ばれるものが用意されている.

つかいかた

tasksetコマンドは -c オプションで指定した論理CPU上で, 引数に与えたプログラムを実行する.
以下の場合, 論理CPU 0上で a.out というプログラムが走ることになる.

$ taskset -c 0 ./a.out

CPUの情報を確認する

tasksetコマンドを使う前に, そもそもマシン上のCPUの情報を確認しておきたいというケースがある.
そういったときに使えるコマンドをまとめた.

物理CPUの確認

以下の実行結果の場合, 物理CPUは1つだと分かる(physical idが全て同一のため).

$ cat /proc/cpuinfo | grep 'physical id'
physical id : 0
physical id : 0

論理CPUの確認

以下の実行結果の場合, 論理CPUは2つだと分かる.

$ cat /proc/cpuinfo | grep processor
processor   : 0
processor   : 1

コアの確認

以下の実行結果の場合, それぞれの論理CPUはコアを2つ持っていると分かる.

$ cat /proc/cpuinfo | grep 'cpu cores'
cpu cores   : 2
cpu cores   : 2

余談

ちなみにVirtualBoxでは, 設定 > システム > プロセッサー > プロセッサー数 から論理CPUの数をいじることができる.

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

build-essentialとは

build-essentialとは

名前の通り, 開発に必須のビルドツールを提供しているパッケージ.
gcc(GNU C Compiler)とかg++(GNU C++ Compiler), makeとかその他色々入るらしい.

aptが使える環境の場合,

apt install build-essential

でインストールできる.

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

OpenCVのカメラ読み込みを高速化する

この記事について

Raspberry PiにUSBカメラを接続してOpenCVで読み込むと、速度(FPS)が非常に遅いことがあります。また、PiCameraを使っても、解像度が高いと速度が出ないことがあります。
これを高速化します。対策は、単に圧縮フォーマットを指定するだけです。

  • 速度が必要な場合は、非圧縮フォーマットじゃなくて、H264フォーマットなどを指定しましょう
    • cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('H', '2', '6', '4'));
  • H264非サポートなWebカメラの場合には、MJPGが使える可能性があります。だけど、MJPGだとCPUパワーを結構使います

環境

  • Raspberry Pi 3 B+
    • 2019-07-10-raspbian-buster
    • Python3 + OpenCV 3.2.0 (今はaptでインストール可能になってた sudo apt install python3-opencv )
    • Pi Camera v2.1
  • USBカメラ
    • Logicool C270m

 * Jetson Nanoでもほぼ同じ結果でした。

測定方法

カメラはカバーせずに、明るいシーンを撮影(←重要)。
これをやらないと、シャッタースピードの影響を受けるためか、キャプチャ時間(cap.read() )が遅くなることがあります。

フォーマット指定と速度

フォーマットの指定方法

VideoCapture を開いた後に、CAP_PROP_FOURCC プロパティにfourcc形式でフォーマットを指定できます。
Pythonだと以下のようになります。C++でも同様です。

cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('H', '2', '6', '4'));

処理時間の比較

各カメラで、フォーマットと処理時間(cap.read() )の関係を比較しました。

PiCamera V2.1 (1920x1080)

フォーマット BGR3 MJPG H264
Capture時間 [msec] 249 72 34
CPU使用率 [%] 5 27 15

PiCamera V2.1の場合、デフォルトはBGR3フォーマットになります。1920x1080で読み込もうとするとめちゃくちゃ遅くなります。
MJPGだと少し速くなり、H264にすると、ほぼリアルタイムな30fpsが出ます。
CPU使用率はFPSが異なるので、あまり意味はない数字です。

PiCamera V2.1 (1280x720)

フォーマット BGR3 MJPG H264
Capture時間 [msec] 33 33 33
CPU使用率 [%] 13 27 8

1280x720だとどのフォーマットでもほぼリアルタイムな30fpsが出ます。
1920x1080に比べて速くなったのは、おそらくイメージセンサの動作モードが違うためです (https://picamera.readthedocs.io/en/release-1.12/fov.html )

CPU使用率を見ると、H264が最も少ないという面白い結果になりました。おそらくエンコード処理はハードウェアで行い、データ転送量もBGRに比べて少ないためだと思われます。

USB Camera (1280x720)

フォーマット YUYV MJPG H264
Capture時間 [msec] 135 33 -
CPU使用率 [%] 10 23 -

今回使ったLogicool C270mだと、デフォルトフォーマットはMJPGでした。なので、意識しないと遅いことには気づかないのですが、CPU使用率が高いです。あえてYUYVフォーマットを使うと当然遅くなります。H264は非サポートでした。

確か、上位機種のC920rはデフォルトがYUYVだったので、デフォルトのままだと遅いので注意が必要です。
C270mでも、他のアプリやコマンドからフォーマットを変えたら、その設定は残るので、コード内でフォーマット指定した方が無難です。
(実は本記事は、これに気付かずに遅いな~とハマったのが発端です。。。)

ちなみに、対応フォーマットはv4l2-ctl -d /dev/video1 --list-formats-ext で確認可能です。

テストコード

# -*- coding: utf-8 -*-
import sys
import time
import cv2

def decode_fourcc(v):
    # https://amdkkj.blogspot.com/2017/06/opencv-python-for-windows-playing-videos_17.html
    v = int(v)
    return "".join([chr((v >> 8 * i) & 0xFF) for i in range(4)])

cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
# cap = cv2.VideoCapture(1)
# cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
# cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)

# cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('B', 'G', 'R', '3'));
# cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'));
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('H', '2', '6', '4'));
# cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('Y', 'U', 'Y', 'V'));
print(decode_fourcc(cap.get(cv2.CAP_PROP_FOURCC)))

if cap.isOpened() == False:
    print("cannot open")
    sys.exit(1)
_, img = cap.read() # dummy

cnt = 0
time_start = time.time()

try:
    while True:
        cnt += 1
        print(cnt)
        _, img = cap.read()
        # cv2.imshow('image', img)
        # key = cv2.waitKey(1)
        # if key == 27: # ESC
            # break
except KeyboardInterrupt:
    print("Exit loop by ctrl-c")

cap.release()
cv2.destroyAllWindows()
time_end = time.time()
print ("Capture time: {0}".format((time_end - time_start) * 1000 / cnt) + "[msec]")

[おまけ]シャッタースピードとキャプチャ処理時間

おそらくOpenCVの仕様として、露光時間(≒ 1/シャッタースピード)だけcap.read() で待たされます。
例えば、上記コードで、

_, img = cap.read()

のかわりに

_, img = cap.read()
time.sleep(0.01)

として、cap.read() の処理時間(キャプチャ処理時間)だけを測定したら20msecになりました。

さらに、time.sleep(0.1) として待ち時間をさらに増やしたら、キャプチャ処理時間は10~20msecにバラついたので、cap.read() を呼んだタイミングの露光が完了するのを待っているのだと思います。

待たされるのが嫌だという場合には、キャプチャ処理は別スレッドでやった方がよさそうですね。
↓の記事のような感じ。
https://qiita.com/PINTO/items/dd6ba67643bdd3a0e595

念のため追記

圧縮フォーマットを利用したら速度は向上しますが、当然画質は下がります。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

圧縮しながらSSHでファイル転送する

概要

別サーバにファイル転送をする際にローカルで一度吐き出す処理をせず、そのまま転送したい場合がある。
いろいろな用途で使えるためメモとして残しておく

コマンド例

$ tar zcvf - images | ssh hostname "cat > ~/images.tar.gz"
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む