高森太郎のノート

このページについて

このページは、高森太郎がノート的に何でも書くページです。
主に勉強したこと、自分が知った知識や方法などを中心に、適当に、メモ的に、書き留めてます。

2016年11月15日 (火曜日)

[]Windows 7で正しいパスワードを入れても「ユーザー名またはパスワード違う」と言われる時の対処 Windows 7で正しいパスワードを入れても「ユーザー名またはパスワード違う」と言われる時の対処 - 高森太郎のノート を含むブックマーク はてなブックマーク - Windows 7で正しいパスワードを入れても「ユーザー名またはパスワード違う」と言われる時の対処 - 高森太郎のノート

結論から言うと

  • ログインできるアカウントでログインできないアカウントのパスワードを削除(パスワード無しに)
  • 「ユーザーは次回ログオン時にパスワードの変更が必要」のチェックを入れる
  • 当該のユーザでログインする。
    • パスワード変更画面が出なかったら、もう一度「ユーザは次回ログオン時にパスワードの変更が必要」のチェックを入れてログアウト
  • パスワード変更画面が出たらパスワードを入れる

これで正常に戻る。

原因は不明。

経緯

ドメイン環境ではない。

中古で、既に初期セットアップが終わっておりUserと言うパスワードがないアカウントが設定されているパソコンをセットアップしていたのだが、その最中に新たなユーザを作った所、何故かただしパスワードを入れても「ユーザー名またはパスワードが違う」と言われてログインができなくなった。

パスワードを削除するとログインそのものは可能で、その状態で「aaaa」など絶対に打ち間違えないパスワードにしても拒否られる状態になった。

やって効果が無かったこと

セーフモードで起動してても駄目だった。

ユーザーアカウントを削除して再作成しても駄目だった。

コマンドからパスワードを設定しても駄目だった。

教訓

こういう謎の挙動は疲れる。

新しいアカウントを作っても駄目だと言うことはどっかに問題があるのだろうが原因は不明。

2016年11月01日 (火曜日)

[]GIMPでラインフォントを太らせるには GIMPでラインフォントを太らせるには - 高森太郎のノート を含むブックマーク はてなブックマーク - GIMPでラインフォントを太らせるには - 高森太郎のノート

CAD系のソフトは、太さを持たない線で書かれた「ラインフォント」というのが伝統的に使われている。これはペンプロッターのころの名残とかいろいろな歴史的経緯があるのだが、これの問題は、ラインなので太さを持たず、高解像度にしても「1ピクセル」で描画されてしまうと言うこと。

そうするとどうなるかというと、画像を高解像度にすればするほど、潰れて埋もれてしまうので、それをオープンソースの画像編集ソフトで太らせる。

前提条件

太らせたい画像は、可逆圧縮で出力をすること。ビットマップ、可逆圧縮PNG、CAD系だとTIFFもあるかと。

ここでラスター系のデータで出せる場合には、Incscapeの出番になると思うのでこれとはちょっと違う。

ここで非可逆系圧縮(jpegなど)で出すと、圧縮モアレの影響で上手く範囲選択ができない。


GIMPでの操作

読ませたら、まず文字がある部分を範囲でざっくり選択する。その後、色選択ツールで文字の色を選択して、文字の所だけを「Ctrl」キーと「Shift」を押しながら選択すると、指定した範囲の文字の色の部分だけが選択できる。

次に、メニューの「選択」の「選択範囲の拡大」で拡大する。このとき0.5ピクセルとか微妙な太さで何回か試した方がいい。

その上で、範囲選択に対して、塗りつぶしツールで文字の色で塗りつぶすと、その範囲が黒く塗られて太くなる。

機械的に太くしていくので、複雑な図形は不自然に太ったりする点には注意。

結論:ラインフォント固定で任意のフォントが選択できないソフト、もういい加減になんとかしてください

歴史的経緯はあると思うのだが、もう普通のフォント喰わせられるようにしてもいいでしょ。なんとかしてください。

2016年10月08日 (土曜日)

