Quantcast
Channel: Linux Tips –ともの技術メモ
Viewing all 42 articles
Browse latest View live

USB-HDDにUbuntu14.04LTSをインストール

$
0
0

故あって、ある調査のための環境としてUbuntu14.04LTS 日本語RemixをUSBハードディスクにインストールしています。さすがに一般向けにどこにでも書かれているようなことはここでは省略して、特殊なこと、自分にとっての備忘録になることをメモしておきます。

PCはマザーボードはH61M-ITX、CPUはCeleronG530、メモリは8GB搭載です。DVDで起動する前にBIOSの設定でSATAをDisableにしておきます。この状態でUSB-DVDROMからインストールDVDを起動します。DVDを起動したら、USB-HDD(今回はUSB2.0のHDDケースに1TBのHDDを搭載したもの)を接続し、普通通りインストールします。

インストール後、再起動したところからです。特に何もしなくてもBIOSでUSB-HDDから起動する設定になっていれば起動するはず。

  1. ソフトウェアの更新
    まずはソフトウェアの更新をします。Dashの一番下にアイコンが現れるので、更新してやります。
  2. セキュリティとプライバシーの変更
    Dashのアイコンの歯車とスパナの絵が描かれたアイコンをクリックし、システム設定を開きます。その中の「セキュリティとプライバシー」をクリックし、今回は人に貸すためのHDDなので、「ファイルとアプリケーション」の「利用状況を記録」をOFFにして、利用履歴データをクリアします。
    次に、「検索」の「オンライン結果の検索結果を含める」を「オフ」にします。これでDashのアイコンで何かを入力した時にオンライン検索をしなくなるようなので、軽快になります。
    その他の項目は適当に設定します。
  3. 「言語サポート」をクリックすると「インストールが完全ではない」旨の表示が出るので、インストールを行います。
  4. 端末を開く
    Dashの検索画面で「端末」と入力し、端末(Terminal)を開いてコマンドライン作業ができるようにします。
  5. 内蔵HDDを見えないようにする
    起動時のカーネルパラメータでlibataを禁止して内蔵HDDを見えないようにします。
    /etc/default/grub を開いて、 「GRUB_CMDLINE_LINUX_DEFAULT」の起動時オプションに「libata.force=disable」を追加します。ついでに同じ箇所のオプションの「quiet」を取って起動時のメッセージを表示させるようにします。
    修正後は、
    $ sudo grub-mkconfig -o /boot/grub/grub.cfg
    としてgrub.cfgファイルを自動生成させて反映させます。
    この後、BIOSのSATA禁止を解除して再起動して、PCの内蔵HDDが見えないことを確認します。
  6. USBハードディスクへのアクセス高速化
    HDDアクセス時のアクセス時刻の記録を停止してアクセスを減らすとともに、/tmpをtmpfsにより確保してHDDへのアクセスをなくします。/etc/fstab を以下のように修正します(赤字部分)。
    # / was on /dev/sda1 during installation
    UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 noatime,errors=remount-ro 0 1
    # swap was on /dev/sda5 during installation
    UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx none swap sw 0 0
    # tmpfs
    tmpfs /tmp tmpfs defaults,noatime 0 0
  7. システム時計が狂うのを直す
    /etc/default/rcS の中の「UTC=yes」を「UTC=no」に修正
  8. synapticのインストール
    Ubuntuにはsynapticパッケージマネージャがデフォルトではインストールされていませんので、インストールします。
    Dashで「ソフトウェア」と入力し、「ソフトウェアセンター」を探して起動します。
    検索ウインドウにて「synaptic」と入力して、「synapticパッケージマネージャ」を選択してインストールします。
  9. Ubuntu restricted extrasのインストール
    Ubuntuソフトウェアセンターから「Ubuntu restricted extras」を検索してインストール。途中でライセンスに同意するウインドウがソフトウェアセンターの下に表示されるので、時々チェックしながら先に進めます。
  10. いろいろインストール
    DashからSynapticを起動し、いろいろインストールします。
    ・GIMP
    ・clamtk
    ・jhead
  11. 有線LANの禁止(無線LANのみで使用)
    miiモジュールのロードを阻止して有線LANを禁止します。
    /etc/modprobe.d/blacklist.conf に以下の行を書き加えます。
    # disable wired ethernet
    install mii /bin/false
    この記述を追加した後、
    # sudo update-initramfs -u
    として反映させます。

以上で完了です。
実際にはここからさらに必要なものを順次インストール・環境構築することになります。


Chromium OSを試してみる

$
0
0

余っているUSBメモリ(っていっぱいあるんですけど)があったのと、Chromium OSがUSBメモリから起動できる、という話を見かけたので試してみることにしました。

こちらのatmarkITの記事を参考にしてやってみます。

1.p7zipのインストール

atmarkITの記事によると、デイリービルドされたChromiumOSのイメージがこちらのサイトで公開されているということなのですが、なぜかイメージは7z形式なのです。

Windows環境であれば7-zipをインストールすればいいのですが、Linux環境なので7zを展開する方法を用意しなければなりません。(まあ、Windowsマシン立ち上げてもいいのだけど、ここはやはりLinuxで、ということで)

そこで、SourceForge.jpからp7zipをソースコードパッケージをダウンロードしてきてビルド・インストールします。

余談ですが、SourceForgeの偽ダウンロードリンク(広告)、何とかならないんですかね。
おそらくリンク先はマルウェアだらけのような気がするんですが。なかには何の説明もなく「ダウンロード」ボタンを模したものもあって、よーく見ないと本物の正しいダウンロードリンクがわからないんですよね。はっきりいって酷すぎです。

余談はさておき、展開してインストールします。

$ tar xvfj p7zip_9.20.1_src_all.tar.bz2
$ cd p7zip_9.20.1
$ cp makefile.linux_any_cpu_gcc_4.X makefile.linux
$ make -j 2 all_test 
$ sudo ./install.sh

これでインストール完了です。

2.ChromiumOSのバイナリイメージダウンロード

こちらの Chromium OS Builds の daily ビルドの中から32bit版のCx86OS-2014mmddhhmmss.img.7zをダウンロードしてきます。

3.イメージの展開

ダウンロードしたイメージを展開します。

