LVMを使っての既存ファイルシステム拡張

最近Let'sNoteのSSDを60GからIntelの120GSSDに乗り換えました。

乗り換えついでに、広くなった分を新しくLinuxに分け与えようと思いLVMの操作に挑戦しました。

 

LVMとは(Logical Volume Manager)といい、ディスクマネージメント機能の総称らしいです。

自分的には、ディスクを管理する素晴らしい機能的な感じです。

 

何が素晴らしいかと言えば、パーティションなどをまたいでもあたかも1つのパーティションのように扱える。

 

イメージ的にはこんな感じですかね。

 

 

イメージいらないぐらいですね。

とりあえず、拡張が簡単にできて物理ディスクのことをあまり考慮しなくてもいいのが便利です。

取り外しもできます。取り外し編はこちら「LVMの論理ボリュームサイズ縮小(PV取り外し)

 

LVMには、ボリュームを管理する単位があります。

・PV(物理ボリューム)

・VG(ボリュームグループ)

・LV(論理ボリューム)

 

PV(Physical Volume)

PVとは、LVM用に用意したパーティションです。

未割当な領域に、LVM用にパーティションを作成するだけです。

 

VG(Volume Group)

VGとは上で作成したPVをまとめた単位です。

PVを2つ作成して、VolGroup00というVGに割り当てる感じです。

増やしたかったらVolGroup00に新たに1つPVを増やすといったように使えます。

(実際は物理エクステント(PE)という単位で割り当てます。PV作成時に指定されたサイズに分割し、その1つ1つがPE)

 

LV(Logical Volume)

LVはVGで作成した領域の上に作成します。このLVを各ディレクトリにマウントしてあげます。

なので、使う側としては、LVのみ意識すればいい感じになっています。

 

 

イメージ的にはこんなでしょうか?

容量を増やしたいときには、家の中(VG)にPVを追加してあげればVGを大きくすることができそうです。

 

では、こっから実際の手順です。

環境は、Fedora16 32bitです。

 

1.まずは、旧SSDから新SSDにデータを移す

HDDを移行するときは、dump,restoreコマンドを使用すればいいらしいのだが、あいにくファイルシステム

ext4なので使用することができない。

で、どうしようかと思っていたらddコマンドなるものがあるらしい。

注意書きで同容量のHDDの場合のみddコマンドで。的な事が書いてあるサイトが結構あった気がするが、

気にせず容量の違うHDDにddコマンドでコピーしてみたいと思います。

(失敗しても中身もともと空なので問題なし。)

dd if=/dev/sda of=/dev/sdb

60Gなのでそんなに時間をかけずにコピーは完了する。(コピー中は何も表示されません)

起動してみるとなんの問題もなく動いたのでOKでした。

 

2.現在のパーティションの状態を確認する

[root@localhost kiyoto]# fdisk /dev/sda

コマンド (m でヘルプ): p

Disk /dev/sda: 120.0 GB, 120034123776 bytes
ヘッド 255, セクタ 63, シリンダ 14593, 合計 234441648 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x12733297

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *          63    75216329    37608133+   7  HPFS/NTFS/exFAT
/dev/sda2        75216896    76240895      512000   83  Linux
/dev/sda3        76240896   125044735    24401920   8e  Linux LVM

3.パーティションを追加する

nで新しいパーティションを追加する。

コマンド (m でヘルプ): n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): p
選択したパーティション 4
最初 セクタ (75216330-234441647, 初期値 75216330): 125044736
Last セクタ, +セクタ数 or +size{K,M,G} (125044736-234441647, 初期値 234441647): +30G

 

4.ファイルタイプを変える

新しく追加したパーティションのIDは「83になっているので、それをLVMの8eに変更する。

バイス ブート      始点        終点     ブロック  Id  システム
/dev/sda1   *          63    75216329    37608133+   7  HPFS/NTFS/exFAT
/dev/sda2        75216896    76240895      512000   83  Linux
/dev/sda3        76240896   125044735    24401920   8e  Linux LVM
/dev/sda4       125044736   187959295    31457280   83  Linux

コマンド (m でヘルプ): t
パーティション番号 (1-4): 4
16進数コード (L コマンドでコードリスト表示): 8e
パーティションのシステムタイプを 4 から 8e (Linux LVM) に変更しました

