ほのぼのぼのぼの

ひよっこエンジニアのほのぼの記録

pepper に ssh 接続してみました

自分でも何を言っているのかわかりませんが。

$ ssh nao@pepper
Password: 
pepper [0] ~ $ uname -a
Linux pepper 4.0.4-rt1-aldebaran-rt #1 SMP PREEMPT RT Mon Oct 3 19:22:50 Local time zone must be set i686 Intel(R) Atom(TM) CPU E3845 @ 1.91GHz GenuineIntel GNU/Linux
pepper [0] ~ $ free
             total       used       free     shared    buffers     cached
Mem:       4049716    1445008    2604708      93824      49020     511360
-/+ buffers/cache:     884628    3165088
Swap:            0          0          0
pepper [0] ~ $ 

CPU は Atom E3845(Bay Trail)で、主記憶 4GBのようです。

Raspberry Pi で時報を作ってみた

指定した時刻にチャイムや音楽を流す装置を Raspberry Pi を使って作ってみました。

指定時刻になると cron で音楽プレーヤを起動させるだけのシンプルな構成です。

環境

初期設定はsudo raspi-configからお好みで。

手順

音声出力先の設定

出力先に合わせて以下の設定をします。

Raspberry Pi 2 の場合,オーディオジャックまたは,HDMI ディスプレイから出力できます。

オーディオジャックから出力する場合

$ amixer cset numid=3 1

HDMI から出力する場合

$ amixer cset numid=3 2

一部モニターでは出力できない場合は,/boot/config.txthdmi_drive=2コメントアウトします。

スピーカーテスト

出力先の設定ができたら,以下のコマンドで音が出るか確認します。

$ speaker-test -t sine -f 1000

補足ですが,sin 波を 1000 Hz で出力しています。

チャイムの再生

チャイムの入手

今回はビックベンのチャイム音を使ってみました。

$ wget http://www.parliament.uk/audio/images/bigben-images/hourlychimebeg.mp3 ~

mpg321 インストー

Raspbian に標準でインストールされているaplayだと MP3 ファイルが再生できないため,mpg321を使います。

$ sudo apt-get install mpg321

インストールが完了したら,先ほど入手したチャイムの音声ファイルが再生できるか確認します。

$ mpg321  ~/hourlychimebeg.mp3

cron へ登録

指定時刻になったらチャイムが流れるように,cron へ登録します。

今回は9時ちょうどと18時ちょうどに流したいので,crontab -eコマンドで以下の設定を行いました。

0 9,18 * * * mpg321  ~/hourlychimebeg.mp3

指定時刻にチャイムが流れることを確認したら完成です。 もし流れない場合は,/var/log/syslogを確認するとよいでしょう。

Hyper-V 上で稼働する仮想マシンの自動ライセンス認証

Windows Server には,仮想インスタンス用のライセンスが含まれていることが知られています。Standard には,2つの仮想インスタンス実行権,Datacenter の場合には,無制限の仮想インスタンス実行権が与えられます。これより,複数の Windows Server が必要な場合でも,仮想マシン上に構成すればライセンス費用を抑えることができます。

これまで,Windows Server の仮想インスタンスのライセンス認証の方法を知らなかったのですが,Datacenter の場合は,Automatic Virtual Machine Activation(AVMA,自動ライセンス認証)を使えばよい,ということがわかったので試してみました。

環境

Automatic Virtual Machine Activation (AVMA)

仮想マシンのインストールの際に,AVMA 用のプロダクトキーを使用すれば良いそうです。

こちらのドキュメントに詳しく掲載されています。

Automatic Virtual Machine Activation

特筆すべきことはこのあたりでしょうか。

  • 仮想マシンのライセンス認証にはインターネットの接続は必要ない
  • 仮想化サーバから仮想マシンへのアクセスなくライセンス認証が可能

マイグレーションなどで,仮想マシンを他の仮想化サーバへ移動した場合でも引き続きライセンス認証されるとのことです。

なお,AVMAのプロダクトキーは以下のとおり(2017/6/24現在,ドキュメントより引用)。