$ 7za x Cx86OS-20141115110454.img.7z
7-Zip (A) [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
p7zip Version 9.20 (locale=ja_JP.UTF-8,Utf16=on,HugeFiles=on,2 CPUs)
Processing archive: Cx86OS-20141115110454.img.7z
Extracting Cx86OS-20141115110454.img
Everything is Ok
Size: 2589949952
Compressed: 313970318
$

4.USBメモリへの書き込み

USBメモリを挿入し、適当な方法(ディスクユーティリティなど)でUSBメモリのデバイスファイル名を調べます。USBメモリをアンマウントした状態で、

$ sudo dd if=Cx86OS-20141115110454.img of=/dev/sdx bs=16M

としてUSBメモリにイメージを書き込みます。

書き込みが完了したところでsyncして、USBメモリを差し直してみました。ディスクユーティリティでみてみると、

Screenshot

となっていて、大量にパーティションができていました。
(ちなみに、いくつかのパーティションが勝手にマウントされてしまうので、抜くにはたくさんアンマウントしなければなりません)

5.起動してみる

IdeaPad S10-2に挿入して起動してみます。挿入してUSBブートさせてしばらく(15~20秒くらいか?)待つと、Welcome画面がでてきました。

言語およびキーボードで日本語を選んだ所まではよかったのですが、残念ながら内蔵の無線LANは認識していないようです。しかたがないのでイーサネット接続します。(2回目の起動の際に、手元にあったBUFFALO WLI-UC-GNMを挿しておいたら認識して暗号化キーをいれてやると使うことができました)

とりあえず、起動して使うことはできましたが、AtomN270では荷が重いのか、それともUSBメモリがそもそも遅いからなのかわかりませんが、結構もっさりです。LinuxMint17上でChromeで動かした時よりも遅いのはUSBメモリのせいでしょうね。

ChromiumOSでは本来ローカルディスクは見える必要はないのではないかと思っているのですが、残念ながらローカルディスクが見えてしまうようです。見えなければいつでもどこでも心配なく使えるかと思ったのですが・・・。

Ubuntuを使いやすく設定してみた

$
0
0

Ubuntu10.04から12.04になるときにUnityがデフォルトになった際にLinuxMintを試して以来、ずっとLinuxMintを使ってきたのですが、いろんなツールをインストールしたり、人に説明したりする分には、やはりUbuntuに軍配が上がります。それでUSB-HDDにインストールして試してみたりしていたのですが、それなりに自分なりのノウハウも溜まってきました。そこで、しばらくはUbuntuに戻ってみようかと思います。

Unityが鬱陶しかったUbuntuですが、ある程度コツを押さえればちゃんと使えます。
(ちなみに自分は日本語Remix版を使ってます)

1.検索の際にオンラインを検索しないようにする

最近のUbuntuが重く感じる最大の理由はDashでの検索時にオンライン検索を行っている待ち時間のようです。そこで、検索時にオンライン検索をしないように設定変更します。
左側に並んだLauncherのアイコンのの中から歯車とスパナの絵が描かれたアイコンをクリックし、システム設定を開きます。その中の「セキュリティとプライバシー」をクリックし、「検索」の「オンライン結果の検索結果を含める」を「オフ」にします。これでDashのアイコンで何かを入力した時にオンライン検索をしなくなるようなので、軽快になります。

※ついでに、プライバシー関係の設定も行ってしまうといいと思います。

2.システム時計が狂うのを直す

/etc/default/rcS の中の「UTC=yes」を「UTC=no」に修正

3.synapticのインストール

Ubuntuにはsynapticパッケージマネージャがデフォルトではインストールされていませんので、インストールします。
Dashで「ソフトウェア」と入力し、「ソフトウェアセンター」を探して起動します。
検索ウインドウにて「synaptic」と入力して、「synapticパッケージマネージャ」を選択してインストールします。

4.Ubuntu restricted extrasのインストール

Ubuntuソフトウェアセンターから「Ubuntu restricted extras」を検索してインストール。途中でライセンスに同意するウインドウがソフトウェアセンターの下に表示されるので、時々チェックしながら先に進めます。

5.いろいろインストール

DashからSynapticを起動し、いろいろインストールします。
・GIMP
・clamtk
・jhead

6.Launcherのアイコンを小さくする

左側に並んだLanucherのアイコンが妙にでかくて素人っぽいのが気に入りません。これは、「システム設定(歯車とスパナの絵が描かれたアイコン)」で「外観」をクリックすると、下の方に「Launcherアイコンのサイズ」という設定がありますので、そこでサイズを変更することができます。自分は32に設定しています。

ちなみにウインドウメニューがウインドウのタイトルバーに表示されずに気持ち悪いですが、こちらは同じく「外観」の中の「挙動」のタブの中に「ウインドウのメニューを表示」という設定項目があります。

こんなところでしょうか。あとはChromeとかもインストールしますが、特に難しいことはないので・・・。

UbuntuにUbuntuからリモートデスクトップ接続する

$
0
0

Ubuntu14.04(32bit)からUbuntu14.04(64bit)にリモートデスクトップ接続してみました。

1.サーバ側(接続される側)の設定

ググって調べると、サーバ側はgnomeでは接続できないようです。そこで、LXDEデスクトップ環境を含めた必要なソフトウェアをインストールします。

Ubuntuソフトウェアセンターで以下のものをインストールします。

  • LXDE(the Lightweight X11 Desktop Environment)
  • xrdp(Remote Desktop Protocol(RDP) server)

インストールが終わったら、コンソールで以下のように入力して、.xsessionファイルを作成します。

$ echo lxsession -s LXDE -e LXDE > ~/.xsession
$ cat .xsession
lxsession -s LXDE -e LXDE
$ sudo service xrdp restart
 * Stopping RDP Session manager [ OK ] 
 * Starting Remote Desktop Protocol server [ OK ] 
$

デフォルトでは日本語キーボードに対応したキーマップファイルがないので、キーマップファイルを生成する。

$ cd /etc/xrdp
$ ls
km-0407.ini km-040c.ini km-0419.ini rsakeys.ini startwm.sh
km-0409.ini km-0410.ini km-041d.ini sesman.ini xrdp.ini
$ sudo xrdp-genkeymap km-0411.ini
$ ls
km-0407.ini km-040c.ini km-0411.ini km-041d.ini sesman.ini xrdp.ini
km-0409.ini km-0410.ini km-0419.ini rsakeys.ini startwm.sh
$

2.クライアント側(接続する側=キーボード・ディスプレイを操作する側)の設定

Dashで「Remina」を検索し、リモートデスクトップクライアントであるReminaを起動する。

「新規リモートデスクトップ作成」を押して、新しいプロファイルを作成する。

  • 名前は適当に(接続先のホスト名など)つける
  • プロトコルは「RDP」を選択
  • 基本設定のサーバーは接続先のアドレスだが、avahiが入っていてローカルネットワークなのであれば「ホスト名.local」でOK。たとえば、「hogehoge.local」など。
  • ユーザー名は接続先でのユーザー名を入れる(入れなくてもいけるのかも?)
  • 色数は24bppを選択
  • 高度な設定は特にいじらず。

「設定画面を開く」アイコンを押して、設定を行う。

  • 「RDP」のタブでキーボードレイアウトに「00000411 – Japanese」を選択する。
    自動のままで「クライアントのキーボードマッピングを使用する」をチェックしてみたが、自動にはならなかった。

これでプロファイルをダブルクリックすると、接続するのでパスワードを入れてしばらく待つとLXDEでログインできました。

・・・・が、いくつか問題が出ました。

  1. 日本語入力ができない。ドキュメント作成する上では致命的かも。
  2. 接続先でもローカルログインすると、DISPLAYの区別がされないみたい。ローカルログインして起動したブラウザがリモート側にウインドウを開いたりしてしまう。

うーむ、イマイチですね。昔のtwmの頃のほうがリモート接続での扱いは楽だったような気がします。(もっとも、当時に比べるとずっと便利な機能が山ほどありますけどね)

Linux上でCUPSプリンタを共有する

$
0
0

先日購入したBrother HL-2240Dですが、Windowsから使ったりLinuxから使ったりで結構面倒なことになっています。こんなことなら、LAN内蔵モデルにしておけばよかったと後悔しています。

といっても買い換えるわけにもいかない(最悪、それもないではないですが・・・)ので、何とかしていきたいと思います。

まずは、どれかマシンを決めてUSBで接続しておくことにします。ここでは、LinuxMint17 32bitを実行しているAthlon5350マシン(ブログ記事にはしていないのですが、結局BIOSTARのCeleron847マザーは突然再起動病が収拾せず、引退させました。代わりにAthlon5350を導入しました)に接続することにします。

ドライバのインストールに先立って、IPアドレスを固定します。今回はルータでDHCPの固定割り当てをすることでIPアドレスを固定しました。

次にプリンタドライバをインストールしますが、プリンタドライバのインストールは以前の記事とまったく同じ方法でテスト印刷まで行きました。

で、共有をかけてみます。
「システム管理」→「プリンタ」でプリンタの管理ウインドウが開きます。

Screenshot-プリンター1

サーバーメニューで「設定」を開きます。

デフォルトではすべてチェックが外れていますが、

  • 共有するので「このシステムに接続されている共有プリンタを公開する」にチェック
  • IPPプロトコルを使うので「インターネットからの印刷を許可する」もチェック
  • どうせ家庭内ネットワークであり、グローバルアドレスは持ってないので「リモート管理を許可する」もチェック
  • 「ユーザーにジョブのキャンセルを許可する」もチェック

します。

Screenshot-2

プライベートアドレスを割り振った家庭内ネットワークであり、外部から直接接続される可能性のあるIPv6もルータで殺してある(IPv6ブリッジ、IPv6パススルーを禁止してある)ので、割り切った設定です。自宅内専用なのでファイアウォールも入っていません。

この状態でhttp://127.0.0.1:631/をブラウザで開くと以下のようになりました。

Screenshot-3

この状態から他のPCからは見えるのに印刷できない状態でだいぶ悩みました。サーバの設定も「リモート管理を許可する」をチェックしても反映されません。また、上記画面で「管理」を押すと設定画面になるのですが、やはりリモート管理が許可できません。(ユーザーがlpadminグループに所属していないといけないようなのですが、少なくとも見掛け上はそう見えています)

この手のパターンは、何かの設定ファイルが読み込まれていない、とかそんな感じです。そこで、一旦PCを再起動したところ・・・・「リモート管理を許可する」ができるようになりました。
この状態でネットワークでつながった別のUbuntuマシン上で「プリンター」を開いて「追加」を押すと、ネットワークプリンタの中にAthlon5350が出てきます。そして、これを選択するとネットワークプリントができるようになりました。(ただ、このPCは別途ドライバをインストールしたことがあるので、ドライバのインストール要否はわかりません)

とりあえずLinuxからはそれなりに共有できるようになったようです。

Ubuntu MATE 32bitをUSBメモリにインストール

$
0
0

Ubuntu MATE 32bitをUSBメモリにインストールしてみました。

なぜMATEかというと、通常のデスクトップ環境ではやはり重いので、なるべく軽いものにしたかったためです。

今回も32bit版をインストールしました。ダウンロードはこちらから。

いつものように、まずVMware上で一度インストーラISOイメージで仮想マシンを作って起動します。その後、一旦シャットダウンして、仮想マシンからHDDを取り除きます。一度起動するのは、仮想マシン作成直後はHDDを取り除けないからです。

次に、再度、インストーラISOイメージで仮想マシンを起動します。
起動して試すだけかインストールするかの選択画面がでたところでUSBメモリを取り付けます。今回は、新たにSanDiskのExtreme USB3.0 64GBを使ってみました。USBメモリを取り付けたら仮想マシン側に認識させ、その後でインストーラで「Ubuntuをインストール」をクリックします。

あとは普通にHDDにインストールするのと変わりませんが、データ領域を多めに取りたかったのでパーティションは手動で分けました。

インストールが終わったら、仮想マシンを終了し、PCを再起動します。この時にBIOSで内蔵SATAを禁止します。

再起動したら、過去の記事同様にいろいろ設定します。

  • SATAの禁止(内蔵HDDへのアクセス禁止)
  • /etc/fstabの設定(tmpfsの設定、マウントオプションにnoatimeを追加など)
  • 内蔵時計のUTC設定をローカルタイム設定に変更

など。

SATAを禁止したら、再起動後に内蔵HDDが見えない状態になっているのを確認します。あとは内蔵HDDのつもりで作業すれば大丈夫。

引き続き、いろいろやりますが、こちらが参考になります。

それにしてもSanDisk Extreme USB3.0 64GBは速いです。

 

Dockerを味見してみた(追伸)

$
0
0

Dockerの味見の際に「rootで操作するもののようだ」と記載しましたが、一般ユーザーで触る方法がわかりました。

ホストがUbuntuの場合には、/etc/default/docker.io の DOCKER_OPTS の設定を

DOCKER_OPTS="-H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock --dns 8.8.8.8 --dns 8.8.4.4"

となるように修正し、

$ sudo service docker.io restart
docker.io stop/waiting
docker.io start/running, process 13197
$

として Docker を再起動、

$ export DOCKER_HOST=tcp://127.0.0.1:4243

として環境変数を設定、

$ docker info
Containers: 0
Images: 0
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Dirs: 0
Execution Driver: native-0.2
Kernel Version: 3.13.0-44-generic
WARNING: No swap limit support
$

で一般ユーザーでもアクセスできるようになりました。

Dockerを味見してみた(追伸)の追伸

$
0
0

Dockerを非rootで操作するには/etc/default/docker.io の DOCKER_OPTS の設定を・・・なんて昨日の記事では書いてしまったが、そんな面倒なことをしなくてもできるらしい。

単純にユーザーが docker グループの権限を持っていればいいだけなのだそうだ。

つまり、

$ sudo addgroup ユーザー名 docker

とした後、ログインしなおせばよい。


Raspberry Piをプリントサーバーに・・・ならなかった(泣)

$
0
0

Athlon5350マシンにつないでいるブラザーHL-2240Dですが、プリンタを使う度にAthlon5350マシンを起動するのは面倒です。

そこで、OpenVPNを動かしているRaspberry PiのUSBポートで動かせないか試してみました。

1.とにかくつないでみる

つないで dmesg を見てみたらとりあえず認識してくれました。

[2146148.627562] usb 1-1.3: new high-speed USB device number 4 using dwc_otg
[2146148.728736] usb 1-1.3: New USB device found, idVendor=04f9, idProduct=0040
[2146148.728772] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[2146148.728787] usb 1-1.3: Product: HL-2240D series
[2146148.728801] usb 1-1.3: Manufacturer: Brother
[2146148.728817] usb 1-1.3: SerialNumber: M3Jxxxxxx
[2146148.797077] usblp 1-1.3:1.0: usblp0: USB Bidirectional printer dev 4 if 0 alt 0 proto 2 vid 0x04F9 pid 0x0040
[2146148.800057] usbcore: registered new interface driver usblp

2.CUPSをインストールする

Raspberry Pi にリモートログインしてCUPSをインストールします。

$ sudo apt-get install cups

どかどかとたくさん入るかと思ったらエラーが。メッセージに従って、

$ sudo apt-get update
$ sudo apt-get upgrade

ってやってみたら、Raspberry Pi 2関連と思わるアップデートがたくさん入りました。

それはさておき、アップデート後に気を取り直してCUPSをインストールします。

$ sudo apt-get install cups

3.CUPSの設定

完了したら、ローカル側からRaspberryPiの画面をリモートデスクトップで開いて設定を行います。

$ rdesktop 192.168.xxx.xxx

ブラウザ(Netsurf)を開いてアドレスに「localhost:631」と入力します。

Cups-1

上の方の「Administration」を開きます。

cups-2

右下の

  • Share printer connected to this host
  • Allow printing from the Internet
  • Allow remote administration
  • Allow users to cancel any job

にチェックをつけて、下の「Change Setting」を押します。
(どうせルータで自宅外からのパケットは叩き落とされるので「Allow printing from the Internet」も許可しちゃいます)

cups-3

その後、リモートログインしたシェルでCUPSを再起動します。

$ sudo service cups restart

・・・が、設定が反映されません・・・。(泣)

仕方がないので、設定ファイルを直接編集します。

$ sudo vi /etc/cups/cupsd.conf

途中の、

# Only listen for connections from the local machine.
Listen localhost:631
Listen /var/run/cups/cups.sock

の真ん中の「localhost:631」を「631」だけにします。

さらに、もう少し下の方にある<Location>と<Location /admin>の部分を以下のように修正します。

# Restrict access to the server...
<Location />
Order allow,deny
Allow @LOCAL
</Location>
# Restrict access to the admin pages...
<Location /admin>
Order allow,deny
Allow @LOCAL
</Location>

その後、CUPSを再起動します。

$ sudo service cups restart

これでローカルマシンから「IPアドレス:631」で管理画面にアクセスできます。

同様にプリンタの共有とインターネットからの印刷の許可、ジョブキャンセルの許可を設定します。

cups-4

うーん、やっぱり設定できません。

どうも、ユーザーがlpadminグループに入っていないといけないようなので、

$ sudo adduser pi lpadmin
Adding user `pi' to group `lpadmin' ...
Adding user pi to group lpadmin
Done.
$

とします。

これでブラウザから設定が変更できるようになりました。

4.プリンタの追加

Web管理画面から「プリンタの追加」を押します。

CUPS-10

 

ローカルプリンタのBrother HL-2240Dを選択して、「続ける」を押します。

CUPS-11

適当に場所を記入し、共有にチェックを入れて続けます。

CUPS-12

ドライバは存在しないのでとりあえずHL2140のPCL5eドライバを選択しておきます。

CUPS-13

デフォルトオプションを適当に設定しておきます。

CUPS-14

設定ができました。

この状態でPC上のUbuntuでプリンタを開くと、RaspberryPi上のプリンタが見えるようになっていました。

・・・・がしかし、テスト印刷を1枚試してみたところ明らかに汚いです。

さらに2枚目以降のテスト印刷はエラーが出るばかりで印刷すらできません・・・。

ブラザーのLinux用プリンタドライバのインストールも試してみましたが、途中で微妙なエラーがでていることと、テスト印刷してもジョブを抱えたままで出力されませんでした。

・・・・結局、諦めて元のAthlon5350マシンに接続を戻しました(泣)

いまさらH8-300開発環境を構築してみたけど・・・

$
0
0

いまさらですが、余っているH8/3664ボードを何かに使おうと思って、開発環境を調査してみました。

1.環境

VMware上の Lubuntu14.04.2をターゲットにします。
OSをインストールしたら、build-essentialパッケージをインストールした後、VMware-Toolsをインストールします。

2.Cコンパイラ

いまさらアセンブラもないので、Cコンパイラを探します。
synapticでh8を検索すると、binutils-h8300-hmsとgcc-h8300-hmsが見つかります。これらをインストールします。これらをインストール後、バージョンを確認すると以下のようになっていました。

~$ h8300-hitachi-coff-gcc -v
Reading specs from /usr/lib/gcc/h8300-hitachi-coff/3.4.6/specs
Configured with: ../configure coff
Thread model: single
gcc version 3.4.6
~$

3.書き込みツール

昔、三岩さんが作られたものと思われるツールが sourceforge にあがっていましたのでコンパイルしてみます。説明では先頭の4行を環境に合わせて修正してからコンパイル、と書いてありましたが、はじめからLinuxのみが#defineされていました。

~$ mkdir H8tools
~$ cd H8tools/
~/H8tools$ wget mes.sourceforge.jp/h8/h8write.c
--2015-xx-xx xx:xx:xx--  http://mes.sourceforge.jp/h8/h8write.c
mes.sourceforge.jp (mes.sourceforge.jp) をDNSに問いあわせています... 202.221.179.22
mes.sourceforge.jp (mes.sourceforge.jp)|202.221.179.22|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 70666 (69K) [text/x-csrc]
`h8write.c' に保存中

100%[======================================>] 70,666       128KB/s   時間 0.5s 

2015-xx-xx xx:xx:xx (128 KB/s) - `h8write.c' へ保存完了 [70666/70666]

~/H8tools$ gcc h8write.c -o h8write
h8write.c: In function ‘error_print’:
h8write.c:732:4: warning: format not a string literal and no format arguments [-Wformat-security]
    fprintf(stderr,message[error_code]);
    ^
h8write.c:733:4: warning: format not a string literal and no format arguments [-Wformat-security]
    if ( s_message != NULL ) fprintf(stderr,s_message);
    ^
h8write.c:737:4: warning: format not a string literal and no format arguments [-Wformat-security]
    fprintf(stderr,message[error_code]);
    ^
h8write.c:738:4: warning: format not a string literal and no format arguments [-Wformat-security]
    if ( s_message != NULL ) fprintf(stderr,s_message);
    ^
h8write.c:742:4: warning: format not a string literal and no format arguments [-Wformat-security]
    fprintf(stderr,message[error_code]);
    ^
h8write.c:743:4: warning: format not a string literal and no format arguments [-Wformat-security]
    if ( s_message != NULL ) fprintf(stderr,s_message);
    ^
~/H8tools$

Warningがたくさん出ましたが、実行ファイルは生成されました。

4.コンパイルテスト

Strawberry LinuxのWebサイトからLED点滅サンプルを持ってきてコンパイルしてみました。

$ wget strawberry-linux.com/h8/h8led-0.1-20020706.tar.gz
$ tar xvfz h8led-0.1-20020706.tar.gz
$ cd h8led
$ make clean
$ make

・・・が、-lc がないと言って怒られます。探してみると、どこにもH8用のlibc.aがありません。これは libc.a がないことを意味していますので、newlibをインストールすることにしました。

5.newlibのインストール

組み込み用のlibcであるnewlibをコンパイルします。
その前に、まずgitからインストールです。

~$ mkdir newlib
~$ cd newlib/
~/newlib$ sudo apt-get install git
~/newlib$

さらに、newlibのソースを取ってきます。

~/newlib$ git clone git://sourceware.org/git/newlib-cygwin.git

このままコンパイルすると、「makeinfoがない」といって怒られますので、synapticでtexinfoパッケージをインストールして、別のターミナルを新規に開いてから configureスクリプトを走らせて、make、make install します。

~/newlib/newlib-cygwin$ ./configure --target h8300-hitachi-coff
~/newlib/newlib-cygwin$ make
~/newlib/newlib-cygwin$ sudo make install

libc.a、libg.a、libm.a が /usr/local/h8300-hitachi-coff/lib の下にインストールされました。

6.改めてコンパイルテスト

よくみると、さらにはMakefileでライブラリパスが設定されていなかったので、これを修正してみたのですが、今度は互換性のないlibc.aをスキップしました、となってしまいました。

~/H8sample/h8led$ make
h8300-hms-gcc -O -mh -g -mrelax -mint32 -DH8_3664 -T h8-3664.x -L /usr/local/h8300-hitachi-coff/lib -nostdlib 3664crt0.S  led.o -o h8led.exe  -lc -lgcc
/usr/lib/gcc/h8300-hitachi-coff/3.4.6/../../../../h8300-hitachi-coff/bin/ld: 互換性のないを /usr/local/h8300-hitachi-coff/lib/libc.a スキップしました (-lc を探索している時)
/usr/lib/gcc/h8300-hitachi-coff/3.4.6/../../../../h8300-hitachi-coff/bin/ld: cannot find -lc
collect2: ld returned 1 exit status
make: *** [h8led.exe] エラー 1

確か、gccのクロスコンパイラをビルドするときにはライブラリ(libcなど)なしで一度コンパイラをビルドしてライブラリをビルド、その後再度コンパイラをビルドし直す手順になっていたかと思うのですが、そのへんがちゃんと行われていないのかもしれません。(ググってもnewlibのバイナリがなく、ソースからビルドするしかなさそうだ、という時点で嫌な予感はしたんですけどね)

7.まとめ

・・・うーむ。ぐぐってみると、同じ問題がはるか昔に出ていたようです。
https://bugs.launchpad.net/ubuntu/+source/gcc-h8300-hms/+bug/342667
ここを見る限り、リポジトリにあってSynapticでインストールできても結局メンテナンスされてなくて使い物にならないようで、そのままずーっと放置されているようですね。

コンパイラごとソースからビルドすれば動く組み合わせもあるかもしれませんが、そこまでして動かす元気はありません。今でも秋月ではH8/300のボードを売ってますが、みなさんどうやって使ってるのでしょう?(メンテナンス目的?教材用?)
いまでもcygwin + gcc2.95.3ベースの環境をCD-Rで売ってるようですが、いまさらのような気がします。

H8は比較的電子工作用途に受け入れられた数少ない日本製マイコンですが、この状況ではとても使う気にはなれません。かといって、いまさらR8Cとか78Kとかってのもないでしょうから、素直に諦めるほうが良さそうです。

さて、余ってしまったボード、どうしよう・・・。

LinuxMint17.2でUSBメモリ環境を構築

$
0
0

久々にUSBメモリにLinux環境を構築しました。作業的には慣れたもののはず・・・と思ったのですが、すっかり忘れてました。なので、作業ついでにメモを作り直します。

1.環境

PCはCore2Duo E7400(VT-x未対応版。E7400はVT-xは途中から対応しているので、初期のものはVT-xがOFFになっていて仮想化支援機能が動かないんです。)で、メモリは4GB、HDDにはWindows8.1が入ってますが、全然使ってない。
LinuxMint17.2をインストールするUSBメモリはSanDisk Cruzer Fit 16GB。遅いUSBメモリですが、小さいので邪魔になりません。

2.インストールイメージの準備

とりあえず、LinuxMint17.2の32bit版をダウンロード。UNetBootinで別の4GBのUSBメモリにインストールイメージを書き込みました。(ライブCDの代わりとして使うならこのままでもいいんでしょうが・・・)
他の環境ではUSBイメージライタを使ってUSBメモリに書き込む、あるいはDVD-Rにイメージを焼いて・・・でも構わないでしょう。ただ、SATAを禁止する関係で内蔵DVDROMドライブは使えないので、DVDROMに焼いて起動する場合には外付けのUSB-DVDドライブが必要になります。

3.インストール環境のブート

4GBのUSBメモリを接続して、電源ON。BIOSを起動して

  • SATAインタフェースをDisable(内蔵HDDを見えなくする)
  • 起動順序をUSB-HDDを最初にする(しなくてもいいと思うけど、癖で設定)

とします。CTRL-ALT-DELでリブートさせて、USBメモリからブートさせます。ブート時にUNetBootinのメッセージが出ますが、DefaultのままでLinuxMint17.2のライブイメージを起動します。

4.インストーラの起動

ライブ環境起動後にターゲットのSanDisk Cruzer Fit 16GBを接続して、インストーラをダブルクリックして起動。

5.パーティションの設定とOSインストール

パーティションの設定はカスタムにしました。メモリ4GBあるのでSWAPパーティションがなくても問題ありません。なので、パーティションテーブルを初期化して、1パーティションをext4で作成、マウントポイントは / にします。インストールを継続しようとすると、「スワップパーティションがないよ」と警告されますが、そのまま継続。あとはインストーラの指示通りにインストール。ブートローダーは /dev/sdb (HDDが認識されていなければ、これがSanDisk Cruzer Fit 16GBのはず)に書き込みます。

6.再起動とアップデート

インストールが完了したら、インストーラの指示に沿って再起動する方を選択します。再起動したら、アップデートマネージャを起動して、ひたすらアップデートします。

7.設定ファイル編集による追加設定

1)内蔵HDDを見えなくする