[]コマンドプロンプトを任意のフォルダをカレントディレクトリにして開始するには コマンドプロンプトを任意のフォルダをカレントディレクトリにして開始するには - 高森太郎のノート を含むブックマーク はてなブックマーク - コマンドプロンプトを任意のフォルダをカレントディレクトリにして開始するには - 高森太郎のノート

背景

コマンドラインアプリケーション用のファイルを特定のフォルダに突っ込んであって、そこからの状態でスタートしたい、と言う時がある。

コマンドプロンプトを起動すると、すでにそのフォルダのプロンプト(例:C:\hoge\fuga\> )が出た状態で開くという事だ。

これ実はかなり簡単にできるんだが、微妙にやり方を忘れるのでメモ。

やり方

まずコマンドプロンプトのショートカットを作る。

次に、エクスプローラを開き、目的のフォルダのフォルダのファイルパスをコピーしたら、それをそのショートカットのプロパティ「作業フォルダ」欄に入れる。

ショートカットは作成するとそのプログラムが入っている場所が作業フォルダになっているが、こうすることでいきなりその場所からスタートできる。

パスや環境変数が通った状態のコマンドプロンプトを呼び出したい

システムの環境変数に書き込むほどじゃないのだが、そのセッションだけに変数が入った状態でコマンドプロンプトを出したいと言う場合がある。また、コマンドプロンプトで作業を開始する前に特定の作業をやらせてから入りたいという場合もあるだろう。

コマンドプロンプトを開いてからバッチファイルを実行しても良いのだが、いきなり起動する方法もある。

この場合は、簡単なバッチファイルを作る。キーワードは二つ。

コマンド説明
cd /d %~dp0バッチファイルが保存されているディレクトリにカレントディレクトリを移す
cmd.exe /Kコマンドプロンプトを呼び出す。本来は/K スイッチはその後にコマンドを記述するのだが、何も指定しないとそのまま空になる。
バッチファイルの最後にexitの代わりにかけば、バッチファイルの内容が終了してもコマンドプロンプトのウインドウが残る

と言う事で、cd /d %~dp0を含むパスを通すとかそういう内容を書いたバッチファイルを作り、最後をcmd.exe /Kで終わらせると、バッチファイルの内容を実行した後で、バッチファイルが存在するディレクトリのコマンドプロンプトが開いたまま残る。

さらにこれらを組み合わせて、前記のショートカットの cmd.exe に続き 引数でバッチファイルを絶対参照で渡しつつ「作業フォルダ」を任意に設定すると言う方法もある。

何に使うの?

ffmpegのディレクトリへのパスと、よく使う引数をあらかじめ変数で仕込んだ上でコマンドプロンプトを開くバッチファイルを作っておき、変換させる、とか、GUIは返って効率悪いけど、手打ちでやるのもなあ、と言う作業をちょっとずつ楽にできる。

[]FreeNAS 9.10.1 U1から9.10.1 U2 にアップグレードしたらGURB errorになり起動できず→CD-ROMから改めてアップグレードで正常に FreeNAS 9.10.1 U1から9.10.1 U2 にアップグレードしたらGURB errorになり起動できず→CD-ROMから改めてアップグレードで正常に - 高森太郎のノート を含むブックマーク はてなブックマーク - FreeNAS 9.10.1 U1から9.10.1 U2 にアップグレードしたらGURB errorになり起動できず→CD-ROMから改めてアップグレードで正常に - 高森太郎のノート

標題がほぼすべてなのだが。

要約。

Web GUIでアップデートしたところ失敗した。起動してこない。

結論から言うと、改めてCD-Rからアップグレードをかけたところ正常に起動できた。

症状

FreeNAS 9.10.1 U2が出ていたので、FreeNAS 9.10.1 U1からアップグレードしたところ、いつまでたっても起動してこない。

コンソールでみると

Welcome to GRUB!
error : attempt to read or write outside of disk 'hd1'
grup rescure > 

と言うことで止まっていた。ぐぬぬ…。

修復の方法

改めて最新のFreeNASのISOインストーライメージをFreeNAS公式サイトからダウンロードしてきて、それでブートし、インストーラーから「アップグレード」を選んで手動でアップデートしたところ、正常に起動できた。