Windows Server 2012 R2

Datacenter: 4TGP-NPTV9-HTC2H-7MGQ3-DV4TW
Standard: DBGBW-NPF86-BJVTX-K3WKJ-MTB6V
Essentials: K2XGM-NMBT3-2R6Q8-WF2FK-P36R2

Windows Server 2016

Datacenter: TMJ3Y-NTRTM-FJYXT-T22BY-CWG3J
Standard: C3RCX-M6NRP-6CXC9-TW2F2-4RHYD
Essentials: B4YNW-62DX9-W8V6M-82649-MHBKQ

手順

仮想マシンのインストール時に,インストールしたい Windows エディションの AVMA キーを入力します。 今回は,Standard のキーを入力しました。

f:id:u9bo:20170624124325p:plain

AVMAキーに対応したエディションが選択できます。今回は,デスクトップ エクスペリエンスを選択しました。

f:id:u9bo:20170624124340p:plain

インストール後に,以下のコマンドでライセンス認証状況が確認できます。

slmgr -dlv

f:id:u9bo:20170624124402p:plain

ライセンス認証が行われていることが確認できます(一部加工しています)。
仮想マシンからホストマシンの情報が取得できるようです。

Let's encrypt の証明書の更新作業

はじめに

Let’s encrypt の証明書更新作業メモ。cron に登録したら楽だな,と思いつつ3ヶ月に一度コマンドを実行すれば良いだけなので,登録していない。。。でも更新コマンドを忘れちゃうので個人的なメモです。

こんな件名のメールが届いたら行う作業

Let's Encrypt certificate expiration notice for domain "example.com" 

環境

  • linux
  • nginx
  • letsencrypt

実行するコマンド

$ sudo systemctl stop nginx
$ sudo letsencrypt renew
$ sudo systemctl start nginx

証明書の更新中は nginx が止まるのでご注意を。

終わりに

やっぱり cron に登録しよう,そうしよう。

有彩色照明シーンの色情報を考慮したダイナミックレンジ圧縮

背景と目的

街中のイルミネーションや舞台照明演出において、LED カラー照明を利用した色彩演出が盛んに行われています。 最近では、スマートデバイスを介してディジタル調光が可能なカラー LED 照明1 が民生用にも普及し始めています。ユーザが光源の色を自在に指定できる環境が提供されているイルミネーションや照明デザインで色彩豊かな演出が可能となるに伴い、色彩演出の効果をモニタや紙面上で把握し、その演出効果や演出設計に役立てるシステムが必要になってきます。

しかしながら、一般に市販されているカメラのダイナミックレンジは 80 dB 程度であるため、色彩豊かな照明光や周囲の色調や形状を1枚の画像に納めるのは困難です。(図1.1) f:id:u9bo:20170330212101p:plain

例えば、速いシャッタースピードで撮影した低露光画像(図1.1(a))では光源の色を撮影することが可能ですが、照明周囲は黒く潰れてしまいます。一方、遅いシャッタースピードで撮影した高露光画像(図1.1(c))では照明周囲の色や形状を記録可能であるものの照明領域に白飛びが発生してしまいます。

このような状況下に対して、広いダイナミックレンジを有するHDR(High Dynamic Range)画像を用いると、シーン全体の色調や明るさを精度よく記録できます(図1.2、輝度画像)。

f:id:u9bo:20170330212615p:plain

HDR 画像の表示には、モニタの表示可能域までダイナミックレンジを圧縮する必要があり、用途に合わせてこれまで多くの圧縮手法が提案されてきました2

ダイナミックレンジ圧縮手法には、輝度に関して圧縮を行うトーマッピングと、カラーアピアランスモデルを用いるものがあります。

