デスクトップPC(Win10) HDD→SSD換装

メインの起動ドライブをSSDに換装した作業メモです。

参考サイト:【最新】HDDからSSDに交換・換装!コピー・クローン方法解説!

HDDのパーティション形式を確認

取り付けたSSDを初期化する際、元のHDDとパーティション形式を揃えた方が安全なので、予め形式を確認しておきます。

参考サイト:MBRまたはGPTの確認方法(パーティション形式) | パソコンの問題を改善

  1. 「ディスクの管理」を開く
    「[Win] + [X] キーでメニュー表示 → [k] キーで開く」が一番早いと思います。
  2. OSが入っているディスク(Cドライブのあるディスク)のパーティション形式を確認
    MBRGPTかを確認します。

SSDをPCに接続

PCにSSDを取り付けるだけです。

  1. 一度PCの電源を落とす
    ※メモリ増設などと同様、シャットダウン後に電源ケーブルまで外します。
  2. SSDを取り付ける
    電源ケーブルとSATAケーブルをしっかり取り付けます。

SSDの初期化

元のHDDのフォーマット形式に合わせて、SSDを初期化します。

  1. Windows を起動する
  2. 「ディスクの管理」を開く
  3. SSDの初期化とボリュームの作成を行う
    ※このときのパーティション形式を、元のHDDと合わせます。

EaseUS Todo Backup Freeでディスクのクローン

ソフトのインストールとクローン処理を実施します。

EaseUS Todo Backup Freeの取得

ディスクのクローンやバックアップ等が行えるパワフル便利ソフトです。ディスクのクローンをするだけなら無料版でできてしまう。つよい。

公式サイトからダウンロードするのが安定でしょうか。

(参考記事から名前調べて適当に窓の杜からダウンロードしちゃった)

インストール(ver. 12.0)

[次へ]で問題ありません
許諾に同意
適当なフォルダを選択
不要なチェックを外す
バックアップ機能を使う際の既定のフォルダ指定
適当で良さそう
インストールがゴリゴリ進んでこの画面に
[完了]をクリックするとブラウザで何か開くけど閉じていい
ライセンス認証とか出るけど[後で]

画面右下に出てくるセールスポップアップは「今後表示しない」にチェック入れて消す。

ソフトウェアアップデートはお好みで。

クローン

クローンするには、画面左の「クローン」のとこをクリック
1. ソースの指定はディスクまるごとチェックした
(正直C:のみとかでもいける気はするし、細かいパーティションが切られるのはイヤ……)
2. ターゲットの指定でSSDを選択(画像はHDD選んでるけど気にしない)
2.a. 「編集」をクリックすると、クローン後のレイアウトをいじれる
SSD内に不要なパーティションが切られて困る場合はいじると吉
2.b. 高度なオプションで「SSDに最適化」にチェック入れると良さげ
3. 次の画面で「実行」をクリックすると、ターゲットのデータが消えるとかなんとか聞かれる
OKをクリックすると、ゴリゴリと処理が走る

そこそこ時間がかかるので待機。クローンが完了したら閉じる。

SSDからブートするように変更して起動チャレンジ

ブートの優先順位を変更します。

  • BIOSのブートオプションから、ブートの優先順位を変えるのが丁寧。
  • 元のHDDのSATAケーブルをポートから抜き、同じポートにSSDのSATAケーブルを挿すのは手荒。(これでもちゃんと起動できた)

問題なくSSDから起動できてPCが使えることを確認したら、元のHDDは煮るなり焼くなり……

以上。

ローカルの開発環境(Vagrant)のPHPでcURLが機能しない

タイトルがわかりにくいですね。

困った

こんなことをしていました。

$url = 'http://' . $_SERVER['HTTP_HOST'] . SERVER_URL . 'index.php?action=hoge';

$curl = curl_init($url);
    (中略)
$response = curl_exec($curl);
※$url: http://local-host.name/server_url/index.php?action=hoge な感じ

