投稿

ラベル(Linux)が付いた投稿を表示しています

アマチュア無線コンテストの zLog令和版 を M1 Mac + Wine CrossOver で動かす

イメージ
先程上手くいったので詳細は後ほど書きますが、表題の通りの動かし方ができるようになりました。 brew の wine-crossover を利用する 実行時には wine64 を利用する。 ~/.wine/dosdevice/ にシリアルポートへの symbolic linkを作成する Retina Mode (High DPI) は不便 Wine Crossover のインストール Wine は homebrew でインストールしました。 brew tap gcenx/wine brew install --cask --no-quarantine wine-crossover brew install winetricks そして日本語フォントに対応させるために winetricks を使って設定します。 WINE=wine64 winetricks fakejapanese その後には Wine の実行環境を作るためにも winecfg あたりを動かしておいてください。 wine64 winecfg M1 Mac, Wine, zLog令和版とは 今回利用する部材の M1 Mac, Wine, zLog令和版 について紹介します。 M1 Mac と読んでいるのは 2020年に登場したARMのCPUを搭載したMacのことを指しています。最近ではM2のMacも出ていますね。最近までMacでもWindowsなどで使っているIntelのCPUを使っていたのですが、昨今のiPhone/iPadでの実績もあってかMacでもARMのCPUを使ったものを出してきた具合です。 CPUの種類が違うため、今までのIntel CPU用に作られたプログラムは基本的にはそのままでは動きません。Intel CPU で実行するMacOS用のアプリケーションや実行可能ファイルはRosetta Stoneなどの技術を使って ARM CPUで動かす仕組みは入っていますが、完璧に再現されているわけでもないです。 ということで、今までは比較的簡単にWindowsのアプリをMacで動かせていたのですが、CPUが変わったこともあり制約が増えた次第です。 今回は64Bit版のWindowsのバイナリならばARMでも動くことがわかったので、この組み合わせを利用し...

bash で while read を用いて、行ごとに繰り返す処理を書く

イメージ
テキストファイルに書かれた内容で、1行ずつコマンド処理を実行したいことがある。 while read を使えば良いんだ、ってことは覚えているのだが、年に数回しか使わないので覚えていないことが多い。ということで、実際に使ったコマンドを書いておく。 while read line ; do echo "$line" done << END command_1 command 2 END 結果: command_1 command 2 同様にファイルを食わせるなども可能。 while read line ; do echo "$line" ; done < ./a.txt cat ./a.txt | while read line ; do echo "$line" ; done 時々Web検索するんだけど、間違ったことが書いてあったりするので、自分でメモしておく。