カラーアピアランスモデルによるレンジ圧縮手法の一つに、iCAM063 と呼ばれる手法があります。iCAM06 では、色順応や桿体や錐体の非線形応答圧縮といった輝度や色に関する視覚特性を考慮した色見えを再現可能です。しかしながら、カラーアピアランスモデルによるダイナミックレンジ圧縮は、高輝度かつ高彩色の光源が含まれる HDR 画像の場合には、圧縮結果は従来の 8 ビット画像:Low Dynamic Range 画像(LDR 画像)のレンジに収まらず、光源やその周囲に色褪せが生じてしまう問題がありました。

本研究は、有彩色照明を含むシーンで撮影されたHDR 画像の光源色を含めた色情報を、視覚特性に考慮して LDR 画像上で表現することを目的としています。そのために、カラーアピアランスモデルにおける局所順応輝度マップの生成方法を見直し、照明やその周囲などのシーンの局所領域に注視した場合の色や明るさを 1 枚の画像上に表現する方法を提案しました(図1.3、従来手法:Reinhard2012, iCAM06に対し、提案手法:ours)。

f:id:u9bo:20170330213827p:plain

そのほかの結果などは [IEICE paper] Dynamic Range Compression for Chromatic Lights

主な発表文献

  • 有彩色照明シーンの色情報を考慮したダイナミックレンジ圧縮
  • Color restoration of lighting scenes with locally adapted HDR images
    • Yuto Kubo, Takao Jinno and Shigeru Kuriyama
    • 2015 2nd International Conference on Advanced Informatics: Concepts, Theory and Applications (ICAICTA)
    • 10.1109/ICAICTA.2015.7335364
    • http://ieeexplore.ieee.org/document/7335364/
  • Restoration of color appearance by combining local adaptations for HDR images
    • Yuto Kubo, Takao Jinno and Shigeru Kuriyama
    • AIC2015, 2015.05
  • カラー照明による色彩演出の色印象再現
    • 久保雄登、神納貴生、栗山繁
    • 第13回 照明学会ヤングウェーブフォーラム,2015.03(招待講演)

参考文献


  1. Philips. Philips hue. http://www2.meethue.com/ja-jp/

  2. Erik Reinhard, GregWard, Sumanta Pattanaik, and Paul Debevec. High Dynamic Range Imaging: Acquisition, Display, and Image-Based Lighting (The Morgan Kaufmann Series in Computer Graphics). Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 2005.

  3. Jiangtao Kuang, Garrett M. Johnson, and Mark D. Fairchild. iCAM06: A refined image appearance model for HDR image rendering. Journal of Visual Communication and Image Representation, Vol. 18, pp. 406-414, 2007.

Windows 7 のインストールディスクに Windows Update を適用して初回のアップデートを短縮してみました

概要

Windows のインストールで時間がかかる作業のひとつに、Windows Update の適用があります。 インストールディスクの版にもよりますが、初回は 100~200 個程度の更新プログラムの適用を必要とすることも少なくありません。

今回はインストールディスクに前もって更新プログラムを適用しておくことで、初回の Windows Update を短縮できないか試しました。

具体的には、インストールイメージの wim ファイルへ更新プログラムのロールアップファイルを適用します。

実施環境

対象OS

Windows 7 Professional SP1 64bit

作業PC

更新プログラムのダウンロード

以下の更新プログラムをダウンロードします。

また、IE11へアップグレートする場合は、以下の更新プログラムをダウンロードします。

作業フォルダの準備

ダウンロードしたファイルを作業フォルダにコピーします。今回は作業フォルダをC:\tmpとしました。

今後の作業に合わせて、各ファイルを以下のフォルダへコピーします。