今回の方法が駄目だったときに考えられる復旧オプション

FreeNASの良さとして、きちんと設定ファイルをバックアップしてさえおけば*1きちんと設定ファイルをバックアップしてさえおけば(大事なことなので2回)最悪システム領域がUSBメモリの破損などで完全におかしくなっていたとしても、ゼロから新しい領域にセットアップして、設定を書き戻してやれば元に戻るというところがある。普通だったらシステム領域が飛びました等と言うと大惨事で復旧に時間がかかるわけだが、FreeNASの場合はUSBメモリさえあれば最悪でも1時間弱で復旧が可能。ありがたいです。制作者の方に感謝*2

更に言えば、ZFSは今となってはかなり普及しており、非常に良くできているため、他のFreeNAS搭載のマシンや、他のZFS対応OS(最近だとUbuntuが16.04 LTSでネイティブ対応した)にくっつけて「zpool inport」さえできればほとんどデータ復旧はできるはず。

試したが駄目だったこと

GRUBのコンソールから、lsで探って、と言うLinux式のやり方を試そうとしたが、FreeNASのブート領域はZFSになっているためか、どうも手が出ない感じがある。

もしかしたらやる方法があるかも知れない。

原因?

いくつか推測がたつ。

  1. ブートローダーのアップデートに失敗してブートローダーの領域が破壊された可能性。
    • ただ、今回に限ってはこれは常に発生しうるがそれほどよくは起きないかなー、と思われる。
  2. はUSBメモリが寿命、
    • だが、ブート領域はRAIDZ1でミラーリングしており、こちらもそう簡単に駄目にならないので、可能性
  3. ググっていて、このエラーはBIOSの対応状況で、読めない領域にブート領域が入るとなることが起きる?とか。
    • 他のOSのOSアップデートの時に起動できなくなったケースの話。このFreeNAS鯖のハードウエアはHP ML110 G6なので、もう気がつけば5年近く使っている。そこに16GBGBのUSBメモリ2本なのだが、FreeNASはアップデートしていくと古い領域がスナップショットとしてのこすことで安全にアップデートできるという仕組みになっている。これが上手くならなかたったのかなあ、とも想像した。CD-ROMからアップデートすると、今までのスナップショット領域が全部一度削除されて、CD-ROMでインストールしたバージョンのみになる。

教訓

  • FreeNASでアップデートしてしばらくし、動作確認がとれたら、古いブートイメージは定期的に消した方がよさそう。

と言う他に、

  • バックアップはできるだけ頻繁にとりましょう。
  • 出先からVPN接続している環境でアップデートとかそう言う馬鹿な真似はやめましょう。手も足も出なくなります。
  • アップグレードするときはせめて確実に設定ファイルのバックアップは取っておきましょう。

と言う基本的なところも…。最近あんまりにも順調に動いていたので、設定ファイルのバックアップを確認したらもう1年近く前にとったっきりで焦った。

*1:実は今回の場合、最後に設定バックアップをとったのが1年近く前とかですごい焦った。順調に動きすぎて全く意識していなかった。あぶねー。いやあ、俺はアホです。業務ではしつっこいほどバックアップとるのに

*2:と言うか日本でもFreeNAS専用アプライアンス売ったらどうですか。FreeNASをベースにしたなんか妙な奴は販売されているみたいなので、本家が乗り出してきたら売れると思うんだけれども。どこか日本の代理店声かけたらどうか。って毎回書いている

2016年10月02日 (日曜日)

[]netperfを使用して、連続である期間(24時間の間、1時間毎とか)測定するには netperfを使用して、連続である期間(24時間の間、1時間毎とか)測定するには - 高森太郎のノート を含むブックマーク はてなブックマーク - netperfを使用して、連続である期間(24時間の間、1時間毎とか)測定するには - 高森太郎のノート

概要

とある事情があってネットワークの速度と遅延を測定しなきゃならなくなった。

まぁさくっとNetperfを使わせて頂く…と言う所なのだが、実稼働しているネットワークの速度があった方がいいよね、と言うことになり、24時間測定、1時間毎をすることに。

