09 Feb 2018, 15:29

pychromecastでお手軽にGoogle Homeから時報を鳴らす

はじめに

Google Homeで 時報を鳴らしたい。こんな記事があり、試してみようと思った。

google-home-notifierというツールを使うのが王道なようだ。

しかし、いかんせん、node.jsがわからない。。できれば、いつも使っているPythonでやりたいなーと思っていろいろ試した結果、pychromecastというものをつかうと、GoogleHomeから音楽を鳴らすことができたので、そのメモ。

pychromecastをつかう

pychromecastを使うと、かなりお手軽にやりたいことが実現できた。

pip install pychromecast

Web上のリソースをGoogleHomeで鳴らすことができるので、以下のダウンロードサイトから、音源を鳴らすことにした。

コードは以下。

これを実行すると、Google Homeから音を鳴らすことができる。

cronで定期実行

cronで1時間ごとに実行するように、設定してみる。 crontab -e で Ok。

0 */1 * * * python google-home-jihou.py

これで、ピッピッピっポーン。

04 Feb 2018, 14:20

Google Homeから Linux上のパソコンをコマンド操作を自由にする

はじめに

GoogleHome/ IFTTT/ Beebotte、そして Pyhtonを使えば声をトリガーに任意の作業ができる。前回、ダーゲットPCに対して、別のサーバを用意していたけれどもど、今回の場合は実行したいPCを用意すれば良い。

まずは結果を。