C:\TMP
└─update
    │  IE11-Windows6.1-x64-ja-jp.exe
    │
    ├─iepre
    │      windows6.1-kb2533623-x64_8a59ea3c7378895791e6cdca38cc2ad9e83bebff.msu
    │      windows6.1-kb2670838-x64_9f667ff60e80b64cbed2774681302baeaf0fc6a6.msu
    │      windows6.1-kb2729094-v2-x64_e1a3ecc5030a51711f558f90dd1db52e24ce074b.msu
    │      windows6.1-kb2731771-x64_98dba6673cedbc2860c76b9686e895664d463347.msu
    │      windows6.1-kb2786081-x64_dc63b04c58d952d533c40b185a8b555b50d47905.msu
    │      windows6.1-kb2834140-v2-x64_3db9d9b3dc20515bf4b164821b721402e34ad9d6.msu
    │
    ├─kb3020369
    │      windows6.1-kb3020369-x64_5393066469758e619f21731fc31ff2d109595445.msu
    │
    ├─kb3125574
    │      windows6.1-kb3125574-v4-x64_2dafb1d203c8964239af3048b5dd4b1264cd93b9.msu
    │
    ├─kb3172605
    │      windows6.1-kb3172605-x64_2bb9bc55f347eee34b1454b50c436eb6fd9301fc.msu
    │
    ├─kb3177467
    │      windows6.1-kb3177467-x64_42467e48b4cfeb44112d819f50b0557d4f9bbb2f.msu
    │
    └─kb3212646
            windows6.1-kb3212646-x64_a94cf69326099fb121cdd7daf9dfc558f740afb8.msu

Internet Explorer 11 インストールファイルの解凍

Internet Explorer 11 (IE11)のインストールファイルを wim ファイルへ統合できる形へ解凍します。

C:\tmp\update\IE11-Windows6.1-x64-ja-jp.exe /x:C:\tmp\update\ie

C:\tmp\update\ieにインストールファイルが解凍されました。

作業フォルダにWindowsインストールディスクをコピー

Windows 7 のインストールDVDを挿入し、インストールファイルをコピーします。

> robocopy /E /V /DCOPY:T /A-:R D: C:\tmp\windows

ここで、

  • D: は光学トライブのドライブ
  • C:\tmp\windowsはコピー先のディレクト

です。

更新プログラムの適用

以降の作業は、「展開およびイメージング ツール環境」を管理者権限で起動して実施します。

アップデートするwindowsを確認

Windows 7 のインストールディスクには、複数のエディションのイメージファイルが含まれています。 適用するエディションのインデックス番号を次のコマンドで確認します。

今回は Professional に適用するので、インデックス: 3であることが確認できました。

> dism /Get-WimInfo /wimFile:C:\tmp\windows\sources\install.wim

展開イメージのサービスと管理ツール
バージョン: 10.0.14393.0

イメージの詳細: C:\tmp\windows\sources\install.wim

インデックス: 1
名前: Windows 7 Home Basic
説明: Windows 7 Home Basic
サイズ: 11,681,373,841 バイト

インデックス: 2
名前: Windows 7 Home Premium
説明: Windows 7 Home Premium
サイズ: 12,194,650,761 バイト

インデックス: 3
名前: Windows 7 Professional
説明: Windows 7 Professional
サイズ: 12,096,751,107 バイト

インデックス: 4
名前: Windows 7 Ultimate
説明: Windows 7 Ultimate
サイズ: 12,259,188,245 バイト

操作は正常に完了しました。

イメージファイルのマウント

> dism /mount-wim /wimfile:C:\tmp\windows\sources\install.wim /index:3 /MountDir:C:\tmp\mount

展開イメージのサービスと管理ツール
バージョン: 10.0.14393.0

イメージをマウントしています
[==========================100.0%==========================]
操作は正常に完了しました。

更新プログラムの適用

> dism /image:C:\tmp\mount /Add-package /packagepath:C:\tmp\update\kb3020369
> dism /image:C:\tmp\mount /Add-package /packagepath:C:\tmp\update\kb3125574
> dism /image:C:\tmp\mount /Add-package /packagepath:C:\tmp\update\kb3172605
> dism /image:C:\tmp\mount /Add-package /packagepath:C:\tmp\update\kb3212646
> dism /image:C:\tmp\mount /Add-package /packagepath:C:\tmp\update\iepre
> dism /image:C:\tmp\mount /Add-package /packagepath:C:\tmp\update\ie

イメージのアンマウント

更新プログラムが正常に適用できたら、以下のコマンドで更新内容を保存します。

> dism /Unmount-Image /MountDir:C:\tmp\mount /commit