そこでバッチファイルを作った。

一応

クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 - 継承 3.0 非移植 ライセンスの下に提供されています。

と言うことで。

バッチファイル

使用上の注意
  • なにはともあれ、はnetperfを作ってくださっている方々に感謝。
  • netperfのサーバの方はターゲットサーバで起動していないと測定できません。ただしプラットフォームをまたいでも大丈夫なので、Linux版のサーバにWindows版のクライアントから測定ができます。
  • バッチファイルと同じディレクトリにnetperfのバイナリを入れて使ってください。分ける場合は適当にパス通してね。
  • 最近のエディタはデフォルトだとUnicodeで保存しようとするので注意。SHIFT-JISでないと化けますよ。
  • netperfで測ったlatencyの単位はマイクロ秒。Pingはミリ秒。1秒は1000ミリ秒、1ミリ秒は1000マイクロ秒。
  • netperfはOSのスタックが対応するPingと違ってプログラムが応答するので、Pingよりも遅延が大きく出る傾向がある。一方で、HDDなど補助記憶の遅いIOの影響を受けずに動作するのでネットワークの速度を純粋に測定ができる。
中身

@echo off
rem 設定

rem 相手先サーバの名前
set targetsv=hogefuga.example.com

rem 測定間隔
rem 秒で指定する。300で5分、900で15分、1800で30分、3600で1時間。
rem netperfは瞬時に帯域を使い潰す様な挙動をするので、あまり短い間隔だと怒られます
set interval=1800

rem pingによる測定を行う場合には「Y」を設定する
rem Pingによる測定は時間がかかるが、見慣れた感じで測定できる
set ping_sokutei=Y
rem ping回数。あんまり多いと時間がかかるが、多めにすると通常問題ないがたまに死ぬようなケースを検出しやすいかも
set ping_n=100

rem ログファイルの名前。
rem 開始時刻の日付時間入り 2016102151112_netperf_log.txt みたいになる
rem 時間を生成
set time2=%time: =0%
set outlog=%date:~0,4%%date:~5,2%%date:~8,2%_%time2:~0,2%%time2:~3,2%%time2:~6,2%_netperf_%targetsv%_log.txt
set outlog_ping=%date:~0,4%%date:~5,2%%date:~8,2%_%time2:~0,2%%time2:~3,2%%time2:~6,2%_ping_%targetsv%_log.txt

rem ////////////////////////////////////////
rem 実起動
rem ////////////////////////////////////////

rem 起動時間を生成
set start_time=%date% %time:~0,8%

@echo ネットワークの速度と遅延を測定しています。%interval%秒ごとに測定
@echo 起動時間%start_time%
@echo 起動時間から24時間経過したら、右上の【×】で閉じること

rem ログファイルの初期化

@echo 測定開始%date% %time:~0,8% >%outlog%
@echo ##%COMPUTERNAME% >>%outlog%
@echo ##ipconfg /all >>%outlog%
@ipconfig /all >>%outlog%

if %ping_sokutei%==Y (
@echo 測定開始%date% %time:~0,8% >%outlog_ping%
@echo ##%COMPUTERNAME% >>%outlog_ping%
@echo ##ipconfg >>%outlog_ping%
@ipconfig /all >>%outlog_ping%
)


rem 最初の測定
rem 実行日時の書き込み
set /p X=%date% %time:~0,8%<nul >>%outlog%
set /p X=","<nul >>%outlog%

rem このときはバナーも
netperf -t omni -H %targetsv% -f M  -P 1 -- -d 2 -T TCP -o MIN_LATENCY,MEAN_LATENCY,MAX_LATENCY,THROUGHPUT,THROUGHPUT_UNITS >>%outlog%


rem 以下の内容を無限ループ。
rem 終了は手動で「×」

:sokutei

timeout %interval% /nobreak >nul

rem ばらつき考慮で2回計測する

rem 実行日時の書き込み
set /p X=%date% %time:~0,8%<nul >>%outlog%
set /p X=","<nul >>%outlog%