バイス ブート       始点        終点     ブロック   Id  システム
  /dev/sda1   *          63    75216329    37608133+   7  HPFS/NTFS/exFAT
  /dev/sda2        75216896    76240895      512000   83  Linux
  /dev/sda3        76240896   125044735    24401920   8e  Linux LVM
  /dev/sda4       125044736   187959295    31457280   8e  Linux LVM

 

5.変更状態を保存する

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。

警告: パーティションテーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。新しいテーブルは
次回リブート時か、partprobe(8)またはkpartx(8)を実行した後に
使えるようになるでしょう
ディスクを同期しています。

6.物理ボリュームを作成

再起動後、作成したパーティションにPV(物理ボリュームを作成する)

[root@localhost kiyoto]# pvcreate /dev/sda4
  Writing physical volume data to disk "/dev/sda4"
  Physical volume "/dev/sda4" successfully created

 

7.ボリュームグループ名を確認する

[root@localhost kiyoto]# vgdisplay -v
    Finding all volume groups
    Finding volume group "VolGroup"
  --- Volume group ---
  VG Name               VolGroup
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               23.25 GiB
  PE Size               32.00 MiB
  Total PE              744
  Alloc PE / Size       744 / 23.25 GiB
  Free  PE / Size       0 / 0   
  VG UUID               ioSlrx-15VC-Zf9Q-YjOW-MpXM-vPWn-YUZ04g

 

8.ボリュームグループに物理ボリュームを割り当てる

[root@localhost kiyoto]# vgextend VolGroup /dev/sda4
  Volume group "VolGroup" successfully extended

 

9.論理ボリューム名を確認する

vgdisplay -v で確認すると、さきほど追加した物理ボリュームもボリュームグループに追加されている。

[root@localhost kiyoto]# vgdisplay -v
    Finding all volume groups
    Finding volume group "VolGroup"

  --- Logical volume ---
  LV Name                /dev/VolGroup/lv_root
  VG Name                VolGroup
  LV UUID                SgQAaB-Srat-cvhH-Ownk-qu87-pyNl-z9OlL0
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                18.31 GiB
  Current LE             586
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1
   
  --- Physical volumes ---
  PV Name               /dev/sda3     
  PV UUID               iQuL9H-H1ic-3lPS-L5ja-v3y0-a2rB-0k5cf1
  PV Status             allocatable
  Total PE / Free PE    744 / 0
   
  PV Name               /dev/sda4     
  PV UUID               wW8jGT-hb2T-85UN-mmA5-bIPd-Pti8-Lc0ruw
  PV Status             allocatable
  Total PE / Free PE    959 / 959

 

10.論理ボリュームの容量を増やす

[root@localhost kiyoto]# lvextend -L +20G /dev/VolGroup/lv_root
  Extending logical volume lv_root to 38.31 GiB
  Logical volume lv_root successfully resized

 

11.ファイルサイズの変更

[root@localhost kiyoto]# resize2fs /dev/VolGroup/lv_root
resize2fs 1.41.14 (22-Dec-2010)
Filesystem at /dev/VolGroup/lv_root is mounted on /; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 3
Performing an on-line resize of /dev/VolGroup/lv_root to 10043392 (4k) blocks.
resize2fs: 無効な引数です While trying to add group #243

 

12.容量の確認

[root@localhost kiyoto]# lvdisplay -v
    Finding all logical volumes
  --- Logical volume ---
  LV Name                /dev/VolGroup/lv_swap
  VG Name                VolGroup
  LV UUID                Gb1NOQ-e3t2-Xryy-N8QS-lkjZ-ikk4-LMyRMc
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                4.94 GiB
  Current LE             158
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
  --- Logical volume ---
  LV Name                /dev/VolGroup/lv_root
  VG Name                VolGroup
  LV UUID                SgQAaB-Srat-cvhH-Ownk-qu87-pyNl-z9OlL0
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                38.31 GiB
  Current LE             1226
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

 

SET(Social Engineering Toolkit)のインストール

最近セキュリティ関係の勉強をしながらいろいろ遊んでいると、SETというものを発見した。

SET(Social Engineering Toolkit)とは、ソーシャルエンジニアリングを行うためのツールらしい。

具体的には、フィッシングサイトなどを簡単に立ち上げることができる。

BackTrackとかには最初から入っているのだが、FedoraにSETをインストールする方法が日本語では見当たらない…

ってなことで、インストールメモを取りました。

 

1.SETのソースをチェックアウトする

