MENU

UEFI環境へのWindows10クリーンインストール

windwosインストール手順

はじめに

既にUbuntuを入れているマシンに新規HDDを追加しWindows10をインストールしようとした。 UEFI環境でのGPT形式にしなければならないエラーと、メディアからのインストールでのエラーと、複合的なエラーに見舞われ、 まとまったものが見つからなかったため、備忘録。

手順

windowsのインストールメディア(DVD)の作成

https://www.atmarkit.co.jp/ait/articles/1508/06/news034.html

ダウンロードページでツールを今すぐダウンロード 実行し「別のPCのインストールメディアを作成」 書き込み先のDVDの指定画面が現れるため、その画面からISOファイルを書き込み

新規ディスクにWindowsクリーンインストール

起動画面にてF2を押して、boot画面へ。 bootプライオリティを(UEFI)DVDを選んでDVDからインストール画面に移行

プロダクトキーを入れずに次へ(後で入力する) (カスタム)windowsのみをインストールを選択する ここで、二つの課題が発生 - UEFIBoot形式の場合GPT形式でパーティションを作る必要がある。さもなくば「このディスクにwindowsをインストールすることはできません。選択されたディスクにはmbrパーティションがあります。efiシステムでは、gptディスクのみにwindowsをインストールできます。」というエラーが出る。 - DVDやUSBのインストールメディアを使う場合、「次へ」を押すと「新しいパーティションを作成できなかったか、既にあるパーティションが見つかりませんでした」というエラーが出る。参考

これらを解決するには、diskpartで以下の実施をした。(ネット上にはすぐには見つからなかった) - GPT形式に変換 - インストール先のディスクに、メディア内のインストールファイルを移送しておくことで、そちらからの起動を可能にさせる(なぜかメディアが刺さっていると上記エラーが発生するので)

> diskpart #DISKPARTを起動
> list volume #現在のボリュームの一覧を表示

例えば、インストーラの格納されたメディアでドライブレターは"D"、これからWindowsをインストールしたいボリュームのドライブレターが適当に割り当てられていることが分かる。

Windowsをインストール先ディスクを選択する

DISKPART> list disk

ここでインストール先の適切なディスクを選択する(データが消えるので作業対象を間違えないように)

DISKPART> select disk=1
DISKPART> clean
DISKPART> convert gpt

ここでlist diskでGPTの列に※が付く。

DISKPART> list disk
DISKPART> list partition
DISKPART> select partition=1 # 対応するパーティションを選択
DISKPART> create partition primary size=8192MB

ここで、サイズはメディア内のインストールファイルを移せるのに十分な領域で確保した。 後で、ディスクの残容量を全てWindowsをインストールするパーティションに割り振る。