SATAドライバを禁止して内蔵HDDを見えないようにします。SATAで接続されているDVDROMドライブも見えなくなってしまいますが、代わりに内蔵HDDを誤って書き換えてしまったりする可能性が大幅に減少します。作業としては、 /etc/default/grub を開いて、 「GRUB_CMDLINE_LINUX_DEFAULT」の起動時オプションに「libata.force=disable」を追加します。
修正後は、

$ sudo grub-mkconfig -o /boot/grub/grub.cfg

としてgrub.cfgファイルを自動生成させて反映させます。
この後、BIOSのSATA禁止を解除して再起動して、PCの内蔵HDDが見えないことを確認します。

2)USBメモリへのアクセス高速化

HDDアクセス時のアクセス時刻の記録を停止してアクセスを減らすとともに、/tmpをtmpfsにより確保してHDDへのアクセスをなくします。/etc/fstab をのもとからある行にnoatimeオプションを追加し、さらにtmpfsで始まる行を追加します。

# / was on /dev/sda1 during installation
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 noatime,errors=remount-ro 0 1
# tmpfs
tmpfs /tmp tmpfs defaults,noatime 0 0

3)システム時計が狂うのを直す

/etc/default/rcS の中の「UTC=yes」を「UTC=no」に修正します。

ここで一旦再起動します。