SETは、ダウンロードしてインストール…という風に進まないので、まずはソースをチェックアウトする。

svn co http://svn.trustedsec.com/social_engineering_toolkit

 

2.設定ファイルを書き換える

チェックアウトが完了したら、設定ファイルにmetasploitのインストールされているパスの書き込み。

vi /config/set_config

コメントのすぐ下のほうに下記のような、metasploitのパスを指定する部分があるので、自分の環境に合わせて変える。

### Define the path to MetaSploit, for example: /pentest/exploits/framework3
METASPLOIT_PATH=/opt/metasploit-4.3.0/msf3

 

3.wgetが必要になるので、インストールする

yum install wget

 

4.SETの実行

以上で準備は終了です。あとは、SETディレクトリのsetを実行すれば操作できます。

./set

 

 

msfconsoleからpostgresqlへの接続

metasploitの、msfconsoleからpostgresqlへの接続の時につまづいた時のメモです。

何処でつまづいたかと言うと、「gem install pg」の部分でつまづきました。

いろいろなサイトを見て回り、同じようなことを行っても全然インストールすることができない。

エラーの内容的には下記のような表示がされる。もっと長かったけど省略。

Building native extensions. This could take a while...
ERROR: Error installing pg:
ERROR: Failed to build gem native extension.
...

環境は、Fedora16(32bit)です。

 

ここからは、行った手順を記載していきます。

#yum update

OSをインストールしたばっかりだったので、まずは更新作業から。

 

postgresqlのインストール

#yum install postgresql-server

環境変数設定

このままでは、「initdb」ができないので、環境変数を設定する

#POSTGRES_HOME=/usr/local/pgsql
#PGLIB=$POSTGRES_HOME/lib; export PGLIB
#PGDATA=$POSTGRES_HOME/data; export PGDATA

 

/usr/localのパーミッション変更

postgresqlパーミッションエラーで、読み込めないと言われるので、適当にパーミッション変更。

#chmod 777 /usr/local

/usr/bin/initdb 実行

postgresqlをインストール時に自動で作成された「postgres」ユーザになり、initdbコマンド実行

/usr/bin/initdb

initdbが終了すると、下記のコマンドのどちらかを実行して下さい的なメッセージが出るので実行する。

/usr/bin/postgres -D /usr/local/pgsql/data start

上のコマンドを実行する。initdb時のメッセージには、logファイル的なのを指定しているが省略する。

 

postgresユーザのパスワード変更

#passwd postgres toor

 

データベース作成

pgsqlで適当なデータベースを作成する。

 

pgをインストールするために以下のパッケージをインストールする

yum install gcc
ym install ruby
yum install rubygems
yum install ruby-devel
yum install libpcap-devel
yum install postgresql-devel

 

準備が整ったので、gemでpgをインストールする

gem install pg

 

以上で、metasploitからDBに接続できるようになりました。

Let's Note CF-W7 ファン取り替え+LED付け替え

久しぶりの更新になります。

最近愛用機のLet's noteが調子悪くなってきました。

そこで今回は、Let'snote CF-W7の解体ファン取り替え電源スイッチ部分のLED取り替えを行ってみたいと思います。

ずいぶん前に、発熱がひどかったり、音が気になってきたのはファンの調子が悪くなってきていたからだと思います。

最近は変な音がかなり響いています。

SW部分のLEDに関しては、チカチカすることすらなくなりました。LEDSW停電中です。

CF-W7を解体しての感想としては、 ちょっとむずかしかったです。

何が、難しかったかと言うと、マザーボードを外すところが難しかったです。

挑戦してみれば、アナログ端子の部分がどんだけひっかかってるんだ!?ってくらいひっかかっています。

今回の挑戦は、PS3を破壊した経験や、監視カメラの修理などの経験が役に立ちましたが。

 

CPUファン購入サイト

CF-W7/CF-T7用 CPUファン 3900円

 

ちなみに、修理費の参考価格

cPUファン交換工賃  4900円

LEDSW交換工賃   3700円

合計: 8600円

 

 

値段を見るだけでも、自分でやった方がかなりお得ですね。

 

では、ここから解体手順についてです。

参考にする方は、自己責任でお願いします。自身がない方は修理に出すほうがいいと思います。(そこまで高くないので…)

 

解体手順:

 

1.PCからバッテリとHDDを取り外す