netperf -t omni -H %targetsv% -f M  -P 0 -- -d 2 -T TCP -o MIN_LATENCY,MEAN_LATENCY,MAX_LATENCY,THROUGHPUT >>%outlog%

set /p X=%date% %time:~0,8%<nul >>%outlog%
set /p X=","<nul >>%outlog%
netperf -t omni -H %targetsv% -f M  -P 0 -- -d 2 -T TCP -o MIN_LATENCY,MEAN_LATENCY,MAX_LATENCY,THROUGHPUT >>%outlog%

rem ping
if %ping_sokutei%==Y (
echo %date% %time:~0,8% >>%outlog_ping%
ping -n %ping_n% %targetsv% >>%outlog_ping%
)

rem ループの終了

@echo %date% %time:~0,8% の計測終了


goto sokutei

解説

後で書く…かもしれない。

とりあえずうちの環境では遅延がでかすぎて話にならない事が分かった。しぬ。もうDBのクライアント入れて直接アクセスするようなシステムはもう撲滅させたい。

2016年08月12日 (金曜日)夏のアップグレード祭り

目次

ここのところ立て続けにOSのアップグレードをやったのでメモ。

[][]WIn10アニバーサリーアップブレードした。KVM+QEMUと容量の少ないタブレット他 WIn10アニバーサリーアップブレードした。KVM+QEMUと容量の少ないタブレット他 - 高森太郎のノート を含むブックマーク はてなブックマーク - WIn10アニバーサリーアップブレードした。KVM+QEMUと容量の少ないタブレット他 - 高森太郎のノート

\

2016年8月5日に出た、Windows 10のアニバーサリーアップデートを以下のPCに対して適用した。

  • HP Z800 Workstation
  • HP Pavilion x2 Detachable PC 10
  • KVM-QEMU上の仮想マシン

HP Z800 Workstationをアップデート

特に問題無し。

普通に終了した。例によってATOKのアクティベーションが解けてしまう問題はあったが、それ以外は特に問題無し。

HP Pavilion x2 Detachable PC 10

アップデートアシスタントが「16GB空き容量がなければ駄目」とか言うが、このハードウエアは32GB、29GiBしかない。なんだと?

というわけで、Officeからありとあらゆるアプリケーションをアンインストール。

データは元々NASやらSDカードやらに突っ込んであるので消すものはないとして、さらに、

Windirstartを使って容量をチェックしながら

これでアップデートしスタントのチェックを通り過ぎた…のだが、そこから先で「0x80070070」で止まる。

このエラーメッセージは「容量が足りない」である。

16GBあけとけばいいんじゃないんかい!

と言うところでググったところ、ずの方が

http://www.zukeran.org/shin/d/2016/08/04/windows10-0x80070070/

Media Creation Toolを使えばできるということだったので、それをダウンロードしてきて再起動した。

そうしたらアップデート後、以前のバージョンがのこっている状態でも12GB容量が空いている状態になった。なんなのこれ。

まぁいいですが。

その後、メモリの使い方などが効率化されたのか、動きがちょっとだけ機敏になった、様な気がする。

KVM-QEMU上の仮想マシン

以前の11月のアップデートの時と同じで、

https://takamoritarou.g.hatena.ne.jp/TakamoriTarou/20151129/1448807814

CPUをCore2Duoにして、アップデートが上手くいくように天に祈るという作業が必要だった。

アップグレードした感想

全体に動きが良くなっている気がする。

あと、スタートメニューのレイアウトはようやく完成したと言う感じがある。

ただ、正直こんなペースでインターフェイスが変わられちゃ、会社じゃつらいぜってところであり、どうにかしてほしい。

仮想マシンのホストに使っているUbuntuを14.04 LTSから16.04 LTSに 仮想マシンのホストに使っているUbuntuを14.04 LTSから16.04 LTSに - 高森太郎のノート を含むブックマーク はてなブックマーク - 仮想マシンのホストに使っているUbuntuを14.04 LTSから16.04 LTSに - 高森太郎のノート

基本的に表示に従ってアップデートするだけ…で大抵はたぶん上手くいく。

が、