こんな風になりました。

Could not resolve host: local-host.name

いやぁ繋がらん繋がらん…… 軽く調べたらDNSがまずいみたいな話🤔

解決

vagrant上の/etc/hosts127.0.0.1 local-host.nameを追加して、$ vagrant reloadしたら解決していた。

[vagrant@localhost ~]$ sudo vim /etc/hosts
    (~編集~)
[vagrant@localhost ~]$ sudo cat /etc/hosts

127.0.0.1 local-host.name

[vagrant@localhost ~]$ exit
Abgemeldet
Connection to 127.0.0.1 closed.

C:\hoge\vagrant\piyo>vagrant reload
~~~

ちょろいもんですわ。(反映されるタイミングが少し怪しかったけど……)

参考

Ubuntu18.04 LTS | HDDの増設

前回の続き。

内蔵HDDの追加作業をしました。

調べたらGUIで簡単にできるらしい。さっくりと実践。
(うっかりスクショ撮り忘れたので文字ばっかですがご了承ください)

参考: HDDをフォーマットする – Ubuntu 18.04 LTS編

  1. Windowsキーとか押して「disk」と入力し、出てきた「ディスク」を開く。
  2. セットアップを行いたいディスクを選択し、メニュー(≡)から「ディスクを初期化」を選択。
  3. ディスクの初期化
    何も入っていないドライブだったので下記のように選択して初期化。
      消去: 既存のデータを上書きしない(クイック)
      パーティション: 新しいシステムと(中略)互換(GPT)
  4. [➕]を押して未割り当て領域にパーティションを作成
    パーティション作成ダイアログでは、パーティションのサイズを最大にしました。
  5. ボリューム名などの設定は以下のようにして作成。
      ボリューム名: data
      消去: オフ
      タイプ: Linuxシステム専用の内蔵ディスク(Ext4)。
  6. [▶]を押してパーティションをマウント
  7. [⚙]を押してマウントオプションを編集
    Ubuntu起動時に自動でマウントされるよう設定する。
      ユーザーセッションのデフォルト: オフ
      ☑ システム起動時にマウントする
      ☑ ユーザーインターフェースに表示する
      マウントポイント: /media/onlineconsultant/data
      識別: UUID=~~~~~~~~~~
      ファイルシステムのタイプ: auto
    として [🆗]。認証を求められるのでパス入れて完了。
  8. 再起動して確認。

サイト通りの手順でできてしまった。

一応コマンドでもできるという話

まず現状確認

$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation

UUID=d2916135-4486-43be-a209-b548c96bfe38 / ext4 errors=remount-ro 0 1
/swapfile none swap sw 0 0

ここで、以下のようにコマンド実行

sudo echo -e '/dev/sda1 /media/onlineconsultant/data auto defaults 0 0' >> /etc/fstab

みたいなことをしてもできます。(ちょっと /etc/fstab ファイルの中身は違うけど実質同じ(はず))

おわり。

参考

Ubuntu 18.04 LTSにDockerを入れて機械学習環境を構築

前回の続き。

Ubuntuが無事(?)に入ったところで、いよいよDocker入れてTensorFlow入れて機械学習をゴリゴリやりたいところですが、その前にはやっぱり準備が必要です。

参考: Docker  |  TensorFlow

やったこと

もたもたとアプデ確認
Dockerのインストール
TensorFlowのDockerイメージを取得?
Dockerイメージを適用して環境構築?
動作確認?

もたもた

諸事情で前回作業から間が空きまくってしまったので、アップデートの確認とか色々します。

パッケージ一覧取得
$ sudo apt update
パッケージの更新
$ sudo apt dist-upgrade
不要になったパッケージの削除
$ sudo apt autoremove

Ubuntuのバージョン管理ツールも入れます。(多分最初から入っているけど念の為)
$ sudo apt install update-manager-core