前記事のCF-W7SSD換装を参考

 

2.PCの裏側のねじを取り外す

 

赤丸で囲まれたねじ(全部のねじですが…)を外す。外したねじはガムテープに張っとくなど、

場所を記憶しておかないとあとで悲惨な結果になります。

 

 

3.メモリ部分のふたを外し、隠れているねじを1本外す

 

 

4.赤四角で囲まれている防水シール?を剥がす。

ドライヤーなどで軽く温め、赤矢印がさしている部分からマイナスドライバーで隙間を作り外すとやりやすい。

少しあてているとすぐに熱くなるので、壊さないためにも加減する

 

 

5.銀色の留め具を外す

赤丸の部分にプラスドライバーなどを差し込み、軽く引くと留め具が外れる。

これは、キーボードを固定しているパーツ(実際には、キーボードが両面テープでついてるので外しただけでは変わらない)

 

 

6.キーボードを外す

キーボードは、両面テープで固定されているので、少し浮かせたらドライヤーなどで温めはがれやすくする。

はがれてきたら、写真の浮いてるほうから反対に倒す。

温めすぎ注意(あくまで剥がしやすくしているだけで、推奨ではない)

 

 

7.キーボードを剥がした後、防水シールを剥がし、キーボードのコネクタ部分を外す

ここでも、防水シールが現れるので、慎重に剥がす。

剥がすと、キーボードの線を抜く。

下写真の、赤矢印の方向へ白い部分をずらすと、ケーブルが外れる。

 

 

8.キーボードを外すことができたら、キーボードの下にあるねじを外す

赤丸で囲まれている個所のねじを取り外す。

青四角で囲まれている部分は、防水シートと、筐体が両面テープでくっついているので、

 筐体の上部分を取り外す時は、テープの存在に気を付ける

 

 

9.ドライブを取り外すため、横のねじをとる。

マイナスドライバーなどで、カバーを取り外し、中のねじをとる。

このねじを取り外すと、ドライブのカバーが外れる。

 

 

10.赤丸に囲まれている部分が爪になっているので、おらないように外す。

青丸の部分のばねをなくさないようにする。

 

 

11.ドライブの上についている、熊の頭みたいな形の板を取り外す

赤矢印のついている部分からこじ開けやすい。ここも両面テープで付いているので気を付ける

 

 

12.取り外すと、下にねじが現れるのでとる

 

 

13.無線モジュール部分のねじを取り外す。両サイド。

 

 

14.手順8の両面テープの部分に気を付けながら、筐体の上部分を取り外す

ファンにアクセスするためには、このマザーボードを裏側にしなければいけない。

今回の作業で一番苦労した部分はマザーボードを裏返しにするところ。

物理的に不可能では?と思うぐらい取れない。

(あとの手順で出てくるが、右側のパーツを全部外さないと、ボードをずらして裏返すことができない)

 

 

15.トラックパッドのコードを取り外す

赤四角で囲まれている部分のコードを取る。

これは留めてある部分を上に持ち上げると、開く。

コード近くのコネクタも取り外す。

 

 

16.マザーボードを固定しているねじを取り外す

 

 

17.右側にあるコードやテープ、USBポートの支えなど、全部取り外す

まず、青四角で囲まれている部分のコードが両面テープでくっついてるので、取り外します(軽くドライヤーで温めました)

次に、下にくっついているコード類をまとめているテープ類を全部剥がします。

最後に、赤丸で囲まれているねじを取り外し、USBポートなどがついたボードを一式取り外す。

 

 

18.ドライブと、マザボの間ぐらいにあるコネクタ類を外す

小さいの2個と、大きいの1個の、計3個がある。赤矢印の付近

 

 

19.アナログ端子などを固定しているねじをはずす。

細いペンチなどで、赤丸の部分をつかみながら、ねじの要領でまわし外す。

下記の写真に移っている、青い四角のポート部分と、その右のEXTの部分がマザーボードを外す時の難問になる。

 

 

20.右側が全部取り外せ、パカパカ浮かせることができる状態になります

この時点でマザボを浮かせながら、右側に引っ張ると、アナログ端子の部分が外れる。

(ここが一番の悩みどころだった)

 

 

21.慎重にひっくり返すと、裏側にファンがくっついている

このファンは、コネクタを外し、持ち上げるとすぐに取れる

 

 

22.ファンを付け替えて終了

 

 

