- 投稿日:2019-08-20T23:59:47+09:00
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
- 投稿日:2019-08-20T19:27:44+09:00
Slackware 向け日本語環境構築スクリプト群
無 保 証 で す
当方執筆の技術情報に関するライセンス、免責事項、禁止事項
本記事記載スクリプト群の対応バージョン : Slackware 14.2 x86_64用途・目的別 Slackware 系ディストリビューション紹介
Slackware らしさを受け継ぎつつ充実した日本語環境・ドキュメントを有する Linux が使いたい
→ Plamo LinuxGUI の各種管理ツールが付属するシンプル1 な Slackware 互換 Linux が使いたい2
→ Salix OSインストール直後から快適に使えるようチューニングされ、TUI/GUI 向けに各種管理ツールが追加されたシンプル1 な Slackware 互換 Linux が使いたい3
→ ZenwalkTUI/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
コンソールのキーマップ再設定ツール
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
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
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.shsboui(通知機能無し版)導入スクリプト
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
対応フォント
HackGen
IPA
Kochi-substitute
Migu
Monapo
M+
Noto CJK JP
Ricty Diminished
Sazanami
Ume
UmePlus
VL Gothicserif, 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>FontForge & Ricty 導入スクリプト
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.shRicty 導入スクリプト
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.shlv 導入スクリプト
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.shnkf の導入
導入例(sbotools利用時)su -l -c "/usr/sbin/sboinstall nkf"sl の導入
導入例(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 である点に注意。
日本語マニュアルアーカイブをインストールしたにも関わらず読み込まれない場合、環境変数 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.shSKK 辞書(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.shibus の導入
導入例(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.shibus-qt の導入
SlackBuilds.org から導入可能。
ibus と Qt アプリの連携に。導入例(sbotools利用時)su -l -c "/usr/sbin/sboinstall ibus-qt"ibus-anthy の導入
導入例(sbotools利用時)su -l -c "/usr/sbin/sboinstall ibus-anthy"ibus-skk の導入
導入例(sbotools利用時)su -l -c "/usr/sbin/sboinstall ibus-skk"ibus-mozc の導入
fcitx-mozc の SlackBuild スクリプトを書き換え構築する。
fcitx の導入
導入例(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.shfcitx-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.shfcitx-mozc の導入
導入例(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 : gtkhttps://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.shuim-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.htmlKernel Mode Setting - ArchWiki
https://wiki.archlinux.jp/index.php/Kernel_Mode_SettingFrame 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/inittab
のc6:12345:respawn:/sbin/agetty 38400 tty6 linux
をc6: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/inittab
のid: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)/kmsconconfigkmscon における日本語入力
いずれかのFEPが必要。
- uim-fep
- ibus-fep
- scim-console (未検証)
ibus-fep を使う場合
ibus-daemon が稼働中、かつ適切なインプットメソッドエンジンが選択されている必要がある。
例:
$ ibus-daemon -dr $ ibus engine anthy $ ibus-fepuim-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.shmlterm-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.shLinux コンソールから起動する場合、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-sdl2
で SUID しておけば 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.htmlSDL_envvars - SDL Documentation Wiki
https://sdl.beuc.net/sdl.wiki/SDL_envvarsCan we now use SDL2 without X11? - SDL Development - Simple Directmedia Layer
https://discourse.libsdl.org/t/can-we-now-use-sdl2-without-x11/23421linux - 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-piFilesystem Capability Bits - SlackBuilds.org
https://www.slackbuilds.org/caps/SDL2 で明示的に KMS/DRM を使いたい場合、環境変数で "SDL_VIDEODRIVER=kmsdrm" などとしてやると良さそう。
実行例SDL_VIDEODRIVER=kmsdrm mlterm-sdl2fbterm の導入
導入例(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からのダウンロード&ビルド自動化スクリプトのテンプレート
以下のテンプレートは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:利便性向上を狙うも可読性が低下。
- 冒頭の変数の書き換えで様々なソースに対応出来ます。
- 冒頭の変数及び変数
BUILD_ORDER
への追記で構築依存にも対応可能です。- SlackBuilds.org の公開鍵をインポート済みであれば
SBO_GPG_VERIFY_**="true"
8 とすることで SlackBuilds.org からダウンロードした tar.gz ファイルの検証を行えます。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_PackageWriting A SlackBuild Script - SlackWiki
https://www.slackwiki.com/Writing_A_SlackBuild_ScriptSlack-desc - SlackWiki
https://www.slackwiki.com/Slack-descSlackdesc: 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.htmlSlackware14.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.htmlSlackware 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%A2Slackware 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.ABSlackwareをアップグレードする話 – エンジニアブログ「INAP流」
https://www.inap.co.jp/internapsway/?p=152TODO
- 自動化スクリプトテンプレートを改良する。9
- SlackBuilds.org に日本語の表示・入力関連のビルドスクリプトを投稿する。
- 可能な範囲で中文や한국어の表示・入力関連のビルドスクリプトも投稿する。
- 拙作各種スクリプトのリファクタリングを行う。ARM や i386 にも対応させる。
- ibus-mozc 及び uim-mozc のインストールスクリプトを書く。
- scim-skk のインストールスクリプトを書く。
- scim-console のインストールスクリプトを書く。
- libkkc 系の IME を移植する。
- libfep を使って fcitx-fep を作ってみる。
- scim-mozc を書けそうなら書いてみる。
- Canna や Wnn のインストールスクリプトを書いてみる。
一つの用途に対して採用されるアプリは一つ。 ↩
VirtualBox で Salix OS をゲスト OS として利用し、かつ GuestAdditions を導入する場合、モジュールのコンパイル時に kernel-headers パッケージのみでは足りず、稼働中のカーネルに対応する kernel-source パッケージを slapt-get で入れる必要があった。 ↩
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 公式サイトより引用) ↩
USB フラッシュメモリ等からの高速起動にフォーカスしている。 ↩
kbd-options で複数のオプションを指定する場合はカンマで区切る必要があった。 ↩
「ヴ」には厨二心をくすぐられる。 ↩
gpm が有効である場合 mlterm-fb の描画が崩れるので、
chmod -x /etc/rc.d/rc.gpm
しておく必要がある。 ↩* はスクリプトに応じて読み替えて下さい。 ↩
とりあえず、変数で目的のソフトの *.info ファイルを指定するだけで良いようにしたい。 ↩
- 投稿日:2019-08-20T13:36:26+09:00
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-devPythonのソースを入手
wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tgzmake&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めでたし、めでたし
今日も一慌てしました、何事も勉強ですね
- 投稿日:2019-08-20T11:46:23+09:00
Coralの夏の更新:トレーニング後の量的サポート、TF Lite delegate、および新しいモデル!
Coral’sは、顧客との仕事、流通の拡大、新機能の構築に忙しい夏を過ごしました。もちろん、R&Rには時間がかかります。ローカルAIのプラットフォームの更新、初期の作業、新しいモデルを皆さんと共有できることを楽しみにしています。
コンパイラがバージョン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デリゲートの詳細をご覧ください。
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コプロセッサーを搭載したシングルボードコンピューターです。 機械学習モデル用の高速なデバイス上の推論を必要とする新しいプロジェクトのプロトタイピングに最適です。
Google Coral EDGE TPU 海外代理店薦める,グローバル出荷:https://store.gravitylink.com/global
Coral USB Acceleratorは、コンピューターのコプロセッサーとしてEdge TPUを提供するUSBデバイスです。 Linuxホストコンピューターに接続すると、機械学習モデルの推論が高速化されます。
- 投稿日:2019-08-20T08:38:29+09:00
tasksetとは
tasksetとは
プロセスはロードバランサ機能によってシステムの負荷に応じて複数の論理CPUをまたいで実行することがあるらしい.
そこで, プログラムを1つの論理CPU上で実行させるためのコマンドとして,taskset
と呼ばれるものが用意されている.つかいかた
tasksetコマンドは
-c
オプションで指定した論理CPU上で, 引数に与えたプログラムを実行する.
以下の場合, 論理CPU 0上でa.out
というプログラムが走ることになる.$ taskset -c 0 ./a.outCPUの情報を確認する
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の数をいじることができる.
- 投稿日:2019-08-20T08:17:41+09:00
build-essentialとは
- 投稿日:2019-08-20T01:19:01+09:00
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念のため追記
圧縮フォーマットを利用したら速度は向上しますが、当然画質は下がります。