Ubuntuのアップグレードチェック
$ do-release-upgrade -c
おっと、Ubuntuの最新版は19.10でしたが、LTSはまだなかったみたいです。
There is no development version of an LTS available.
To upgrade to the latest non-LTS develoment release
set Prompt=normal in /etc/update-manager/release-upgrades.

画面の解像度?表示倍率?がおかしかったのでNVIDIAのドライバを再インストール

古いドライバ削除
$ sudo apt --purge remove nvidia-*
パッケージ情報更新
$ sudo apt update
推奨ドライバ確認
$ ubuntu-drivers devices
 (略) nvidia-driver-435 がrecommended
あれ?公式のドライバ検索だと440なんだけど……??

ウーンPPA。
$ sudo add-apt-repository ppa:graphics-drivers/ppa
パッケージ情報更新
$ sudo apt update
推奨ドライバを再度確認
$ ubuntu-drivers devices
 (略)  nvidia-driver-440 がrecommended
公式のドライバ検索と同じ結果になった。

インストール
$ sudo apt install nvidia-driver-440
再起動
$ sudo reboot
……解像度なおったわ!!!

nvidiaの情報チェック
$ nvidia-smi
 (略) 問題なさげ

これでやっとまともにUbuntuのセットアップ作業ができる……
参考: Ubuntu Linux 18.04にGPUドライバをインストールする|setoyama60jp|note

Dockerインストール

アプデチェックはこの辺にして、Dockerを入れます。どっか~んっ!

参考: Get Docker Engine – Community for Ubuntu | Docker Documentation

パッケージ一覧を更新
$ sudo apt update

HTTPSでdocker repositoryを利用するためのパッケージを導入

$ sudo apt install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common

Dockerの公式のGPG Keyを追加
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

repositoryを追加

$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

パッケージ一覧を再度更新
$ sudo apt update

Dockerのインストール
$ sudo apt install docker-ce

インストールできたらDockerのバージョン確認
$ docker version

Client: Docker Engine - Community
Version: 19.03.4
API version: 1.40
Go version: go1.12.10
Git commit: 9013bf583a
Built: Fri Oct 18 15:54:09 2019
OS/Arch: linux/amd64
Experimental: false
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/version: dial unix /var/run/docker.sock: connect: permission denied

Linux で GPU サポートを有効にするため、nvidia-dockerをインストール

# Add the package repositories
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

# Install package and restart docker
$ sudo apt update && sudo apt install -y nvidia-container-toolkit
$ sudo systemctl restart docker

TensorFlowセットアップ

TensorFlow の Docker イメージをダウンロード

latest stable release versionのイメージを取得
$ docker pull tensorflow/tensorflow

参考: Docker | TensorFlow

TensorFlow Docker コンテナを起動確認

$ sudo docker run --rm -it -p 8888:8888 tensorflow/tensorflow:latest-py3

~~~~(略)~~~~
Status: Downloaded newer image for tensorflow/tensorflow:latest-py3

________                               _______________
___  __/__________________________________  ____/__  /________      __
__  /  _   \  __ \_  ___/  __ \_  ___/  /   __  /_  __ \_ | /| / /
_  /   /  __/  / / /(__  )/ /_/ /  /   _  __/    / / // /_ |/ |/ /
/_/    \___/// ///____/ \____///    //      /_/  \____/____/|__/

WARNING: You are running this container as root, which can cause new files in
mounted volumes to be created as the root user on your host machine.
To avoid this, run the container by specifying your user's userid:
$ docker run -u $(id -u):$(id -g) args...

なんかでた。

外部からAIサーバとして使うために固定IPアドレスを指定

参考: Ubuntu 18.04 LTSで固定IPアドレスの設定 – Qiita

参考: Ubuntu18.04 LTSでネットワークの設定方法 – ちゃんおぎのメモ置き場

元の

# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager

変更後

# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager

ethernets:
enp3s0:
dhcp4: n
addresses: [192.168.x.xxx/24]
gateway4: 192.168.x.1
nameservers:
addresses: [192.168.x.1]
dhcp6: n

PuTTYでSSHログインのテストしてちゃんと繋がったので、とりあえずこんな感じで作業終了。疲れた。

参考

How to build mapbox-gl-js stand-alone on Windows

実質作業メモ。Windowsでの話です。

追記

ビルド作業が初めてではない(下記本編の内容を実施済み等)場合、ツール群のインストールは不要なため、下記手順のみ行う。

  1. cmd開いて cd mapbox-gl-js (ディレクトリ移動)して
  2. SET MAPBOX_ACCESS_TOKEN={YOUR MAPBOX ACCESS TOKEN} して
  3. yarn install して(必要なら)
  4. ファイル生成
    yarn run build-prod-min → dist/mapbox-gl.js
    yarn run build-css → dist/mapbox-gl.css

本編

下記のページに手順が書いてあるので実施していきます。

mapbox-gl-js/CONTRIBUTING.md at master · mapbox/mapbox-gl-js · GitHub

必要なツール群をインストール

Install gitnode.js (version 4 or greater), yarnnpm and node-gyp.

と書いてあるので、それぞれインストールしていきましょう。

git

もう入ってた。

node.js

ダウンロード | Node.js からWindows用のインストーラーをDLして実行して終わり。

Yarn 

Installation | Yarn からWindows用のStable(安定版) ver.のインストーラーをDLして実行して終わり。

npm and node-gyp.

nodejs-guidelines/windows-environment.md at master · microsoft/nodejs-guidelines · GitHub に詳しい。

  1. Windows PowerShell を管理者権限で起動
  2. npm install -g windows-build-tools を実行し、
    windows-build-tools をインストール
    ※トラブルシューティング情報も上記ページに記載あり
  3. Visual Studio Build Tools あるいは Visual Studio 2017 Community より、Visual C++ ビルド環境をインストール
  4. https://www.python.org/downloads/ よりPython2.7をインストール
  5. npm config set python python2.7 を実行
  6. npm config set msvs_version 2017 を実行

リポジトリをクローンする

git clone git@github.com:mapbox/mapbox-gl-js.git とコマンドを打ってもいいし、適当なGitHubクライアントでCloneしてもいい。

※特定のバージョンや安定版がほしい場合は、下記ページからzip等でファイルを取得する。
https://github.com/mapbox/mapbox-gl-js/releases

node moduleの依存関係をインストールする

  1. cd mapbox-gl-js (ディレクトリ移動)して
  2. yarn install を実行してインストール

warning "@mapbox/dr-ui > @mapbox/mapbox-gl-supported@1.4.1" has unmet peer dependency "mapbox-gl@>=0.32.1 <2.0.0". とかみたいなエラーが出たら、cmdを閉じて開き直してインストールコマンドを再実行すると多分解決する。

headless-gl の依存関係をインストールする

依存関係は下記。  https://github.com/stackgl/headless-gl#windows

  • Python 2.7
    ※ 先ほどの手順でインストール済
  • Microsoft Visual Studio
    ※ Visual C++ ビルド環境がほしいだけなので先程の手順でインストール済
  • d3dcompiler_47.dll
    c:\windows\system32に入っているのでOK
  • ES6 (モダンnode.js向け。オプション)
    ※ オプションなので多分不要