23.参考にはならないが、LEDを付け替えたあとのCF-W7

 

 

以上で、解体+交換は終了です。

なにか問題点、気になる点がある方は、気軽に訪ねてください。

OpenfilerによるiSCSIストレージの作成

Openfilerとは、ストレージ機能に特化したOSです。

LDAPや、WebDAVなどもサポートしています。

インストーラーは anacondaを使用しているので、誰でも簡単にインストールすることが出来ます。

今回はこのOpenfilerを使い、KVMでライブマイグレーションを行うためのストレージに使用したいと思います。

 

Openfiler導入時のPCスペックは、

CPU       Intel(R) Pentium(R) 4 CPU 2.80GHz

CPU SPEED   2.79 GHz

memory     1001.03 MB

 

1.Openfilerをダウンロードします

 

Openfiler - Download-

今回は、32bitマシンを使用したので、ダウンロードしたファイルは、x86 - ISOimageになります。

 

2.ISOイメージをメディアに焼きインストール開始

 

 Enterで処理を続行する。

 

 メディアチェックは「Skip」で次へ進む

 

 次へ進む

 

 

 言語は、「Japanese」を選んで次へ進む

 

 

 「Manually Partiton With Disk Druid」を選んで次へ

 

 

 HDD内のデータが消えますよ?的な警告が出るが、「Yes」を選択し、次へ

 

 

 画像がつぶれて見ずらいが、ここでは、パーティションの設定を行う。「new」で作成。

 必要なパーティションとして、

 ・マウントポイント「/」   作成(作成時は10G確保)

 ・マウントポイント「/boot」 作成(作成時は10G確保)

 ・Type Swap       作成(作成時は10G確保)

 ・PV:Phisical Volume     作成(作成時は250G確保)

 ・VolumeGroup       作成(上で作成した、PVを指定)

 残りは「Free」領域として確保しておく。

 

 ※ほかのサイトでは、「Free」領域を確保しといてインストール完了後に設定すると書いてあるが(通常はそのやりかた)
  今回の検証では、それができず、アップデートしてもできず、仕方なくインストールの段階でVGを作成する。

 

 

 

 ネットワークデバイスの選択。ethしかないので、変更なし。DHCP使用。

 

 

 タイムゾーンとして、Asia Tokyoを選択。上の地図上で、東京付近をクリックしても、自動で選択される。

 

 

 Adminのパスワードを設定する

 

 

 しばし待って、インストールが完了したら、再起動する

 

 

 

3.インストール完了後、表示されたURLにアクセスし、設定を行う

 

 

 

 ブートすると、Grubが立ち上げるので、一つしかない「Openfiler」を選択する。

 

 

 Openfilerを起動すると、上記のような画面が表示されるので、表示してあるURLにブラウザからアクセスする。

 今回の例では、「https://192.168.229.128:446

 

 

 上記のURLにアクセスすると、ログイン画面が表示されるので、

 username =  openfiler

 password  =  password

 でログインする。

 

 

 ログイン後、「Volumes」タブを押し、右のVolumeSection欄にある、「Volumes Groups」を選択する

 

 

 

 上記の画面が出現するので、

 ・VolumeName       「任意の文字」

 ・VolumeDescription     「説明」

 ・Required Space      「今回はMAXに使用」

 ・FileSystem/VolumeType  「iSCSI

 を選択し、Create.

 

 上記のように、Volume画面のTOPに移動すると、緑色に円グラフが変わっているのがわかる。

 

 

 Volumesタブの右側にある「iSCSI Target Setup」をクリックする。上記6番目。

 

 

 TargetIQNをAddで追加する

 

 

 Incoming User, Outgoin User,でユーザを追加する。

 ※これは必要ないかもしれません。

 

 次に、「Service」タブをクリックし、iSCSI target Serverを「Enable」にし、起動させる。

 

以上でインストールと、初期設定は終わりです。

今回は、必要最低限の設定で起動を行っているため、アクセスコントロールなどは、別途行う必要があります。

Linux側の設定は次回載せる予定です。

ivy bridge 3770s購入

先日第3世代core i シリーズであるivy bridgeこと ivy ちゃんが家にやってきました。

ネット上では、爆熱問題や、ダブルグリスバーガー症候群などが話題になっていますが、

OCをしないなら問題なさそうだし、どうせ買うならとivyの人柱になってきました。

ちなみにPCの自作は今回初めてです。