DiskPart は現在のパーティションをアクティブとしてマーク。 ``` DISKPART> active

作成したパーティションのフォーマット

DISKPART> format fs=ntfs quick

DiskPart は、ドライブ文字またはマウント ポイントを割り当て

DISKPART> assign

 
最後に> list volumeでどうなったか確認。

ここで、ディスクを抜いて再起動。
(先ほどコピーした先のディスクを優先にブートして)インストールファイルが開始されることを確認します。

そこまでは先ほどと同様に進め、割り当てられていない残りのディスク領域を選択して「次へ」を選択。
インストールが進むはず。

Pyinstaller 文字コードエラーの解決方法

はじめに

pyinstaller の以下のエラーに悩んでいる人は多い様子。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 152: invali d start byte

この解決方法については、英語記事も日本語記事も

PyInstaller\compat.py のデコード部でエラーを無視しようという解決方法しか載っていない

            if encoding:
                # out = out.decode(encoding)
                out = out.decode(encoding, errors='ignore') 

この方法は根本解決にならないのではないか、もっと良い方法はないのかと思ってしまう。

しかしながら、結論からいうと、どうしようもなくPythonの環境を再構築する他なかった。

状況

・突然このエラーが出始めるようになった ・対象のpyスクリプトエンコーディングは全く問題ないし、pyinstallerが使用できていた過去のコミットに戻ってもエラーは変わらなかった

以上の状況を考えるとスクリプトの問題ではなくpyinstallerを取り巻く環境が悪さしている。

考察

この状況になった起点は、pyinstallerを使用する前にdistutilを使った自作ライブラリのsetupを行っていたことしかない。 もしかすると、このdistutilを使ったビルドで取り巻く環境がおかしくなったのかもしれない。 なお、自作モジュールを消すなどしても全く効果はなかった。結局、効果のあった方法は、python環境の再構築だった。 以下で既存の環境をリスト化

pip freeze > pip_list.txt

ここから、自分が入れたライブラリに限ってrequirements.txtにまとめ、pythonを再インストールの上以下で再構築した。悩むよりこれが速かった。

pip install -r requirements.txt

pyinstallerの実行はvenv上での構築に限ったほうがクリーンで確実なのかもしれない。この件に詳しい方がいらしたら是非教えてください。

wifiとPC(Windows10)接続がよく切れる場合の対処法

はじめに

WiMAXのW06とWindows10のPCのwifi接続がよく切れるため、対処法を探りました。 特に、windows10のアップデート(2020/08現在)でwifiのセキュリティ標準が変わっているようです。 よくW06とiPhoneとの相性が悪いことは報告されているのですが、PCでの対処について明記しているところがなく、まとめました。 原因はセキュリティ設定にあるようです。

対処の流れ

「このwifiネットワークでは、以前のセキュリティ標準が使用されています」とポップアップ

Wifi接続時に表題のような警告が表示されます。以下のリンクに誘導されます。

Windows 10 の安全でない Wi-Fi ネットワーク

みてみると 「古いセキュリティ規格を使用しているために安全でない Wi-Fi ネットワークに接続していることを示す通知が表示されることがあります。たとえば、これは、セキュリティに WEP または TKIP を使用する Wi-Fi ネットワークに接続する場合に発生することがあります。これらのセキュリティ規格は古く、既知の不具合があります。」との文言

wifiルーターの設定を変える

セキュリティの設定を変更しましょう。 wifi接続している状態で以下に入ってください。

http://192.168.100.1/html/login.htm

f:id:massskt:20200809165859p:plain

右側のログインを実施します。パスワード初期設定などは説明書を参考にしてください。

次に設定画面でのWPA暗号化項目を以下の通りAESに設定ください。これで完了です!

ここでTKIPを使用していると上記の警告が出て接続が切れやすい状態になるようです。

f:id:massskt:20200809170026p:plain

変更するとwifi接続のパスワード再入力を要求されることがあります。

Tensorflow keras GPU指定

はじめに

やりたいこと

以下のように複数GPUがある状況において、Keras tensorflow環境下でGPU指定で動かしたいことがある。 f:id:massskt:20200127132211p:plain

バイス指定と検索すると以下のような記事をよく見るが、これはうまくいかなかった。

import tensorflow as tf
from keras.backend.tensorflow_backend import set_session
config = tf.ConfigProto(
    gpu_options=tf.GPUOptions(
        visible_device_list="1", # specify GPU number
        allow_growth=True
    )
)
set_session(tf.Session(config=config))

以下のエラーになり進めなかった

AlreadyExistsError: TensorFlow device (GPU:0) is being mapped to multiple CUDA devices (0 now, and 1 previously), which is not supported. This may be the result of providing different GPU configurations (ConfigProto.gpu_options, for example different visible_device_list) when creating multiple Sessions in the same process. This is not currently supported, see https://github.com/tensorflow/tensorflow/issues/19083

わかったこと

バイスGPU指定はかなりバージョンや環境に依存することが分かった。 少なくともtensorflow 2以降は上記書き方ではない。1.15までのバージョンでもエラーの表記でさえいろんな状態があった。

できた環境

tensorflow 1.12.0

Ubunutu: 18.04 GPU: RTX2070super GPUdriver : nvidia-driver-430 CUDA: 9 cudnn: 7 tensorflow 1.12.0 keras 2.2.4

コード

以下のような書き方で、2個目のGPUを使用するコードとなった。 コード中にos.environ["CUDA_VISIBLE_DEVICES"] = "1" を書き足し、visible_device_list="0"とするところがポイントであった。 まず、環境変数GPUのうち1番目(項番は0番目を最初とするので、物理的には2番目)を指定し、これで2個目のGPUのみが見えるようになった状態でvisible_devise_listを0とする。 なお、CUDAバージョンを10にして構築した際には、os.environのところでカーネルが落ちてしまって進めなかった。

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "1"  

import tensorflow as tf
from keras.backend.tensorflow_backend import set_session
config = tf.ConfigProto()
config = tf.ConfigProto(
    gpu_options=tf.GPUOptions(
        visible_device_list="0", # specify GPU number
        allow_growth=True
    )
)
config.gpu_options.allow_growth = True  # dynamically grow the memory used on the GPU
sess = tf.Session(config=config)
set_session(sess)  # set this TensorFlow session as the default session for Keras

SSHで外部PCに接続してDockerでjupyterを使う

[contents:]

はじめに

データはローカルのPCで計算リソースが余ったPCの計算リソースだけ利用してJupyterで解析したいことなどがあります。 LinuxPCを前提として、計算リソースを利用したいPCにSSHでアクセスして、sshfsでローカルPCをマウントし、そこでDockerを立ち上げます。

手順

リモートPC側でsshの設定

sshでログインする

ssh xx@ip

例えばip は192.168.1.21のようにリモートPCにログインします。

Dockerのインストール

リモートPC上にDockerをインストールしていなければ、インストールをします。 コンテナに立ち上がったJupyterのアクセス方法は以下の通りです。 以下の記事参照 www.mechmathmass.tokyo

sshfs でローカルフォルダをマウント

インストール

sudo apt-get install sshfs

リモートPCに自分のPCのファイルをマウントする際、他のユーザー(例えばDocker)からもそのフォルダを見れるようにしていきます。

初回のみ設定

/etc/fuse.conf のuser_allow_otherをコメントインします。 適当なエディタで編集してください。 ※元ファイルを適当にリネームして保存しておくといいと思います。

 sudo vi /etc/fuse.conf 

実際にマウント

リモートPCからクライアントPC(ローカルPC)の特定のフォルダをマウントする

sudo sshfs [ローカルPC]@[IP]:[元ファイルパス] [マウント先] -o allow_other

これでマウントしたフォルダに移動してDockerを実行すれば、計算リソースとしてはリモートPCを使うことができます。

ネットワーク環境ないWin10PCにDL環境構築

python 環境導入メモ

初めに

オフラインでGPU tensorflow バックエンドのkeras 環境構築を実施するためのメモ

環境:windows10 64bit

各種バージョン早見表

バージョン対応はtensorflow のテスト済みのバージョンの組み合わせを用いるのがよい バージョン tensorflow_gpu-1.13.0 Python バージョン 3.5~3.6
コンパイラ MSVC 2015 Update 3
ビルドツール Bazel 0.15.0
cuDNN 7
CUDA 9

www.tensorflow.org

Anaconda の導入

オンラインPCでanaconda のインストールファイルを以下から入手し、オフラインPCでインストールを実行 pathは自動で通すように✔するところがあり、既存のpython環境とのバッティングの可能性があることから非推奨とのことであるが、pathを自分で通すのが面倒なため✔した。

https://www.anaconda.com/download/

実際にダウンロードしたのは以下 anaconda3-5.2.0-Windows10-x86_64.exe

適当にコマンドプロンプトpythonと打って、pythonインタープリタを起動し、コマンドのパスが通っていることを確認した。

Visual studio community 2015

現時点では2015でないといけないらしい。visual studio 2015 build toolだけでもいいとのことだが、後述のようにisoファイルとしてダウンロードするときに、該当のbuild toolが見つけられなかったため、visual studio community 2015 をisoファイルとしてダウンロードした。 このダウンロードには現時点では、アカウント登録とユーザーエクスペリエンス改善プログラム?への同意が必要であった。(比較的見つけづらい場所にあり) isoファイルをオフラインPCで右クリックしてマウントしたうえで、vs_community.exeを実行する。推奨設定でのダウンロードを実行した。

ライブラリのインストール

以下を参考に実施した。 https://qiita.com/nannoki/items/c44cbef642aa53904b40

小畑さんの環境を参考に以下とした。 ただし、Jinjaが入らなかったので、(要非はわからないが)省いた




CUDAのインストール

developer.nvidia.com

v9.0とした。現時点でtensorflowが対応可能な最新のバージョンはこれ。

cuda-9.0.176_win10.exe

CuDNN

バージョンは9.0。オフラインPCでzipを解凍して、以下を参考に所定の場所にファイルを入れた。 一部パスの設定が必要

https://www.sejuku.net/blog/43784

cudnn-9.0-windows10-x64-v7

PD対応 充電器&TypeC USBケーブル  ノートPCの対応

初めに

type C での充電をするタイプのノートPCが標準的になってきたように思います。 充電ケーブルは職場以外にも欲しいと思いケーブルの選定をしました。 純正の充電器を使えば安心ですが、サードパーティー製の市販品で間に合わせましたので注意点など載せていこうと思います。 ケーブルなどはダイソーのもので済んだのでそれにも言及していきます。

[:content]

使用したもの

PC Lenovo X395
充電器 ミヨシ MCO USB PD(PowerDelivery)対応 USB-ACアダプタ USB-C・USB-A 3ポート(45W出力)
ケーブル ダイソー 高速充電・通信ケーブル typeC ⇔ typeC

f:id:massskt:20191215162951j:plain

対応品の選び方

充電器本体

 単純にtypeCのものであればいいというわけではなく、必要な規格があります。  裏面を見たときに、必要電圧V と電流値Aが書いてあります。  今回の場合は20V 2.25Aで充電可能であります。これはスマートフォンの充電の電圧5Vなどより高いものであり、高速充電(PD:PowerDelivery)対応の充電器である必要があります。 f:id:massskt:20191215164211j:plain

今回購入したものはこれです

ケーブル

ケーブルは基本的にPD対応の表記があるものが望ましいです。 今回ダイソーの品を選びましたが、PD対応か否かは表記がなかったので少し不安なところがありましたが、「2.4Aまで対応」の表記にて試してみたところいけました。 充電しているかどうかの判断は通常エラーメッセージの表示がなく、充電ランプがつく状態であれば充電はできています。

なお、「作業しながらの充電」 かつ 「スマホやポケットWi-Fiの同時充電時」での充電もOKでした。

終わりに

なによりダイソーの品のコスパがいいです。驚き。普通にPD対応のケーブルを買うと1000円近くするのでお得でした。 保証はされていないので皆様もご自分の責任で試してみるといいかと思います。