[https://www.youtube.com/embed/ue_UKf3HSZE]

システム構築

基本的には前回の記事と同じだ。

マシンが違うので、異なるチャンネル beebotteで作成した。

出来るようになったこと

こである声をトリガにして、処理を実施するということができるようになった。

具体的には、

  • モニター OFF
  • モニターON
  • パソコン シャットダウン
  • パソコン Sleep
  • パソコン再起動

しかし、これだけではない。Linux上で実施するあらゆる操作がpythonコードを介して実現可能となった。これは大きな一歩だ。

#!/home/tsu-nera/anaconda3/envs/py3/bin/python
import paho.mqtt.client as mqtt
import json
import os

HOST = 'mqtt.beebotte.com'
PORT = 8883
CA_CERTS = '/home/tsu-nera/repo/python-scripts/mqtt.beebotte.com.pem'
TOKEN = '[チャンネルのトークン]'
TOPIC = 'Galleria/voice'

MONITOR_ON_CMD = "xset dpms force on"
MONITOR_OFF_CMD = "xset dpms force off"
PC_SLEEP_CMD = "systemctl suspend"
PC_OFF_CMD = "shutdown now"
PC_REBOOT_CMD = "shutdown -r now"

def on_connect(client, userdata, flags, respons_code):
    print('status {0}'.format(respons_code))

def on_message(client, userdata, msg):
    data = json.loads(msg.payload)["data"][0]
    print(data)
    if data["device"]=="monitor" and data["action"]=="on":
        os.system(MONITOR_ON_CMD)
    elif data["device"]=="monitor" and data["action"]=="off":
        os.system(MONITOR_OFF_CMD)
    elif data["device"]=="pc" and data["action"]=="スリープ":
        os.system(PC_SLEEP_CMD)
    elif data["device"]=="pc" and data["action"]=="シャットダウン":
        os.system(PC_OFF_CMD)
    elif data["device"]=="pc" and data["action"]=="再起動":
        os.system(PC_REBOOT_CMD)
    else:
        print("Ivalid requset")
    
if __name__ == '__main__':
    client = mqtt.Client()
    client.on_connect = on_connect
    client.on_message = on_message
    client.username_pw_set('token:%s' % TOKEN)
    client.tls_set(CA_CERTS)
    client.connect(HOST, PORT)
    client.subscribe(TOPIC)
    client.loop_forever()

04 Feb 2018, 06:37

Google Homeから Wake on Lanで パソコン起動

はじめに

Google Homeに 「パソコンつけて」といって、パソコンを起動してみました。

[https://www.youtube.com/embed/B1FW42dwSWs]

仕組み

必要なものは以下です。

  • Google Home(Google Assistants) ・・・ 音声インタフェース。トリガを与える口。
  • IFTTT(https://ifttt.com/) ・・・ Google Assistantsからの通知をトリガにして GET リクエストを Beeboteに投げる。
  • Beebotte(https://beebotte.com/) ・・・ MQTTメッセージBroker。 IFTTTからのRestを受け取る。Mindstormsからの mqttのポーリングに応答する。
  • Linuxサーバ(Raspberry Piをつかう人が大半だけれども、自分は持っていないので LEGO Mindstormsに ev3devいれている)
  • python + paho-mqtt ・・・ Pythonで mqtt通信を実施するためのライブラリ。
  • wakeonlan ・・・ wakeonlan発行ツール
  • 起動対象のパソコン

処理の流れは以下のような感じ。

  • GoogleHome -(音声)→ IFTTT -(REST)→ Beebotte ←(監視)- Mindstorms -(wol)-> PC

システム構築

基本的には、以下の記事に従って構築しました。

IFTTTや Beebotteの設定は上記記事に詳しく書いてあるので、参照してください。ここでは省略し、差分のみを書きます。

Mindstormsでの設定

Beebotteに通知されたGETリクエストを監視するために、paho-mqttを入れます。

$ sudo apt install pip
$ sudo pip install paho-mqtt

以下のようなスクリプトをpythonで書きました。

mqtt_client.py:

#!/usr/bin/python
import paho.mqtt.client as mqtt
import json
import os

HOST = 'mqtt.beebotte.com'
PORT = 8883
CA_CERTS = 'mqtt.beebotte.com.pem'
TOKEN = '[channelのトークン]'
TOPIC = 'MySmartHome/voice'
CMD = 'wakeonlan 70:85:c2:67:7a:66'

def on_connect(client, userdata, flags, respons_code):
    print('status {0}'.format(respons_code))

def on_message(client, userdata, msg):
    data = json.loads(msg.payload)["data"][0]
    if data["action"] == "on":
        os.system(CMD)

if __name__ == '__main__':
    client = mqtt.Client()
    client.on_connect = on_connect
    client.on_message = on_message
    client.username_pw_set('token:%s' % TOKEN)
    client.tls_set(CA_CERTS)
    client.connect(HOST, PORT)
    client.subscribe(TOPIC)
    client.loop_forever()

UbuntuでWake on Lanするための設定メモ | Futurismo

このスクリプトをシステム起動時に起動するようにサービス化します。

シェルスクリプトを作成。 /usr/local/bin/hal.sh

 #!/bin/bash
 /home/robot/scripts/mqtt_client.py 

サービスファイルを以下のように、作成 /lib/systemd/system/hal.service

シンボリックリンク作成。

ln -s /lib/systemd/system/hal.service /etc/systemd/system/hal.service

サービス起動。

sudo systemctl daemon-reload
sudo systemctl enable hal
sudo systemctl start hal

rebootして、サービス起動していればOK.

29 Jan 2018, 15:31

Scrapboxによる Futurismo Wiki 復活

https://gyazo.com/79d7eb8d1532bbf9cf317bdfb486018a

はじめに

最近Scrapboxと言うウェブサービスを知った。こは何かと言うとタグで情報をくっつけることができるwikiだ。ちょうどモダンなwikiサービスを探していたところ見つけたのがこのツールだ。

scrapboxのwikiとしての斬新性

Scrapboxの斬新なところは、タグ によって情報をつなげることができるというところ。

フォルダ構造で情報を管理するか、タグによって管理するかというのは、ちょっとした論争を引き起こしてきた。どうやってメールを管理するか、どうやってファイルを管理するか。

今までの潮流は、ディレクトリごとにフォルダを管理したり、メールを管理してきた。しかし、gmailがラベルでメールを管理し始めたり、FennirFSがタグでフォルダを管理しはじめたように、タグによる情報管理というものが、主流になりつつある。それは、ビッグデータに適した情報整理の手法として、フォルダよりもタグのほうが優れていることの現れだと考えている。

そこで、scrapboxである。 wikiというものの起源を考えてみると、ハイパーリンクという仕組みによって情報をつなげるところが魅力であった。

scrapboxは、キーワードをタグ化することで、驚くほど簡単にそのつながりを実現することができる。ここが、今までにない点であり、驚くところだ。

Futurismo Wiki の復活

このブログの裏サイトには、Futurismo wikiというサイトがある。

当時の意気込みをもう一度引用しよう。

最近、以下のような課題を感じる。ブログに知識を集約していくことに限界を感じている。

  • 知識を体系的に整理することが不便
  • 知識を追記して膨らませて発展させていくことが不便
  • 知識と知識をつなげることが不便
  • ちょっとした備忘録をブログの記事にするのは気が引ける
  • 他人にとってはどうでもよいことをブログの記事にするのは気が引ける

なぜ、Futurismo Wikiは停滞していまったのだろうか?それは、org-modeで記事を書いていたのだけれども、Emacsを利用しなくなってしまったからというのが大きな理由だ。

別の理由は、知識をまとめるのが面倒だったからだ。しかし、上記に書いた課題というものは、今も変わらず抱いている。

そこで、である。Futurismo Wikiの Scrapboxによる Rebornである。

Scrapbox プロジェクト立ち上げ

以下のようなプロジェクトを作ってみた。

  • private用プロジェクト ・・・私的なことがらをどんどん記録する
  • work用プロジェクト ・・・ 仕事で利用する情報法をどんどん記録する
  • Futurismo Wiki … ブログのフロー情報を集約するスタック情報サイト
  • きまべん … @gaaamii さんが運営する勉強するための場所。勉強ノートを投稿していく。

おわりに

心地よいツールを使っていると、楽しい。これからどんどんいろんなことを記録していきたい。

work用と、きまべんプロジェクトでは作業ログを、Futurismo Wikiは技術情報の集約を、そしてprivateはまずは日記から。便利さを感じるには、まずは日記からはじめてみてはどうでしょうか?

27 Jan 2018, 10:42

Elasticsearch と kibanaで fitbitのデータを可視化する

はじめに

今まで収集されたデータを分析して、よい精度を出すことに躍起になっていたのだけれども、世の中そんなに簡単にデータが集まっているわけではない。データを集めることは結構大変なのではと思った。なので、データ分析の前にデータ収集を自前でやってみようと思ったのだった。

何がデータ収集の対象がいいだろうと考えたのだけれども、自分のライフログを収集するのがまずは取っ掛かりとしては面白そうだ。これを英語ではQuantified Self というらしい。自分の行動履歴をマッシュアップで表示できると楽しいのではないか??

そんな空想を実現するOSSを調べていると、どうやらElasticsearch と kibanaというツールが使えそうだ。というわけで、このツールをいじってみることにした。

Elasticsearchとkibanaについて

まずは、2つのツールの関係と機能について。Elasticsearchとは、データの全文検索エンジン。そして、kibanaは そのフロントエンドツール。どちらも同じ会社 elastic が開発しているOSS。

Elasticsearchのインストールと実行

ダウンロードは以下から。

Ubuntuなのでdebを選択してDownloadします。

$ sudo dpkg -i elasticsearch-6.1.2.deb
$ systemctl start elasticsearch.service

これで、http://localhost:9200 にアクセスして、以下のレスポンスを受ければOK.

{
  "name" : "6UGX_mB",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "Ih-924HvSr6AxH7CMfWlZg",
  "version" : {
    "number" : "6.1.2",
    "build_hash" : "5b1fea5",
    "build_date" : "2018-01-10T02:35:59.208Z",
    "build_snapshot" : false,
    "lucene_version" : "7.1.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

kibanaのインストールと実行

kibanaのインストールは以下から。

Ubuntuなのでdebを選択してDownloadします。

$ sudo dpkg -i kibana-6.1.2-amd64.deb
$ systemctl start kibana.service

これで、http://localhost:5601 にアクセスして、welcome画面がでればOK.

CSV データを elasticsearchに投入する

理想的にはリアルタイムでデータ収集したいが、まずは手元にある静的なデータを使う。まずはじめは、fitbitから得た心拍数をグラフ化してみよう。

Fitbit Apiとpythonで心拍数の取得をする | Futurismo

kibanaからCSVデータを投入する機能は、一時保留になっている。そこで、logstashを利用する。

設定ファイルを以下のように書く。

input {
  file {
    path => "/home/tsu-nera/repo/python-scripts/heartbeat.csv"
    type => "csv"
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }
}

filter {
  csv {
    columns => ["time","value"]
    separator => ","
  }
  date{
    match => ["time" , "yyyy-MM-dd HH:mm:ss"]
    target => "time"
  }
  mutate {
    convert => { "value" => "integer" }
  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "heartbeat"
  }
}

コマンドラインから実行。

$ logstash -f conf.conf 

これで、elasticsearchにcsvのデータが投入された。Webから確認してみよう。

kibanaでfitbitの心拍数をグラフ化

kibanaにアクセスして、index patterns を作成する。 作成が完了すると、Management > Index Patterns から作成した name を持つ データが並んでいるのが確認できる。

タブから Visualize を選択し、 Lineを選択。折れ線グラフを作成する。以下のようにY軸とX軸を設定。

すると、以下のような折れ線グラフができる。素晴らしい。

おわりに

この記事を書いた背景は、以下の記事にとても影響を受けている。

この記事みたいに、自分もライフログを収集してみたい。心拍数はつまらないな。まずは、睡眠と体重からかなー。

27 Jan 2018, 07:41

Fitbit Apiとpythonで心拍数の取得をする

はじめに

fitbit ionicを購入しました! fitbit Charge, altaに続いて、3台目の購入となります。ここまでくると私もfitbit マニア??

購入の動機は、睡眠の深度を測る機能が欲しかったから。てっきり、浅い睡眠で起こしてくれる機能がついたと思ったのだけれども、それはなかった(T_T)。

別の理由は、fitbit初のスマートウォッチということで、ディベロッパーとしてなにか応援できないかと思ったから。というわけで、このHackableなガジェットをハックします! Let’s Hack begin。

Fitbit APIをつかってみる

データの取得をするために、Fitbit APIを利用する。

まずは、API の IDを取得する。

https://dev.fitbit.com/login からログインして、 REGISTER AN APP を選択。情報を入力する。

  • Application Name 適当
  • Description 適当
  • Application Website 適当
  • Organization 適当
  • Organization Website 適当
  • OAuth 2.0 Application Type Personalを選択
  • Callback URL http://127.0.0.1:8080/ と入力
  • Default Access Type Read & Write を選択

次に、Access Tokenを取得する。取得するために、Pythonのツール、python-fitbitを利用する。

Access Tokenと Refresh Tokenをメモする。以下の4つはプログラムで必要になるのでメモする。

  • Client ID
  • Client Secret
  • Access Token
  • Refresh Token

スクリプトの作成

心拍数を取得するスクリプト。

import fitbit
import pandas as pd

CLIENT_ID =  "xxx"
CLIENT_SECRET  = "xxxx"
ACCESS_TOKEN =  "xxxx"
REFRESH_TOKEN =  "xxxx"

DATE = "2018-01-26"
client = fitbit.Fitbit(CLIENT_ID, CLIENT_SECRET,
                       access_token=ACCESS_TOKEN,
                       refresh_token=REFRESH_TOKEN)

stats = client.intraday_time_series('activities/heart', DATE, detail_level='1min')
heart_beat = stats["activities-heart-intraday"]["dataset"]

heart_df = pd.DataFrame.from_dict(heart_beat)
heart_df.index = pd.to_datetime([DATE + " " + t for t in heart_df.time])
heart_df.drop(["time"], axis=1, inplace=True)
heart_df.plot(y="value", figsize=(20,5))
import fitbit
import pandas as pd

CLIENT_ID = #
CLIENT_SECRET  = #
ACCESS_TOKEN =  #
REFRESH_TOKEN =  # 

DATE = "2018-01-26"
client = fitbit.Fitbit(CLIENT_ID, CLIENT_SECRET,
                       access_token=ACCESS_TOKEN,
                       refresh_token=REFRESH_TOKEN)

stats = client.intraday_time_series('activities/heart', DATE, detail_level='1min')
heart_beat = stats["activities-heart-intraday"]["dataset"]

heart_df = pd.DataFrame.from_dict(heart_beat)
heart_df.index = pd.to_datetime([DATE + " " + t for t in heart_df.time])
heart_df.drop(["time"], axis=1, inplace=True)

# plot
heart_df.plot(y="value", figsize=(20,5))

# export csv
heart_df.to_csv("heartbeat.csv")

以下のような時系列グラフが出力される。寝ている時間は心拍数が低い。

24 Jan 2018, 17:21

呼吸を計測するガジェッド spire stoneでポモドーロは加速する!

はじめに

プログラマーのライフハッカーなら誰もが一度はやったことがあること、それは時間管理のための管理術 ポモドーロテクニック。このfuturismoでも、なんども取り上げてきては紹介していた。

ポモドーロテクニックというのは 25分集中して、5分休むというものを繰り返していくこと。ポモドーロテクニックを用いることで、以下の気づ気を得られた。

  • 作業と休憩を明確に分けることができる
  • 作業に集中できる
  • 自分の作業見積ができる

今使っているポモドーロツール

今までいろんなツールを試してきたけれども、Webアプリであるtomato.esが一番いい。

Webペースなので、場所を選ばない。LinxuでもWindowsでも動く。シンプルな外観で、そこが気に入っている場所。ほかは、タスクを記録できるアカウント管理機能があったり、統計機能があったりする。そしてなんと、我らDeveoperのために、APIも公開されているのである。

しかし長続きしたりしなかったりする。長続きしない原因の一つが、忙しすぎて、5分休むことがもったいないと感じるからだ。本当に5分休むと効果があるの??その間仕事したほうがいいのではないのか?

ここで大事になってくるのは、休んだことによって集中力が増すかということ。腹式呼吸を深くすることによって、集中できるということをいろんなところで聞いたことがある。果たして、仕事中は複式呼吸をしているのだろうか?実は途中から 肺式呼吸となっているのではないか??

そんな疑問を解明するために生まれたのが、この spireというガジェット。

Spire

手のひらに収まってしまいそうな軽量さ。これをズボンのベルトの内側などに、設定しておく。

すると、Bluetoothで通信して、アプリ上のソフトでデータを解析して、今の呼吸の状態を把握することができる。これは私が探していたガジェットだ!

ポモドーロテクニックを利用すると、果たして本当に集中力があがるのか?集中力を客観的に測る尺度は?と考えてきた。ポモドーロテクニックで25分の作業が終わった時、5分間の休憩をとるが、このときにやることは?(本にはここで心を休めると書いてあった気がする)

その客観的な指標が呼吸が乱れないことではないか?常に一定の深い複式呼吸をしていると、ゾーンに入ることができるのではないか?逆にゾーンにはいるには、呼吸を整えればいいいのではないか?

そんな思いから、作業中の呼吸を取得したいと前々から思っていた。fitbitの存在を知った時、脈拍は集中力の記録に使えるのではないかと思ったが、いろいろ調べて脈拍はさほど関係なさそうだ。呼吸と集中力は関係ある。

ポモドーロテクニックと組み合わせる

こんなことを考えてみた。

  1. ポモドーロをこなす
  2. 休憩する。ここで、25分間の作業のレビューをする。
    • 集中力はどうだろうか?
    • 次にやる作業は?
    • 無駄なことをしていないだろうか?

1と2 を繰り返す。

これによって、呼吸駆動のポモドーロテクニックができる、というわけだ。

ちなみにこのガジェットは プログラムから操作できるようなAPI が公開されている。

で、少し触ってみたのだけれども、リアルタイムにデータが取得できない。日毎?のデータが取得できるようになっている。これではやりたいことができない。今後に期待です。

22 Jan 2018, 15:22

LectroFanのホワイトノイズが不快だった話

はじめに

先日、ライフハック大全を購入したのだが、その中に載っていたLectroFanというガジェットを購入した。

ホワイトノイズってなに?

本曰く、静かなオフィスよりも騒がしいカフェのほうが勉強に集中できる秘密は、ざわつきがある方が脳が自分の中に没頭できるからだそうだ。カフェのような環境音を人工的に生み出すのが、ホワイトノイズ。

環境音をつかうことで、集中力を高める ことができる、らしい。というわけで、ホワイトノイズを生み出すガジェット、LectroFan を買ってみた。

これ、つけてみてびっくり。全然心地良くない。むしろ、不快だ。これでリラックスできる人、集中できる人、狂気。

実際の音はこんな感じ

Youtubeにホワイトノイズのサンプルがあるので、貼り付け。

[https://www.youtube.com/embed/4AvK8BzZItA]

LectroFanには、いろいろなモードがあるのだが、どれもイマイチ。この不快さは、会社の実験室のサーバやストレージの音を連想させるからだと思う。仕事をしているようで、不快だ。

といいつつ、最近はこれをずっと聞いて作業している。これは中毒性があるかもしれない。これが集中力?レクトロファン、恐るべし。

17 Jan 2018, 15:13

UbuntuでWake on Lanするための設定メモ

はじめに

自宅のパソコンのwifi接続がどうも不安定で、たまに接続が切れる。そういうときは、USBのwifi子機を抜き差しすると復旧するのだけれども、今日は外出中にいきなり接続できなくなった(T_T)

そんな非常事態に備えて、外出中にパソコンを再起動して復旧を試みるために、Wake on Lan の設定をしたので、今日はそのメモです。

環境

  • Ubuntu 16.04

設定メモ

BIOS設定

BIOSの設定が必要。ここは省略。。なのだが、ここがわからずいろいろな設定を試した挙句、最後にBIOS初期化して、4時間かかった。

OS設定

wol設定の確認/変更に必要なethtoolを入れる。

$ sudo apt install ethtool

NICの名前を確認して、ethtoolを叩く。Wake-on: d で Wake on Lanが無効状態。 Wake-on: gで有効状態。

$ ifconfig
$ sudo ethtool enx343dc4787303
Settings for enx343dc4787303:
No data available

おりょ??なにも表示されない。おばかな頭で考えること数十分、どうやら無線LANでは Wake on Lan ができないという根本的なことに気づいたのたった!!

NICは通電している必要があるのだけれども、無線LANの子機はUSBでPCに刺さっているのだから、PCの電源が落ちれば電力供給されなくなって、動かなくなる。バカダー。

無線 Lan でも Wake on Lanしたい

無線Lan でも Wake on Lanしたい。調べると、イーサネットコンバーターというものがあり、これを購入し、有線をパソコンと コンバーターでむすぶと、あたかもその繋いだPCが物理LANでつながれているようにルータから見えるというもの。

以下をamazonでget.

NICの名前を確認して、ethtoolを叩く。今度こそ・・・

$ ifconfig
$ sudo ethtool enp0s31f6
 Settings for enp0s31f6:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 100Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: on (auto)
    Supports Wake-on: pumbg
    Wake-on: g
    Current message level: 0x00000007 (7)
                   drv probe link
    Link detected: yes

Wake-on: g となっていました。これでOSレベルでの設定ができていることになります。

ifconfigを叩いて、MAC アドレスを調べておく。

クライアントPCに wakeonlanのツールをインストール

クライアントPCにwakeonlanのツールを入れる。

$ sudo apt install wakeonlan

そして、いよいよ、Wake on Lanを実行、電源が入りました!

$ wakeonlan <Mac Address>

外出先から Wake on Lanしたい

外出先から、wake on lanをすることで、PCを起動したい。我が家はソフトバンク光を契約していて、ルータもレンタルなのでルータに port forwardingの設定をすればいけると思っていた。。。

しかし、あらゆる手段を試したのだが、できない!!

ここまでか・・・と思ったが、いろいろ情報収集をすると、どうやらRaspberry pi から wake on lanを実行する事例がいくつかあった。うちには、raspberry pi はないのだけれども、ほこりにまみれたロボコンマシンがあったのだった。こんなの↓

このボロットにsshで乗り込んで、プライベートネットワークからwake on lan を実行すればいけるのでは?

以前の設定メモを元に、sshで乗り込んで実行してみたところ、成功!

やったー。

16 Jan 2018, 14:29

BIOS 初期化で PC起動しなくなった。原因はCSM設定

はじめに

Wake on Lan の設定をしようと思っていて、BIOSの設定をいろいろいじっていたのだけれども、よくわかんなくなってきたので、BIOS初期化をしたら、PCがBIOS画面から立ち上がらなくなった。

なん・・だと・・・??

Boot Device Not Found

いろいろ調べてみると、Boot Deviceがまったくなくなっているではないですか!

起動順序を入れ替え変えようにも、デバイスがないので、切り替えられない。試しに、USBを刺しこんでみると、USBを認識して表示はされるのだけれども、それをブートしようとはしない。

つんだ・・・。涙が出てきた。泣きじゃくった。と、そこへ!

CSMの設定という光が

どうも、CSMという設定を有効にするとよいという記事を見つけた。

引用しますと、

“UEFI BIOS“とは新しいBIOSの仕様。

以前の”レガシーBIOS”と比べると操作性の良さやセキュリティーの高さ、高速ブートなどの利点があります。

そんなUEFI BIOSですが、接続したCD・DVD・HDDドライブがBIOS上から認識しないというトラブルの相談をよく受け付けます。― 正確には、デバイスとして認識するものの、ブートディスク(起動ディスクのこと)として選択できないというトラブルです。

ということで、UEFI BIOSという新しいBIOSの使用が私の邪魔をしているようだ。

CSMとは

CSMとは Compatibility Supported Module の略です。つまり、レガシーなBIOS、レガシーな周辺機器やドライバ、レガシーなOSとの互換性を保つための設定。

ということで、これが有効になると、レガシーな部品との互換性が回復してつかえるようになる。なにが原因かわからないのだけれども、ブートローダあたりが壊れてしまったのだろうか?

とはいえ、無事に復旧することができました。めでたしめでたし。