水冷クーラーの取り付けなどいろいろと戸惑いましたが、無事完成できました。

中でもCPUを取り付けてバーを降ろす所が硬くて結構てんぱりました。

 

構成ハードウェア

CPU: Core i7-3770s(3.1GHz 8M LGA1155)

M/B: ASUS P8Z77-V

メモリ: CMZ8GX3M2A1600C9 (PC3-12800 4GB*2)

SSD : AGT3-25SATA3-120G

PCケース:  PHANTOM410-R

水冷クーラー: CWCH60

電源:  EA-650-GREEN

グラボ: N560GTX-TI TWIN FROZR Ⅱ OC V2

 

  合計:108000円

 

予算があまりなかったので、HDDなどはまだ追加していません。

windowsエクスペリエンスのスコアによると以下のようになります。

 

最低スコアが7.7という自分的にはかなりの満足感です。

 

CrystalMarkで前のメインPCとivyを比較してみました

 

core i7 3770s

 

HDD:

Memory:

 

MHFベンチマーク[大討伐]

 

core 2 duo

 

HDD:

]

 

Memory:

 

MHFベンチマーク[大討伐]

NFCについてまとめてみた

Interface4月号にNFCについての特集が載せてあったので読んでみた。

そして、自分なりに解釈しまとめてみた。

誤解を恐れずに書くので、間違いがあるかもしれません。怪しいと思うところはいろんなソースをみて的確な情報収集を…

 

NFCとは

Near Field Communicationの略称。近接無線通信。

日本ではSONYのFelicaやJRのSuicaなどがあります。

10cmとかの距離を電波で通信します。タイプによっては、数十mの距離を通信するものもあります。

NFCは欧州で広く普及している規格ISO/IEC14443TypeAと日本国内で普及しているFelica共通で使えるようにするための

無線通信の国際通信規格です。NFCは複数の規格を含んでいる

 

NFCフォーラムとは?

NFC技術の実装と標準化の促進を目的に、2004年3月にソニー、フィリップス(現NXPセミコンダクターズ)、ノキアの3社により設立される。

これは、日本ではFelica、欧州ではOyster(TypeA)など規格がバラバラなので、その国固有のICカードしか使えない。

それではダメだ。世界で共通で使える近距離無線通信用のICカードの規格を作りましょうよ的な感じで作られる。

 

NFCフォーラムの経緯

 

(NFCフォーラム設立前)

2000年 ISO/IEC14443TypeA、Bなどの非接触の近距離無線規格として13.56MHzの周波数で動作するカードとリーダ/ライタ

の標準規格できる。TaspoなどのTypeA、運転免許などのTypeBできあがる。

通信部分だけ切り出して企画にすれば、携帯に入れるなどもっと面白い応用ができるのではないか?ISO/IEC14443はRF回路、

 アナログ回路、プロトコル、アプリケーションのファイルアクセスなどの全体を包括する使用になっている。

 

2003年 ISO/IEC18092(NFCIP-1)できる。TypeAとFelicaを共通で使えるようにした規格。

 

2004年 NFCフォーラム設立

 

2005年 ISO/IEC21481(NFCIP-2)TypeBとRFIDが追加される。 

 

2010年 第1世代の規格決まる。NFCフォーラムで実装仕様が策定される。

 

2011年 NFCチップが多数登場

 

NFCフォーラムによってSuica,Edy,Oyster(TypeA)などの既存のカードと互換性のある規格が出来上がる

NFCは今後、スマホ→パソコン→TVへ流れていく。

※ハンドオーバー技術の標準化の検討も進めている、ハンドオーバー技術とは、お店に用意されたタグなどを読み込めば、

設定なしにすぐにWi-Fiが使えるようになったりする技術です。NFCタグを解して無線などの設定を自動でやってくれる。

かざすだけで使えるようになる。

 

NFCを使ったアプリケーションで印象に残ったのは、医師にNFC携帯を持たせ、子供の手首にタグをつけておき、医師が子供のタグ

を読み取ると過去の病歴がクラウドを通してNFC端末に表示されるっていうやつです。

 

RFID

RFID(Radio Frequency Identifer)は非接触ICカードと技術や使われ方が近い。

RFIDと非接触ICの違いは目的にあります。

 

RFID   → 「」の管理

非接触IC → 「」の管理

 

 

RFIDの規格