最終的にやりたいことは下記コマンドの通り。
copy node_modules/headless-gl/deps/windows/dll/x64/*.dll c:\windows\system32

headless-glをクローンする

stackgl/headless-gl: 🎃 Windowless WebGL for node.js をクローンする。

※特定のバージョンや安定版がほしい場合は、下記ページからzip等でファイルを取得する。
https://github.com/stackgl/headless-gl/releases

dllファイルをコピー

headless-gl\deps\windows\dll\x64\以下のdllファイルをc:\windows\system32 にコピーする。

ビルドに使うデバッグサーバの用意

mapboxアクセストークンの取得

  1. Mapbox のアカウントを作成
  2. Account | Mapbox > Tokens > Create a token からアクセストークンを作成
  3. Tokens にて、作成したトークンをコピー

デバッグサーバ起動確認

  1. cmdを起動して cd mapbox-gl-js (ディレクトリ移動) して
  2. SET MAPBOX_ACCESS_TOKEN={YOUR MAPBOX ACCESS TOKEN} を実行
    ※ここでSETした環境変数は、このセッションでのみ有効。cmdを終了すると消去される。
  3. yarn run start-debug を実行

デバッグサーバ http://localhost:9966/debug にアクセスできることを確認する。

スタンドアロンビルドを作成

以下のコマンドを実行する。
yarn run build-prod-min
yarn run build-css

dist/mapbox-gl.jsdist/mapbox-gl.css が生成されるので確認する。
HTMLではこの2つのファイルを読み込んで利用する。

余談

yarn run build-prod-min 実行時の出力が下記である。
なにやら警告?エラー?がいっぱい出ている。

mapbox-gl-js>yarn run build-prod-min
yarn run v1.19.0
$ rollup -c --environment BUILD:production,MINIFY:true

src/index.js, src/source/worker.js → rollup/build/mapboxgl...
(!) Circular dependency: src\util\ajax.js -> src\util\mapbox.js -> src\util\ajax.js
(!) Circular dependency: src\style-spec\expression\parsing_context.js -> src\style-spec\expression\compound_expression.js -> src\style-spec\expression\parsing_context.js
(!) Circular dependency: src\style-spec\validate\validate.js -> src\style-spec\validate\validate_function.js -> src\style-spec\validate\validate.js
(!) Circular dependency: src\style-spec\validate\validate.js -> src\style-spec\validate\validate_function.js -> src\style-spec\validate\validate_object.js -> src\style-spec\validate\validate.js
(!) Circular dependency: src\style-spec\validate\validate.js -> src\style-spec\validate\validate_function.js -> src\style-spec\validate\validate_array.js -> src\style-spec\validate\validate.js
(!) Circular dependency: src\style-spec\validate\validate.js -> src\style-spec\validate\validate_layer.js -> src\style-spec\validate\validate_paint_property.js -> src\style-spec\validate\validate_property.js -> src\style-spec\validate\validate.js
(!) Circular dependency: src\style-spec\validate\validate.js -> src\style-spec\validate\validate_layer.js -> src\style-spec\validate\validate.js
(!) Circular dependency: src\style-spec\validate\validate.js -> src\style-spec\validate\validate_light.js -> src\style-spec\validate\validate.js
(!) Circular dependency: src\style\style_layer\symbol_style_layer.js -> src\data\bucket\symbol_bucket.js -> src\style\style_layer\symbol_style_layer.js
(!) Circular dependency: src\geo\lng_lat.js -> src\geo\lng_lat_bounds.js -> src\geo\lng_lat.js
(!) Circular dependency: src\source\tile.js -> src\data\feature_index.js -> src\source\source_state.js -> src\source\tile.js
(!) Circular dependency: src\index.js -> src\ui\map.js -> src\style\style.js -> src\util\global_worker_pool.js -> src\util\worker_pool.js -> src\util\browser\web_worker.js -> src\index.js
created rollup/build/mapboxgl in 11.7s

rollup/mapboxgl.js → dist/mapbox-gl.js...
created dist/mapbox-gl.js in 2s
Done in 14.43s.

「Circular dependency」って何??
直訳すると「循環依存」 となるのでやんわりと察した。
AがBに依存し、BはAに依存しているのでウロボロスって話。

警告は出ているけど mapbox-gl.js は生成されているし、HTML側で読み込んでも(おそらく)正常に動いている(ように見える)。

とりあえず様子見。