8.その他、追加設定

  1. 背景の変更
    明るい背景が苦手なので、適当な暗めの背景に変更しました。
  2. テーマの変更
    青系の色が好きなので、Mint-X-Tealにテーマを変更しました。
  3. FireFoxの設定変更
    ・起動時のホームページを自分の設定に修正
    ・履歴の記憶を「一切記憶させない」に変更
  4. Chromeブラウザのインストール・設定
    Chromeのダウンロードページへ行ってDebian32bit版をダウンロード、Package Installerでインストール。インストール後、「アプリケーション」⇒「インターネット」⇒「Google Chrome」で起動できますが、自分はまずは右クリックして「プロパティ」を表示し、コマンドの部分に「–incognito」のオプションを追加して、常にプライベートモードで起動するようにしています。
  5. 日本語設定
    日本語の設定を忘れていました。「設定」⇒「言語」でLanguage/RegionともにJapanese,Japan UTF-8になっていることを確認して、System localeのところで「システム全体に適用する」を押します。
    上のほうにある「Input Method」を押して、「Add support for IBus」を押してIBusをインストールします。インストール完了後、上の方にある「Input Method」をNoneからIBusに変更します。
    変更したら一旦ログアウトしてログインし直すと、右下にキーボードのアイコンが出てくるので、これを左クリックしてMozcを選択します。テキストエディタなどを開いてみると日本語入力できるはずです。