RFIDは電力伝送方式に「電磁誘導方式」「波方」の2種類に分かれる。

 

電磁誘導方式の特徴:

13.56MHz~135KHz未満

通信距離が数十cmと短い(磁界を使うので減衰が急進)

アンテナが小型安価

 

波方式の特徴:

433MHz、952MHz、2.45GHz

通信距離が長い

アンテナが大きく装置高価

 

RFIDとして普及しているのは、13.56MHz帯と952MHzUHF帯パッシブ

 

13.56MHz帯特徴:

通信距離:        20~30cm

複数タグ読み出し:   数~数十枚

タグの値段:       50円以上

リーダ/ライタの大きさ: 数cm

リーダ/ライタの値段:  数千~数万

 

953MHz帯特徴:

数進距離:        5m

複数タグ読み出し:   100~300枚

タグの値段:       10円

リーダ/ライタの大きさ: 数十cm

リーダ/ライタの値段:  20万円以上

 

上記より携帯電話用機器では、13.56MHz帯、UHF帯は外付けが多い

 

 

RFIDタグ

RFIDタグ必要な通信距離大きさで選ぶ。距離と大きさは比例する

動作温度はー20~85度(ICチップの動作保障温度)

 

RFIDNFCに関する電波法

RFIDNFCも電波を発するので「電波法適用

タグはパッシブ(電池なし)は「電波法適用外

 

13.56MHz帯は周波数だけでなくスプリアスの規定(設計上意図しない周波数成分)が似ているので、国内、海外問題なく使える

13.56MHz、135KHzに限られる

 

UHF帯は国ごとに電波法が異なっている。国内でも同じ周波数帯に対して(952MHz)3つの電波法がある。

 

UHF帯周波数の再編

RFIDMCA無線(タクシー無線)は現行の周波数から920MHz帯へ移行する

920MHz帯のRFIDの使用開始は2012年7月25日から2018年3月3日までに移行完了

移行の際の利点としては、周波数大域が広がる(5~13MHz)

米国などは920MHz対を使用しているので、国際間の共用性なども利点、

 

RFIDのコード体系

RFIDタグにはID(識別子)ユーザデータを記録できる2つの領域がある

 

IDの種類としては、

UID(固体識別子): あらかじめ付与されるユニーク番号。書き換えが不可能

EPC:         ISO/IEC18000-6TypeC準拠(UHF帯タグが対象)。書き換え可能

 

セキュリティに関して

<< NFC >>

・個人のプライバシー情報を守る

・課金情報に不正アクセスさせない

 

<< RFID >>

・貼り付けたものの真贋判定

・模造品対策

 

 

NFCの基本動作

非接触ICカードとは、リーダ/ライタの外部端末から送信される弱電波を使って電力を生成し、同時に通信を行うICを指す。

1.リーダ/ライタから微弱電波発生

2.カードのアンテナを介し、電磁誘導により電力を取得する

3.取得電力が規定値を上回った時点でカード内ICを起動

4.リーダ/ライタは電波に変調をかけ、リクエストデータ送信

5.カードはリクエストを処理し、IC内の負荷を切り替えることによってレスポンスを返信する

6.リーダ/ライタは負荷変動をリーダの負荷変動として検出し、レスポンス受信

 

符号化方式

符号化方式とは、Aという電波がやってきたら1、Bという電波がやってきたら0.

などのように電波の変化によってビットを区別するために使用します。

たぶんですが、イメージとしては無線通信_IEEE802.11の一次変調のような感じだと思っています。

誤り訂正符号とは違います。

符号化方式には「NRZ」「ModifiedMiler」「Manchester」の3つの方式があります。

 

NRZ

NRZとは、0と1のデータを信号波形の高低に対応させるポピュラな方式です。

 

ModifiedMiler

ビット区間内で電圧の変化がなければ0、電圧の変化があれば1を表す。

 

Manchester

ビット区間の中央で電圧レベルが「L→H」に変わるなら0、電圧レベルが「H→L」に変化するなら1を表す。

Mancyester方式は1ビット毎にかならずレベルの変化があるため信号の周期を取りやすく、ノイズを除去をしやすい

 

変調方式

リーダ/ライタ → カード = ASK

カード → リーダ/カード = Felica  : ASK

                   TypeA : OOK (サブキャリアの有無)

                   TypeB : BPSK (サブキャリア位相変調)

 

アンチ・コリジョン(衝突防止)方式