LinuxでのSoftEther VPN ではブリッジ接続ではbridge deviceか別NICを準備したほうが良い。

 ちょいと所用があり Raspberry Pi での Raspbian で SoftEther VPN Server を動かしている。 SoftEther VPN Server には raspbian/Debianに収録されている softether-vpnserver の debパッケージを apt でインストールして、設定は Windows11 上の SoftEther VPN 管理コンソールのアプリを使っている。 この構成で、NAT-Tや VPN Azureの構成などを行って、楽天モバイルのSIMとモバイルルータでインターネットに繋がるEthernetセグメントへ、外から入れるようにはなった。 しかし、IPv4の帰りのパケットが不完全だったり、SoftEther VPN Serverを動かす Raspberry Pi へ SSH できなかったりと、不具合が多すぎる。何なのだろうか。 SoftEther のマニュアルなどを探していたところ、 ローカルブリッジの説明 では、ローカルブリッジにはローカルブリッジ用LANカードを準備せよとか書いてある。特に、このような表現も有る。 物理的な LAN カードに対して入力された Ethernet フレームを、オペレーティングシステム内で TCP/IP プロトコルスタックへのフレームバッファと、ローカルブリッジを行うために入力する際に必要となるフレームバッファの 2 つに複製しなければならないので、CPU 時間およびメモリ負荷が発生し、通信速度が低速になります。 またローカルブリッジ用のLANと通常のIPアドレスを持ったEthernetポートを共用した場合の制約として、このような記述もあります。 Linux オペレーティングシステム内部での制限事項により、tap モードではないローカルブリッジでは、VPN 側 (仮想 HUB 側) からローカルブリッジしている LAN カードに割り当てられる IP アドレスに対して通信を行うことはできません。この制限は SoftEther VPN が原因ではなく、Linux の内部構造に原因があります。もし VPN 側 (仮想 HUB 側) から Linux でローカルブリッジに使用しているコンピュータ本体と、何らかの通信を行いたい場合 (たとえば VPN Server / VPN ...

AWS EC2 での bash プロンプトに、設定したEC2 Instance Nameを表示する

「ログインしたEC2 instance のプロンプトには Private IP address ベースのホスト名が表示されているだけで、どのマシンにログインしたのかパット見では分からない。なんとかならない?」という相談を受けたので、いろいろと考えてみた。 結論からすれば、EC2 Instance を立ち上げる時にホスト名をつけたり、Tagをつけたりするので、それを bash のプロンプトに表示させてしまえばOKだろう。 ということで、 EC2 Instance のIAMロールで、 AmazonEC2ReadOnlyAccess を割り当てる。 /etc/profile.d/instance_name.sh に、下記のようなものを置いてみた。 #!/bin/bash # get availability zone name z="$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed -e 's/.$//g')" # get instance-id myself instance_id="$(curl -s http://169.254.169.254/latest/meta-data/instance-id/)" # get Name from tags aws_tag_name="$(aws --region $z ec2 describe-instances --instance-ids $instance_id --output text --query 'Reservations[].Instances[].Tags[?Key==`Name`].[Value]')" PS1="[u@h ${aws_tag_name} W]n$ " 元ネタ: EC2インスタンスにtagで付けた名前をサーバー内から取得する

Intel Edison Kit for Arduino

イメージ
だいぶ前に Intel Edison Kit for Arduino を貰ったので試しに入れてみたのだが、中のソフトウェアを更新するために opkg upgrade をしただけで disk full になった。開発環境として使わせるためにコンパイラなどが入っているのだが、構築済みシステムで update すらできないって、どういうことでしょうかね。。(汗)

Ubuntu 16 + nginx で HTTP2

このBlogを置いてある masaru.org のWebサーバを HTTP2 に対応させようと頑張っており、昨日対応完了したのでメモっておきます。 必要なものはこのとおりでした。 Ubuntu 16 Server nginx-1.10 openssl-1.0.2g 各所のドキュメントを読んでいたところ nginx-1.9.5 以降ならばHTTP2に対応している とのことで、 nginxの本家 にある nginx-1.10 の deb パッケージをインストールしてみたところ、Safari や iOSの Google Chrome では HTTP2 で通信するものの、MacやWindowsのGoogle ChromeではHTTP/1.1 のままで、困っておりました。 昨日見た記事では、Google ChromeでHTTP2 対応させるには、 Webサーバ側でopenssl-1.0.2 以降を利用する必要がある とのことだったので、サーバで使っている Ubuntu を 16 にアップグレードすることを決意。 下記のようなパッケージ構成にしたところ、無事に Google Chrome でも HTTP2が利用できるようになりました。 $ dpkg -l 'libssl*' 'nginx*' Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-==============-============-============-================================= un libssl (no description available) ii libssl0.9.8:i3 0.9.8o-7ubun i386 SSL shar...

Vyatta/Vyos のコマンドインターフェース

久しぶりにLinuxのネタでも書いてみようかと。 Linux Box を Router として使うのに便利な Vyos (旧 vyatta) で、ちょいと自分たちが調べたい統計を取ろうと思い、いろいろと調べていました。 Vyos の場合、Console や SSH などでログインをすると、LinuxのBashの代わりに /bin/vbash というBashっぽいものが動き、ネットワーク機器に有りがちなコマンドインターフェースが提供されています。 このコマンドインターフェースではルータとしての機能設定や現在の状況を表示することができ、例えば show dhcp server statistics といったコマンドを実行すれば、DHCPサーバのIPアドレス貸出数 (number of leased) が表示されます。 ちょうど監視項目として、vbash 経由で取得できる情報を使って、IPアドレス貸出数を zabbix 経由で取得したかったので、調べてみたのです。 まず show コマンドの実装がどうなっているのか調べてみたところ、こんな感じでした。 $ type show show is aliased to `_vyatta_op_run show' $ type _vyatta_op_run | head -5 _vyatta_op_run is a function _vyatta_op_run () { local -i estat; local tpath=$vyatta_op_templates; show コマンドはBashのマクロっぽいもので実装されていますね。 次に show dhcp server statistics がどうなっているのか調べるために、Bashの実行オプションを set -x と変更して、評価されるコマンドを表示して調べてみました。 vyatta@vyatta:~$ set -x + return 0 ++ history -a vyatta@vyatta:~$ show dhcp server statistics .... 中略 .... + eval shopt -s 'extglob;shopt' -u 'nullglob;' ++ shopt -s ex...

pwgen - Password の自動生成

いつも新しいパスワードを作成するときにコマンド名を忘れてしまうPassword生成器。 ほぼ個人的備忘録として書いておきます。 コマンド名は pwgen です。 http://pwgen.sourceforge.net/ Debian, Unbuntu では sudo apt-get install pwgen Mac OS X の brew では brew install pwgen でインストールできます。 実行例 # 8文字のパスワードを4つ表示 $ pwgen 8 4 eiCohch3 QuuVoh4o choH2goo Phohxaa5 # 記号(symbol)入り 10文字のパスワードを2つ表示 $ pwgen -y 10 2 se7Arobe#i shie4uo`Wu 使って思ったけど、JavaScript で出来た Web browser 版が有るとイイかも。 っと思って調べてみたら、 http://fm4dd.com/security/pwgen.htm というものがありました。

Raspberry Piのケース

イメージ
だいぶ前に購入して放置気味だったRaspberry Pi B+ ですが、チョットは工作とかすれば弄る気が起きるだろうと思い、先ずはケースを作ってみた。 使ったものは、その辺の薬局で買ってきたデンタルフロスの箱。コネクタ類の場所に電ドリやカッターナイフで適度に穴あけて、蓋閉めて完了。 ちょいとルータでも作ろうかなと。

漢字に中国語のPinyin、広東語の発音、Cangjie strokeを表示するWebサイト

だいぶ前からですが、漢字に中国語の拼音(ピンイン)、広東語の発音、繁体字の漢字入力に使うCangjie のキーシーケンスを表示するWebサイトを作りました。 中国語の学習に参考になればと思いまして。 https://masaru.org/ctp/ あとは、簡体字入力に使う五筆のキーシーケンスも表示できると良いのですが、元データを近々探してきます。 このサイトで使っているデータは Unicode の UniHan DB を用いて、後ろ側では TokyoCabinet を使って組んでいます。 速度的にはソコソコ出ているかと思います。 ソースコードは https://github.com/masaruyokoi/ChineseCharConverter に置いています。

友誼関経由でベトナム→中国を陸路で帰ってきました。

イメージ
無事にハノイから中国に入国し、南寧経由で翌々日に香港へ帰りました。 上記写真は2014年5月16日の中国時間13時頃に友誼関の中国側入国を済ませた後の写真です。 香港に帰ってからニュースを見たところ、この写真の2時間ほど後には閉鎖されて人民解放軍が展開したとの情報。 間一髪でした。 [caption id="attachment_10201" align="alignnone" width="625"] Google location history より。[/caption] 朝7:30をハノイのバス屋から出発。 昨日は9:30のバスの予約をしたのですが、国境閉鎖もありえるよなと思い、早めにバス屋に行って2時間早いバスに乗せてもらいました。 バスは3分の1が埋まる程度、たぶんほぼ全ての乗客が中国人でした。 何だかんだと帰国しているのでしょう。 ハノイ市街は特に混乱していませんでした。 たぶんいつも通りの出勤時刻でカブ渋滞。 お巡りさんは交通違反の取り締まりに精を出していました。 [caption id="attachment_10185" align="alignnone" width="625"] ハノイのAEON MALL[/caption] なぜか私が行く東南アジアには、ドコにでもAEONがあるのですが、プノンペンにつづいてハノイも完成前のAEONでした。 こっちは建物がまだ出来ていません。 アジアハイウェイAH1の途中で小休憩。 この道路が北朝鮮を除いて中国・韓国・日本と続いているのだよなと思うと、なかなか素敵です。 霞ヶ関→首都高渋谷線→東名高速→名神→中国道の続きが田舎道ってのも面白いです。 ハノイからバスに揺られて4時間、友誼関のベトナム側バス駅へ到着。 車内は結構静かでした。 Wikipedia:友誼関 バス駅から、ゴルフ場カートみたいなクルマに乗り換え、ベトナムのイミグレの建物へ。 ベトナム側で写真を撮っているのは日本人のオレだけ。中国人の皆様は写真撮影せずに緊張した面持ち。このご時世にスパイ容疑とか掛けられたらマズいからでしょうね。日本人はせいぜい「写真を消して」と言われるだけですが。 ベトナム出国後、中国側のイミグレ...

広東語の拼音を探して… Unicode に辿り着く

イメージ
広東語を勉強するためのツールの揃いがワルすぎるので、ちょっと自分で作ることに。 まずは、広東語の発音をコンピュータで調べる方法として http://www.kawa.net/works/ajax/romanize/chinese.html を使っていたのですが、自分でももうチョット工夫してみたいなと思っていたところでした。 イロイロと調べたところ、こんな感じでした。 Wikipediaによると、発音表記としてはYale式広東語拼音が多い。 Yale式広東語拼音を使ったプログラムを探したところ、 LinuxのInput methodである iBus に広東語拼音入力があり、辞書も含めてオープンソース しかし、広東語拼音入力の辞書データを見ても、そこに声調(イントネーション)が載っていないので、拼音を表示する側には使えなかった。 さらに調査を進めたところ、 Unicode の Unihan Database に、Unicodeの各文字と発音の対応が載っていることを発見。 Unihan とは Unicode Han(漢) の略だそうです。 さらっと見た漢字では、これらの内容が収録されています。 各漢字の中国語普通話(Mandarin)、広東語、日本語、ベトナム語、韓国語での発音が記されています。 いわゆる CJKVってやつですね。 簡体字・繁体字・日本語などの他言語の文字で、書き方は異なるが同じ意味の文字への対応もまとまっています。 Cangjie での入力方法、辞書などでの収録位置など。 あれ、五筆の入力方法が書いていないな。。 詳しくは、 Unicode Standard Annex #38 Unicode Han Database を御覧ください。 ってことで、ちょいとこの Unihan を parse して表示するプログラムを書いてみました。 実行結果はこんな感じ。 あとは、これを kvs などに入れてやったりすれば、先に上げたWebサイトみたいなものは作れそうですね。

Muninの設定についてまとめてみる。

久しぶりに Munin の設定についてまとめてみる。  前回書いたのが4年以上前 みたいなので。 最近の事情とか含めたりと。 Munin の仕組み Muninは各マシンの状態を数値で取得して、グラフを書いて状態の可視化をするツールです。 Muninには munin-node という監視される側 (agent) と、munin サーバと呼ばれる数値を収集して記録しグラフ作成を行う2つのパートに分かれます。 エージェントである munin-node 情報収集を行う munin server munin-node に接続し情報を収集する munin-update 可視化するためのHTMLを作成する munin-html 可視化するためのグラフ画像を作成する munin-grapth, munin-cgi-grapth, munin-fastcgi-graph 上記3つを駆動する munin-cron munin-node のインストールや設定 昔はFedoraやEPELからパッケージを持ってきて云々とかしていたのですが、最近はそのようなことも必要なくなり、おおよその Linux ディストーションに添付されるようになりました。 インストールは yum や apt-get で行えばよいかと思います。 sudo yum install munin-node sudo apt-get install munin-node 設定は /etc/munin/node.d ディレクトリがある場合には、この中に node.conf などのファイルを作って、そこに設定を書いていくと良いでしょう。 無い場合には /etc/munin/munin-node.conf に書いていきましょう。 おおよそ必要な設定項目は下記のようになります。 # Listen するインターフェースを指定 host * # munin-server のアドレスを指定: 正規表現 allow ^127.0.0.1$ # CIDR での指定 cidr_allow 192.0.2.0/24 cidr_deny 192.0.2.42/32 設定が終わったら、localhost や munin server から telnet などで接続できるか確認します。 telnet localhost 49...

Bittorrent Sync で PC, Mac, Linux, Android 間のファイル同期を

イメージ
Windows Live Sync 亡き後の、ファイルサーバ不要のP2P型ファイル同期サービスを探していたのですが、 Bittorrent Sync が現実的に使い物になるっぽいので、コレに乗り換えました。 http://labs.bittorrent.com/experiments/sync 特徴としてはこんな感じです。 現状では利用者ごとにアカウントを作るようなことは不要。将来はわからないけど。 対応機種は Windows, Mac, Linux, Android, iOS (iPhoneなど) だそうです。 共有する場所を指定・識別するのは「共有シークレットキー」と呼ばれるハッシュ ちょっと考えればわかるけど、この共有シークレットキーが他人に知られれば、ファイル漏洩します。 共有シークレットキーには「読み書き可能」(read/write) と「読み取り専用」(read) の2種類 uPnPでNATのforward 設定もするみたいなので、インターネット越しに同期できるみたいです。 使い方としては、Mac, Linux, PC などで同期するディレクトリを指定して、共有シークレットキーを同期先にコピーする具合です。 Android/iPhoneはカメラでQRコードを読み取るようにしても設定できます。 手元では Mac と QNAP ファイルサーバ (Linux)、Android, iPhone で設定しました。 各実行環境での特徴はこんな感じ iPhoneでは他のアプリが使っている特定ディレクトリを指定するみたいなことが出来ません。iPhoneからアップロードするものでは、カメラで撮影したものぐらいで、カメラアップロードぐらいが実用的かと思います。 AndroidやiPhoneでは、Mac, Linux に保存されているファイルを自動的にダウンロードする設定にはなっておらず、必要なときに選択してダウンロードするようになっています。

Ubuntu kvm で仮想Ethernetセグメントを作る方法

イメージ
2,3個のL2セグメントに6台ほどのマシンを配置してネットワークの構築が出来るか実験する必要があったので、Linux kvm を使ってVMを6個起動し、VM間を仮想ネットワークで接続して実験することとした。 おおよその手順は下記の通り /etc/modprobe.d/dummy-nic.conf などの modprobe の設定を下記のようにする。 この場合は dummy interface は 3つになる。 alias dummy0 dummy alias dummy1 dummy alias dummy2 dummy options dummy numdummies=10 /etc/network/interfaces に、これらの設定を追加する。 auto dummy0 auto dummy1 auto dummy2 auto br1 auto br2 auto br3 iface br1 inet static address 192.168.30.130 netmask 255.255.255.0 bridge_ports dummy0 iface br2 inet static address 192.168.31.130 netmask 255.255.255.0 bridge_ports dummy1 iface br3 inet static address 192.168.32.130 netmask 255.255.255.0 bridge_ports dummy2 iface dummy0 inet manual iface dummy1 inet manual iface dummy2 inet manual Bridge の br0 がここに登場していないが、br0 は物理EthernetとVMをBridgeして繋ぐのに利用している。 各 bridge interface にIPアドレスを割り当てているが、これは別セグメントに繋がった各VMへSSHログインできるように、とりあえず設定しておいた。 virt-manager から設定する各VMの仮想ネットワークインターフェスを追加する。 Host device は specify shared device name を選び、Bridge name に接続したい bridge interfa...

QNAP TS-212

イメージ
QNAP TS-212 を買ったよ。  VMサーバに使っているサーバ機がほぼファイルサーバと化していたり、VMで動かしていたWindowsのアクティベーションが切れたりしたので、この際だからNASを入れることにした。 2T の HDD を2本入れてRAID1 mirroring の設定をして、Webブラウザからパスワードやネットワークの設定を行なって完了。 Windows や Mac , NFS ファイルサーバになるのは当然、Time Capsuleや各種メディアサーバ、VPN、LDAPサーバ、MySQLなどなど、なんだかLinuxでオフィス用のサーバを作りたいなと思うものはひと通りできる模様。 あと、私の場合ならば ssh public key authentication, Git サーバ, L2TP/IPSec VPN サーバぐらいができるとありがたい。 このへんもQPKGとかいうQNAP用パッケージを作れば良いみたいなので、ちょいと試してみたいところ。

Ubuntu 12.04 で OpenVPN Server

Ubuntu サーバで OpenVPN なんていうものを以前ご紹介したのですが、家のサーバを Ubuntu 12.04 にUpgradeしたら openvpn server が立ち上がらなくなった。 Ubuntu 12.04 からは openvpn-2.2 系が入っており、実行するスクリプトのセキュリティレベルを設定するようになっている。 「 script-security 2 」というものを追記する必要がある。 up "/etc/openvpn/scripts/up.sh " down "/etc/openvpn/scripts/down.sh " script-security 2 man openvpn によると、このようなことらしい。 --script-security level [method] This directive offers policy-level control over OpenVPN's usage of external programs and scripts. Lower level values are more restrictive, higher values are more permissive. Settings for level: 0 -- Strictly no calling of external programs. 1 -- (Default) Only call built-in executables such as ifconfig, ip, route, or netsh. 2 -- Allow calling of built-in executables and user-defined scripts. 3 -- Allow passwords to be passed to scripts via environmental variables (potentially unsafe). The method parameter indicates how OpenVPN should call external commands and scripts. Settings for met...

LG, ドコモの L-02C を Ubuntu Linux で使う方法

イメージ
つないでモバイルブロードバンドの設定をするだけ。 電話番号のところには *99# を設定 ID, Password は IIJ mio から指定された ID: mio@iij , Password: iii を設定 APN には iijmio.jp を指定。 昔必要だった USB繋ぐ→ eject コマンド発行 という手順は不要になっている模様。

Ubuntu 12.04 の Unity での HUD へのキーボードショートカットを消す方法

イメージ
Ubuntu 12.04 Unity の標準設定では、Altキーを離すをHUD (Head up Display) が表示されるようになっているかと思います。 Altキーってアプリケーションで割と多用するキーなので、イチイチHUDが出てくると鬱陶しいです。 HUD へのキーボードショートカットの設定は、「システム設定」の「ハードウェア」内にある「キーボード」を選んで、「ショートカット」タブのLauncher内に「HUDを表示するキー」という項目で設定します。 これを洗濯して、Backspaceを押せばショートカットを削除できます。

ThinkPad X121e で TouchPad を On/Off するスクリプト

以前まで使っていたX100eでは、キーボードのFnキーとの組み合わせでTouchPadのOn/Offが切り替えられたのですが、X121eになってからコレができなくなった。 理由としては、「Fnキーの組み合わせで切り替えられなくなった」「On/Offの切り替えをするプロパティのキーが変わった」といったもの。 タッチパッドをOn/Offするスクリプトですが、このようなものをどこかに配置して、切り替えるときに実行してください。 #!/bin/bash # check device model, and toggle xinput property. Original is from # - /etc/acpi/thinkpad-stretchortouchpad.sh # - /etc/acpi/asus-touchpad.sh toggle_touchpad=0 toggle_prop="Synaptics Off" sys_manufactuer=`sudo dmidecode -s system-manufacturer` sys_ver=`sudo dmidecode -s system-version` case "$sys_manufactuer" in IBM*) case "$sys_ver" in ThinkPad [TXZ]60*) toggle_touchpad=1 ;; esac ;; LENOVO*) toggle_touchpad=1 ;; esac [ "$toggle_touchpad" -eq 0 ] && exit 1 XIN=`xinput list | grep 'SynPS/2 Synaptics TouchPad' | sed -n -e's/.*id=([0-9]+).*/1/p'` test -z "$XIN" && exit 1 TPS=`xinput list-props $XIN | grep "$toggle_prop" | awk '{print $NF}'` test -z "$TPS" ...