こんなところでしょうか。

あとは、好きなアプリをインストールするなり、何なりすればと思います。

64bit環境にMPLAB-Xをインストールする

$
0
0

故あって、Ubuntu17.1 MATE 64bit環境に16bitPICをターゲットとしてMPLAB-Xをインストールしました。

ダウンロードしたMPLAB-Xのtarファイルを展開すると、シェルアーカイブがでてくるので、これをスーパーユーザー権限で実行しても、

~$ sudo ./MPLABX-v3.20-linux-installer.sh
64 Bit, check libraries
Check for 32 Bit libraries
These 32 bit libraries were not found and are needed for MPLAB X to run:
libexpat.so
libX11.so
libXext.so

となって、32bitライブラリをインストールするよう要求されます。・・・が、ここで表示されているものを素直にapt-getでインストールしようとしてもダメなのです。

じゃあ、どうしたらいいのかについては、こちらに記載があります。

~$ sudo apt-get install libc6:i386 libx11-6:i386 libxext6:i386 libstdc++6:i386 libexpat1:i386
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  gcc-4.8-base:i386 gcc-4.9-base:i386 libgcc1:i386 libxau6:i386 libxcb1:i386
  libxdmcp6:i386
提案パッケージ:
  glibc-doc:i386 locales:i386