非接触ICは、リーダ/ライタの動作磁界内に複数舞のカードが入ってくるケースが想定される。

 

※無線や普段聞きなれているコリジョンとは意味合いが違う。

※無線:衝突回避

NFC:衝突防止

 

コリジョン方式

TypeA ・・・ビット・コリジョン

TypeB・・・スロットマーカ

Felica・・・タイム・スロット

 

ビットコリジョン方式 TypeA 欧米

カードが保有する固有識別番号(UID)を返信する。複数のカードが同じビットを送ると識別できるが、

異なるビットを送ると混信してわからない。その衝突のところから「0」で始まるビットを持つカードに返信してもらい、

次は「1」を持つカードに返信してもらうといった動作を行う。

 

 

スロットマーカ方式 TypeB 免許証

リーダ/ライタからのリクエストに対してカードは乱数を生成し、スロットマーカー番号として保持。

リーダ/ライタから指定されたスロット・マ-カ番号を持つカードは返信する。衝突した場合は別の乱数を発生させやりなおす。

 

 

タイムスロット方式 Felica Suica

スロットマーカーと同じようにリーダ/ライタが乱数を送信する。

カードはそれをタイムスロットとして保持する。1つタイムスロット分待機したらカードは答える。

衝突したらリトライ

 

通信シーケンス

1.リーダ/ライタとカードとの通信路を設定する(初期応答)と、アプリケーションに応じた情報の受信を行う「活性情報」

とで構成される

 

初期応答

1カード、ICチップに電源が供給されるとカードはライタからの通信時の設定要求(リクエストコマンド)を待機する状態になる。

2.リーダからリクエストコマンドが送信され、カードは応答する。これにより、リーダライタの通信エリアに存在するカードが認識される.

3.認識したカードとパラメータを交換し、通信速度などの条件を相互交換する

 

活性状態

1.「初期応答」で認識したカードを選択し、リーダライタからのコマンドに対するカードのレスポンスを繰り返す。

 

2つの通信モード

NFCIP-1では、能動通信モードと、受動通信モードと呼ぶ2つの通信モードが規定される。

 

能動通信モード・・・リクエスト・レスポンスの双方を、電波を発生させる事により行う。

受動通信モード・・・リクエストの送信は電波を発生させるが、応答では電波を発生させず、電波の負荷を変動させる

 

NFCIP-1では、データレートごとに通信方式を採用する。

 

Transport Protocol NFCIP-1の通信プロトコル
NFCIP-1では、コマンドを送信する側をイニシエータ。受信し、返信する側をターゲットと呼ぶ

流れ
初期RFCA(RFCollisionAvoidance)
イニシエータデバイスが、ほかに電波を発生させているデバイスがいないことを確認

初期化およびSDD(SingleDeviceDetection)
により、イニシエータデバイスは、アンチコリジョン機能を用いて対向デバイスを検知する

「属性要求あり?」分岐
データ交換プロトコルに向かうか独自プロトコルに向かうか決定される。

ATR_REQコマンド送信(イニシエータ→ターゲット)

ATR_RES返信(ターゲット→イニシエータ)
バイスの属性情報を返信する。(受信可能データサイズ、ビットレート

パラメータの変更があれば、PSL_REQで任意送信

DEP_REQ(DataExchangeProtocol)コマンドを用いて双方向データの送受信を行う

DSL_REQ,RLS_REQでトランザクション終了

 

NFCバイスの必須条件

1.リーダ/ライタモード
2.P2Pモード
3.カードエミュレーションモード(オプション)

4種類のNFCForumTag(NFCタグ)に対するアクセス機能をサポート
※TypeAやB,Felicaなど意識しなくても使える。全部含まれるから。

Type1Tag→Taspo,Jewel
Type2 Tag→MIFARE,Ultralight
Type3 Tag→Felica
Type4 Tag→MIFARE DESFire

NFCIP-1ではイニシエータは(106/212/424kpbs)のうち1つのビットレートをサポート。ターゲットは全部

 

仕様書
無線インターフェース(TypeA,B,Felica)に担当する使用をテクノロジと呼ぶ。
3種類ある。NFC-A,NFC-B,NFC-F

通信モードには、コマンド送信できるPollモード、受信できるListenモードがある。
モードは対向デバイスに合わせて、どちらで動作するかが決定される。
Poll→Listen→Poll…と交互に繰り返す