ここで、/commitは更新内容を保存する(commit)を示します。更新内容を破棄する場合は、 /discardを指定します。これは、更新が失敗した場合に、指定するとよいでしょう。

ISOファイルへ書き出し

> oscdimg -n -m -bc:\tmp\windows\boot\etfsboot.com c:\tmp\windows c:\tmp\win7_hotfixed.iso

動作確認

作成したインストールディスクを用いて、Windowsインストールを実施した結果、初回の更新プログラムは63個と大幅に減らすことができました(2017/3/26実施)。

参考文献

Windows 7 のカスタムインストールディスクを作成してみました

概要

前回は、Windows をネットワークストレージ経由でインストールしました。 この方法で、複数台に同時にかつ、高速にインストールできるようになりました。 ただし、この方法でインストールされる Windows はまっさらな状態です。 そのため、この後に MS-Office や、ユーティリティといった各種ソフトウェアを それぞれの PC でインストールする必要があります。

今回は、各種ソフトウェアをインストールした状態を、複数の PC に展開する方法を試してみました。 感覚的には、家電量販店などで購入できる PC のリカバリディスクのように、 様々なソフトウェアがインストールされたイメージディスクを作成すると思っていただければと思います。

エンジニア的には、開発機に各種開発環境を構築した状態でイメージを作成しておけば、 システムが不安定になった場合でも、サクッときれいな状態に戻せるのがメリットだと思います。

環境

手順

大まかに次の手順で進めていきます。

  1. Windows 7 のインストール
  2. ひな形の作成
  3. ハードウェアドライバ、ソフトウェアのインストールなど環境の構築
  4. システムの一般化
  5. コピー用イメージの作成
  6. コピー先 PC への展開

MS のこちらの記事を参考に進めました。ただし、こちらの記事ではイメージの作成に ImageX コマンドを使用しているのに対し、今回は Dism コマンドで作成してみました。

Windows 7 の標準イメージの作成: ステップバイステップ ガイド

Windows のインストール

いつもどおりに Windows をインストールします。

注意点としては、インストール時に作成するユーザアカウントは、コピーイメージの準備だけに使用します。 そのため、コピー先 PC への展開時には保持されないことに注意してください。

各種ソフトウェアのインストール

Windows のインストールが完了したら、各種ソフトウェアをインストールします。

今回は次のソフトウェアのインストールと環境設定を行いました。

システムの一般化

インストール後の Windows は、それぞれのハードウェア固有の情報を持っています。
これらの情報を削除して、他の PC に展開できるようにします。

クリーンアップ

Windows キー + R」で「ファイル名を指定して実行」を起動します。 以下のパスで、Sysprep(システム準備ツール)を起動します。

C:\Windows\System32\sysprep\sysprep.exe

Sysprep が起動したら、次の手順で監査モードに入ります。

  1. 「システム クリーンアップ アクション」 で 「システム監査モードに入る」を選択
  2. 「一般化する」にチェック
  3. 「シャットダウン オプション」で 「再起動」 を選択
  4. 「OK」を押下して、再起動

Sysprep が実施されます。

一時ユーザの削除

再起動後には、Administrator ユーザでログインされます。 次に、ソフトウェアのインストールで使用したローカルユーザ情報を削除しましょう。

  1. スタートメニューの「コンピュータ」を右クリックし、「管理」を選択
  2. 「コンピュータの管理」が起動します。「ローカルユーザーとグループ」の「ユーザ」で インストールに使用した「ユーザー」を右クリックし、「削除」を選択

一時ユーザの情報が削除されました。プロファイルも削除しておきましょう。

  1. スタートメニューの「コンピュータ」を右クリックし、「プロパティ」を選択
  2. 「システムの詳細設定」を選択
  3. 「ユーザープロファイル」の「設定」を選択
  4. 「不明なアカウント」を選択し、「削除」

これで一時ユーザのプロファイルが削除されました。

OOBE モード

Sysprep を起動して、OOBE モードに入ります。 OOBE モードに入ると、次回起動時に Windows の初期設定画面が表示されます。