以下のパッケージが新たにインストールされます:
  gcc-4.8-base:i386 gcc-4.9-base:i386 libc6:i386 libexpat1:i386 libgcc1:i386
  libstdc++6:i386 libx11-6:i386 libxau6:i386 libxcb1:i386 libxdmcp6:i386
  libxext6:i386
アップグレード: 0 個、新規インストール: 11 個、削除: 0 個、保留: 12 個。
5,061 kB のアーカイブを取得する必要があります。
この操作後に追加で 13.7 MB のディスク容量が消費されます。
続行しますか? [Y/n] 
(以下略)

ということで、パッケージ名の後ろに「:i386」をつける必要があったようです。わかってしまえばなんと言うことはないのですが、わからないと困りますよねぇ・・・。

ここをパスできれば、あとは再びシェルアーカイブを実行するとインストール完了です。併せて、XC16もダウンロードしたシェルアーカイブを実行してやると途中でライセンスファイル生成のためにNICのMACアドレスの確認ダイアログが出ますが、そのまま次へ進めてしまえばインストール完了です。

Raspberry Pi 3が秋月・千石に登場

$
0
0

すでに皆さんご存知のRaspberry Pi 3。無線(WiFi、BT)が載った関係で日本での発売が遅れていたようですが、秋月と千石に登場しました。

Screenshot from 2016-03-27 11:44:50

価格はどちらも税込み6200円。$35だと今のレートだと¥4,000くらい。秋月のRaspberry Pi 2の販売価格は¥5,600。Raspberry Pi 2より高いのは初物だからなのか、TELECの認証費用が割掛けされてるからなんでしょうかね。秋月の方はすでに在庫切れですが、千石の方は在庫切れではないようなのでポチッと注文してみました。いつ来るかな〜?

Raspberry Pi 2よりも倍速いって書いてあったような気がするので、ブラウザが中心ならPC代替として結構使えるようになるかもしれませんね。

Raspberry Pi 3をセットアップ

$
0
0

しばらく前に買ったけど動かしてなかったRaspberry Pi 3をセットアップしてみました。

1.ハマったポイント

Raspbianを使ってみたのだけど、32GBのMicroSDだと起動途中にパニックを起こす。2枚のMicroSDで同じ結果。結局、8GBのMicroSDだと問題なさそう。

 

2.設定した箇所

 

1)初期設定

起動すると自動的にグラフィカルログインした状態になるので、コンソールを開いて

$ sudo raspi-config

でコンフィギュレーション設定する。Expand FilesystemでファイルシステムをMicroSDカードいっぱいまで拡大、Change User Passwordでパスワード設定、Internationalization Optionsでロケールの設定、タイムゾーンの設定、WiFiの国設定を実施して終了する。再起動すると、ファイルシステム拡大が実行される。

デスクトップ環境のMenu→Preference→Raspberry Pi ConfigurationのLocalizetionで日本語キーボードを設定。

パスワードの設定が終われば、リモートログインできる。ネットワークにつないであれば、mDNSとsshデーモンが動いているので、リモートから

$ ssh pi@raspberrypi.local

とやると、sshでログインできる。(パスワード変更していない場合、初期パスワードはraspberry)

2)画面サイズ

画面サイズがVGAくらいのサイズをFullHDに拡大表示しかされなかったので、HDMIを強制的に表示させることにする。/boot/config.txtを修正。

hdmi_group=1
hdmi_mode=16

さらに、オーバースキャン表示を想定しているため、画面周囲が黒枠になって実質的なデスクトップが狭い。液晶モニタでは関係ないので、オーバースキャン対応を禁止する。同じファイルのdisable_overscanのコメントを外す。

disable_overscan=1

これでFullHDにピクセルバイピクセルで等倍表示されるようになった。

3)日本語化

$ sudo apt-get install fonts-vlgothic ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname

で日本語フォントをインストール。インストール後、デスクトップ環境のMenu→Preference→Raspberry Pi ConfigurationのLocalizetionでLocaleをLanguageをja、CountryをJP、Character SetをUTF-8に設定。OKを押していくと再起動を要求されるので再起動すると日本語になっている。

次の項のアップデート後、

$ sudo apt-get install ibus-anthy

として日本語入力をインストールする。再起動後、右上の「US」を左クリックして「日本語 – Anthy」にすると日本語入力ができる。

4)その他

$ sudo apt-get update
$ sudo apt-get upgrade

でアップデートをかけておくと基本的には完了。

$ sudo install synaptic

でsynapticパッケージマネージャをインストールして、Synapticから好きなソフトをインストールすればOK。
WebブラウザはFirefoxベースのiceweaselとその日本語言語パックのiceweasel-l10n-jaをインストールしました。