いくつか駄目な所があって填まって焦った。

アップデートによって良くなったところはいろいろとあるが、まずはQEMUだかKVMが最新版になったことでAMD製のGPUをPCI パススルーしたときに再起動するとホスト巻き込んで死ぬ現象が無くなったと言うのは非常に大きい。どうもGPUのリセット関係で手が加わった模様。

これだけでもやった価値は十分にあった。ありがたい事だ。

バックアップ

一通りする。

仮想マシンは

virsh dumpxml (ゲスト名) > /home/adachin/kvm/backup/ほげふが.xml

ZFSが自動的にインポートされない。

解決方法としては、

すでにLinux on ZFSを使わせていただき、ZFSを14.02上で使っていたが、16.02からはあらかじめ組み込まれるようになった。アップデートの手間とかパフォーマンスとか色々と良いことはあるようだが、シンプルには

modprobe zfs

で有効にして、

sudo -i

echo "zfs" >> /etc/modules

とするとOK…のはず…だったのだが、インポートされない。

うん?と思いつつも、

zpool inport tank

とやればインポートできる。またzfs listも正常にでき、ここのプールを使っている共有や仮想マシンも読み取れる…のだが、再起動するとインポートされない状態になってしまう。

ぐぬぬ…と色々ググって、以下のページに行き着いた。

http://askubuntu.com/questions/768179/zfs-pools-not-mounted-16-04

書いてある通り、確かに

sudo apt-get install zfsutils-linux

とやるとエラーになる。また、書かれているとおり、

sudo apt-get remove zfsutils-linux

とやると「ないものは消せない」というエラーになってインストールされてない。なんか、インストールが完全ではない、と言ったエラーに。

そして

sudo apt-get remove zfs.doc

として消した後、

sudo apt-get install zfsutils-linux

で再起動すると何もせずにきちんと起動したときにインポートされた状態で起動するようになった。

先人たちの知恵に感謝。

原因というか発生要因としては、古いバージョンでzfs on linuxを使っている場合など何じゃないかなあと思われる。先人の人も15系をパスしたからじゃねみたいな推測をしていた。

やって効果が無かったこと
  • /etc/init/zpool-import.confを変更する
  • /etc/default/zfsにZFS_MOUNT=yes
    • そもそもZFS_MOUNTと言う項目がデフォルトでは存在してないっぽい?
  • 一度import した上でExport
  • Exportした上で、/etc/zfs/zpool.cache を削除して再起動してimportし、/etc/zfs/zpool.cacheを再構築

xrdpが接続できない

xrdpもそのまま移行して、一見正常に接続できる様に見えるのだが途中から進まない。

どうも設定が書き換わっているらしいので、再び

echo lxsession -s LXDE -e LXDE > ~/.xsession

とやると接続できる様になった。

foltiaを入れた仮想マシンからUSB ICカードリーダーが認識できなくなった

仮想マシンマネージャ(vrlt-manager)上ではUSBデバイスであるICカードリーダがきっちりUSBデバイスでパススルー設定がされていて、エラー無く起動ができるのに、foltiaからはカードリーダーが認識できない状態になっていた。

sshで接続してlsusbやっても、ルートハブしか出ない状態。ただ、PT3はきっちりパススルーされていてテストも通る。

これも困ったときのコミュニティで検索をしたところ、出てきた。

https://ubuntuforums.org/showthread.php?t=2322683

要するに、セキュリティ機能であるAppArmorがブロックしているために、読めないという事のようだった。

フォーラムに出ている方の様に

sudo /etc/init.d/apparmor stop

sudo update-rc.d -f apparmor remove

としてから再起動し、仮想マシンを起動したら無事認識した。

注意としては、AppArmorをいきなり殺してしまっているので、これがいいかどうかは不明だと言うこと。おそらく実際にはきっちり設定をした方が良いと思われる。

感想など

今のところ出た問題は以上で、動いている…ように見える。

また、ZFSについては、標準で組み込まれて何らかのチューニングがされているのか、全般にパフォーマンスが上がった感触がある。(ベンチマークした訳じゃないが)

ページの一番上へ