Windows キー + R」で「ファイル名を指定して実行」を起動します。 以下のパスで、Sysprep(システム準備ツール)を起動します。

C:\Windows\System32\sysprep\sysprep.exe

Sysprep が起動したら、次の手順で OOBE モードに入ります。

  1. 「システム クリーンアップ アクション」 で 「システムの OOBE (Out-of-Box Experience) に入る」を選択
  2. 「一般化する」にチェック
  3. 「シャットダウン オプション」で 「シャットダウン」 を選択
  4. 「OK」を押下して、シャットダウン

これで環境に依存しない Windows が作成できました。

展開用イメージの作成

次に他の PC に展開するためのイメージを作成します。

Windows PE ディスクで Windows PE を起動します。

ネットワークストレージへ接続

今回は HDD からキャプチャしたイメージをネットワークストレージに保存するため、 ネットワークストレージに接続します。

X:\windows\system32>net use N: \\192.168.10.100\share /user:john *
\\192.168.10.100\share のパスワードを入力してください:
コマンドは正常に終了しました。

共有フォルダ(\\192.168.10.100\share)が N:\ にマウントされます。

/user:john は接続ユーザ名です。環境に合わせて変更してください。

キャプチャする HDD パーティションの確認

キャプチャするパーティションを確認します。

diskpart で確認するのがよいかと思います。

X:\windows\system32>diskpart

Microsoft DiskPart バージョン 10.0.14393.0

Copyright (C) 1999-2013 Microsoft Corporation.
コンピューター: MININT-XXXXXXX

DISKPART> list volume

  Volume ###  Ltr Label        Fs    Type        Size     Status     Info
  ----------  --- -----------  ----  ----------  -------  ---------  --------
  Volume 0     E   DVD_ROM      UDF    DVD-ROM      444 MB  正常
  Volume 1     C   システムで予約済み    NTFS   Partition    100 MB  正常
  Volume 2     D                NTFS   Partition    126 GB  正常

DISKPART> exit

DiskPart を終了しています...

X:\windows\system32>

D: にマウントされていることが確認できました。

パーティションのキャプチャ

パーティションを確認したら、イメージファイルへキャプチャします。

Dism /Capture-Image /ImageFile:n:\original-system.wim /CaptureDir:D:\ /Name:"Original System"

n:\original-system.wim にイメージファイルが作成されました。

カスタムインストールディスクの作成

Windowsインストーラは、インストールディスクの\sources\install.wimを HDD に展開することで インストールを実現しています。これを今回作成したイメージファイルに置き換えることで、 オリジナルのイメージディスクを作成します。

作業用 PC で、Windows 7 のインストールディスク内のフォルダ、ファイルを、ネットワークストレージにまるごとコピーします。 今回は、以下の共有フォルダにコピーしました。

\\192.168.10.100\share\original-7\

先ほど作成したイメージファイルoriginal-system.wimを、install.wimにリネームし、 sourcesにコピーします。

これでカスタムインストール用のデータが作成できました。

イメージの展開

カスタムインストール用のデータが準備できたので、実際に他の PC へ展開してみましょう。

展開方法は、こちらの記事を参照いただければと思います。

9bo.hateblo.jp

通常どおりにインストールを進めたのち、再起動をすると Windows の初期設定画面が表示されます。 こちらもそのまま進めていきましょう。

f:id:u9bo:20170205135849p:plain

インストール後には、イメージ作成時にインストールしたソフトウェアが、既に存在していることが確認できます。

f:id:u9bo:20170205140129p:plain

まとめ

今回は、各種ソフトウェアをインストール済の環境を他の PC へ展開することを目的に、 カスタムイメージディスクを作成しました。

ソフトウェアのインストール、Windows Update は、イメージ作成時の一度だけ行えばよいため、 キッティング台数が多い場合に、驚異的な威力を発揮します。

今後の予定として、キャプチャしたイメージのwimファイルには、直接 Windows Update の更新データを適用できるそうです。 こちらについて、取り組んでみようと思います。