ブラウザとしては十分に動きます。Youtubeも720pのビデオも一応再生できるようになりました。さすがにコマ落ちが激しいのと、16bitカラーになっているのか、グラデーション部分にマッハバンドが出ますが。

miredoでIPv6を使ってみる

$
0
0

NATではないIPアドレスが欲しいのだけど、V4は無理・・・なので、トンネル越しのIPv6を試してみた。

といっても、LinuxMint18では非常に簡単で、SynapticでToredoのLinux実装らしいmiredoをインストールすると、ifconfigでteredoというデバイスが増えてIPv6が使えるようだ。

・・・が、再起動するといなくなっている。

$ sudo service miredo start

とすると復活するのだが。

調べてみると、起動中に “teredo-debian.remlab.net” というホスト名を解決できないために起きる既知の問題の模様。


AndroidタブレットをLinuxのサブディスプレイにする

$
0
0

外出時にノートPCで作業していると、1366×768の画面ではどうしても狭く感じます。・・・で、ぐぐってみたところ、AndroidをLinuxのサブディスプレイにする方法がある模様。どうやらVNCを使うようなので、やってみました。

環境は以下の通り。

  • サーバ側はLinutMint18 x64
  • クライアント側はNexus7(2012) + Android4.4.4

です。

作業にあたってはこちらのサイトを参考にさせていただきました。

1.Linux側(サーバ側)

Synapticでvnc4serverをインストールします。vnc4serverを使うのはSynapticにあるからです。

インストールしたらVNCサーバを起動します。

$ vncserver :1
You will require a password to access your desktops.
Password: ********
Verify: ********

起動したら接続用のパスワードを設定します。パスワードは8文字までで、8文字を超える長さの場合には最初の8文字が使われるようです。

2.クライアント側(Android側)

クライアント側はGoogle PlayストアでVNC viewerをインストール。

起動したら、接続先として「Linux側のIPアドレス:5901」、接続名を適当な名前を設定します。接続するとパスワードを聞かれるので、vncserverを起動する際に設定したパスワードを入力します。ポート番号の5901は5900に:1の1を足して5901となっています。

3.x2vncのインストール

Synapticでx2vncをインストールする。インストールしたら以下のようにして起動する。

$ x2vnc -shared -west localhost:1
x2vnc: VNC server supports protocol version 3.8 (viewer 3.3)
Password: ********

x2vnc: VNC authentication succeeded
x2vnc: Desktop name "(ホスト名):1 (ユーザー名)"
x2vnc: Connected to VNC server, using protocol version 3.3
x2vnc: VNC server default format:
screen[0] pos=1003
Xinerama detected, x2vnc will use screen 1.
x2vnc: pointer multiplier: 0.930491

として起動します。この状態でマウスは行き来できるようになっています。
が、ウインドウは行き来できません。ウインドウマネージャがいないような雰囲気です。しかし、サブディスプレイ側(Android側)ではコンソールウインドウが開いているので、そこでfirefoxを起動するとサブディスプレイ側にブラウザを開くことができました。とりあえずWebを参考にしながら何か作業したり、viやxedで設定ファイルを編集したりする分には十分です。

ここで一旦終了させます。

$ killall x2vnc
$ vncserver -kill :1

VNCのパスワードを変更します。

$ vncpasswd
Password: ********
Verify: ********

4.まとめ

インストールが完了したら、以下の手順で起動できます。

$ vncserver :1 -depth 15 -geometry 1280x800 -alwaysshared
$ x2vnc -shared -west localhost:1

画面サイズはNexus7(2012)の画面サイズです。Android側でフルスクリーンにしておけばちょうどよくなります。

IMG_20160809

サブディスプレイとして使っている様子はこんな感じです。USBケーブルは電源供給専用で、接続はモバイルルータ経由です。

普通にはadbで認識できないAndroid機を認識させる

$
0
0

通常のAndroid機は /etc/udev/rules-d/51-android.rules にベンダIDを追加してやるとadbで操作できるようになるのですが、coviaのFLEAZ F4s/F4s+は認識することができません。いろいろ試してみたところ、わかってきたことをメモしておきます。環境は LinuxMint18 MATE edition 64bit です。

まずはUSBのデバイスIDを調べます。(必要なもの以外は結果から削除しています)

$ lsusb
Bus 001 Device 016: ID 0a5c:e688 Broadcom Corp.

BroadcomのチップのベンダIDそのままのようです。(これはF4sのもの。F4s+はデバイスIDはe681になるようです)
とりあえず、/etc/udev/rules-d/51-android.rules にベンダIDを記載して再読み込みさせてみます。

$ cat /etc/udev/rules.d/51-android.rules 
SUBSYSTEM=="usb", ATTR{idVendor}=="05ac", MODE="0666", GROUP="plugdev"
$ sudo udevadm control -R

この状態で、USBを抜き差ししてから adb コマンドを叩いてみても、

$ adb devices
List of devices attached

となって、デバイスが見つかりません。
いろいろググると、~/.android/adb_usb.ini にベンダIDを書くとよい、というような記載をいくつか見つけたので試してみます。

$ cat .android/adb_usb.ini 
0x0a5c

$ sudo service udev restart
$ adb kill-server
$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
???????????? no permissions

状況が変わりました。この状態で TCP/IP 接続でデバッグする設定にしてみます。

$ adb tcpip 5555
error: insufficient permissions for device

パーミッションで蹴られてしまいました。ルート権限で試してみます。

$ sudo adb kill-server
$ sudo adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
$ adb devices
List of devices attached 
F4Sxxxxxxxxx unauthorized

$ sudo adb tcpip 5555
error: device unauthorized. Please check the confirmation dialog on your device.

端末上にデバッグ接続可否のダイアログが出ていたので、許可してみます。

$ adb tcpip 5555
restarting in TCP mode port: 5555
$ adb install xxxxxxx.apk
2460 KB/s (261419 bytes in 0.103s)
 pkg: /data/local/tmp/xxxxxxx.apk
Success

となって無事にインストールできました。

改めて /etc/udev/rules-d/51-android.rules を削除してやってみました。
どうも、/etc/udev/rules-d/51-android.rules は必要ないようです。
一般ユーザー権限では、

$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
???????????? no permissions

となってパーミッションエラーになりますが、通常の Android機はルート権限で adb server を起動すると認識できるようです。

$ sudo adb kill-server
$ sudo adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
$ sudo adb tcpip 5555
restarting in TCP mode port: 5555

さらに、今回の covia FLEAZ F4s/F4s+ のようになにもしないと認識しない機種でも、 ~/.android/adb_usb.ini にベンダIDを書いてやれば認識できるようです。

$ echo "0x0a5c" > ~/.android/adb_usb.ini
$ cat ~/.android/adb_usb.ini 
0x0a5c
B ~ $ adb devices
List of devices attached

$ sudo adb kill-server
$ sudo adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
$ adb devices
List of devices attached 
F4Pxxxxxxxxx device

$ sudo adb tcpip 5555
restarting in TCP mode port: 5555

ここで F4s+ を外して F4s を接続してみます。

$ adb devices
List of devices attached 
F4Sxxxxxxxxx device

$ sudo adb tcpip 5555
restarting in TCP mode port: 5555

となり、無事に認識しました。

WordPressでログインできなくなった!

$
0
0

WordPressでログイン認証のセキュリティ強化にCAPTCHAを入れようと、プラグインから「SI CAPTCHA Anti-Spam」をインストールしてみました。

設定でログイン画面にキャプチャを入れて、ログアウトしてログインしなおしたらCAPTCHAが表示されていません(!)。

しかも、ログインできない!!

で、調べてみると、「SI CAPTCHA Anti-Spam」には、GDというライブラリが必要なので、

$ sudo yum -y install gd php-gd

としてインストールを試みるも、さくらのVPSにインストールしたPHPのバージョンが合わずphp-gdがインストールができません。

で、四苦八苦した挙句の解決方法は、「プラグインディレクトリの名前を一時的に変更する」という方法でした。

/home/(ユーザー名)/public_html/wordpress/wp-contents/plugins にカレントディレクトリを変更して、プラグインの名前の付いたディレクトリの名前を一時的に変更してやると、無事にログインできました。

ログインしたら、ディレクトリの名前を元に戻して、プラグインを停止・削除しました。

いや、焦りました・・(^^;

Pine64を買ってみた

$
0
0

秋月に Pine64 A+ 1GB が入っていたので、買ってみました。価格はRaspberry Pi 3よりも安い2,980円。といっても、Pine64 A+はBluetoohもWiFiもないのでちょっと価格差的には微妙かもしれない。一緒に長さ15cmのmicroUSBケーブルとHDMIケーブルを購入。

早速、秋月のページにある公式サイトへのリンクからUbuntu Mateのイメージをダウンロードして、ddコマンドで適当な8GBのMicroUSBに書き込んでMicroUSBコネクタに挿入、HDMIケーブルでディスプレイに接続、マウスとキーボードを接続、イーサケーブルをルータに接続して、MicroUSBコネクタを挿して電源投入。・・・が、電源LEDは点くものの、うんともすんとも言わない。
MicroUSBケーブルを1.5mの長いものから購入した15cmの短いものに変更したら起動した。結構電流を食うので電圧降下しているのかもしれない。

起動すると、グラフィカルログイン画面になるので、ユーザー名: ubuntu 、パスワード: ubuntu でログインする。当然かもしれないけど、英語モードで起動。ターミナルを開いたりしてみたが結構軽快に動くようである・・・が、やっぱりストレージがMicroSDなのでストレージアクセスを伴うものはちょっともたつく。

とりあえず、アップデートをかけてみる。

$ sudo apt-get update<br />$ sudo apt-get upgrade

を試してみるが、何かパッケージの不整合を起こしているみたいで、追加でコマンドが要る模様。指示に従って、以下の通り試してみた。

$ sudo dpkg --configure -a<br />$ sudo apt-get install -f<br />$ sudo apt-get upgrade

でとりあえず一通りはアップデートができた模様。

System ⇒ Preferences ⇒ Hardware ⇒ Keyboard ⇒ Layout で Add を押して、キーボードレイアウトで Country で Japan を選んで Add を押す。レイアウトの順位を Japanese を一番上にして Close を押したら、キーボードレイアウトが日本語になった。

System ⇒ Preferences ⇒ Personal ⇒ Language Support を選択すると、The language support is not installed completely と出るので、Install を押す。パスワードが聞かれるので入力すると、language support をインストールし始めた。しばらく待つと、インストール完了。
この状態だと英語のみなので、 Install/Remove Languages … を押して、Japaneseにチェックを入れてApplyを押すと、フォントやfcitx、libreofficeのモジュールなどをダウンロード&インストールし始めた。
完了したら、Language for menus and windows のリストの一番下にある日本語を一番上にドラッグ&ドロップ、Keyboard input method system を fcitx に設定して、Apply System-Wide をクリック、再度パスワードを聞かれるので入力。
次に Regional Formats タブを選んでこちらも日本語を選択して Apply System-Wide をクリック。完了したら Close を押して、一旦ログアウトしてログインし直すと、日本語化が完了している。

これだけだと、日本語入力で漢字キーが使えなかった。キーボードの選択で言語別で日本語を選択しておく必要があったようで、設定を修正。右上のキーボードのアイコンを右クリックして「設定」を選択すると、キーボードが英語になっているので、「+」を押して日本語キーボードを追加、順番を一番上に持ってくる・・・が、日本語入力はできない。

とりあえず、

$ sudo apt-get install synaptic

で手慣れた Synaptic をインストール。

Synaptic パッケージマネージャから ibus-anthy をインストールして、システム⇒設定⇒ユーザ向け⇒言語サポートで、キーボード入力に使うシステムとして IBus を選択して再起動後、右上のキーボードアイコンから日本語−Anthyを選択したところ、日本語入力ができるようになった。

とりあえず、使えるようになった。

 

秋月のLPC11U35マイコンボードを動かしてみた

$
0
0

久しぶりに秋月へ行ったら、「USBメモリにファイルを書き込むのとほぼ同様の手軽さでプログラムを書き込むことができます」という触れ込みのマイコンボードが安く売っていたので、買ってみました。

で、動かしてみるべく、Linuxマシン(環境はいつものLinux Mintです)へ接続すると、確かにマスストレージデバイスとして認識します。で、秋月のWebサイトにある動作確認用ファームウェアを書き込んで、リセットしてみても、再びマスストレージデバイスとして認識されて、LEDが点滅する気配がありません。

mbedとしても動作する、というのでサンプルプログラムを作って同様に書き込んでみてもサッパリです。linuxではドラッグアンドドロップでの書き込みはうまく行かないのかと思って、コマンドラインで cp コマンドでコピーしてみてもダメです。

で、ぐぐってみたら、どうやら linux ではそもそもファイル書き込みではうまくいかないようで、こちらの情報によると先頭の4ブロック(2キロバイト?)を削ってddで書き込むとうまく行くようです。

ただ、デバイスファイルなんていろんな要因で変わってしまうので、毎回やるのは面倒ですし、事故のもとなので、pythonのスクリプト化しました。

lsblkコマンドで見た時に、転送方法が usb で、モデルが’LPC1XXX IFLASH  ‘となっているデバイスファイルを探して、そのデバイスファイルをアンマウントして、ddコマンドで書き込むだけです。スクリプトファイル⇒mbedにlinuxから書き込むためのスクリプト

ルート権限が必要なのは変わらないので、sudo 付きで python スクリプトを実行します。

$ sudo python ./write_mbed.py firmware.bin 
mbed device is /dev/sdc
umount /dev/sdc
dd if=firmware.bin of=/dev/sdc seek=4
16+1 レコード入力
16+1 レコード出力
8456 bytes (8.5 kB, 8.3 KiB) copied, 0.387457 s, 21.8 kB/s

みたいな感じで使います。(途中の umount とか dd コマンドの行はこのスクリプトの処理内容を表示しているだけで、書き込みに必要な操作は最初の1行目だけです)

 

Viewing all 42 articles
Browse latest View live