Linuxホットスポット検証のため USB WiFiデバイスをいくつか動作検証してみました

・ホットスポットの動作確認した環境はつぎのとおりです。これはLinuxで最初に動作確認できたLenovoのノートPC G570での操作をベースにしたGUI操作のみのチェック手順です。
HW:
・ Intel(R)   USB 3.1
・USB2.0
OS:
・ Windows10 バージョン 1903 OSビルド 18362.295
・ Linux Ubuntu 19.04

以下にそれぞれの仕様と各OSでの動作状況をまとめました。動作確認はインストール
[表中の記号の意味]
〇:上記OS で ドライバ等の追加インストールなしで利用可能
×: 上記OS で ドライバ等の追加インストールなしで利用不可
△: 上記OS で ドライバ等の追加インストールで利用可能。ドライバ無は×
▼: 上記OS で ドライバ等の追加インストールしても利用不可。 ドライバ無は×

型番TL-WN725NWDC-433DU2HBK802.IINPT-N330multibyte
写真
メーカTP-LINKELECOM Cangad Saikogoods
pinTOP
参考AmazonAmazonAmazonAmazonAmazon 写真と違う
金額700円
(送料630円)
2,389 円
(送料 0)
299円
(送料300円)*6
480円
(送料0)
¥398
(送料0)*6
インターフェイスUSB2.0USB2.0USB2.0USB2.0
周波数2.4GHz2.4GHz
5.2,5.3,5.6GHz
2.4GHz2.4GHz2.4GHz
伝送方式11b/g/n11ac,11a,
11b/g/n
11b/g/n11n? 11b/g/n
送信出力10mW/MHz以下
Win10 子機 〇 *7× *3
Win10 HotSpot〇*b〇*b 〇 *7*b× 〇 *b
Ubuntu 子機△ *2
Ubuntu HotSpot× *1▼ *2 *5〇*bx *4〇*b
Ubuntu hostapd×? *8×? *8
Ubuntu
使用ドライバ(チップ)
RTL8188euRTL8812au(RTL8188CU) Ralink MT7601U(RTL8188CU)

*1:HotSpot起動時にエラーが発生し、正常にHotSpotを起動できない。
*2: USBデバイスとは認識するが、WiFi機器と認識しない。(メーカサイトではLinux未対応) ドライバをmake インストールすることで認識
*3: mini-CDつき、インストールすれば使えるかもしれないが、保留。
*4: WiFiのHotSpotのメニューがグレーアウトされている。
*5:HotSpot起動操作で WARNログ( device (デバイス名): Activation: (wifi) Ad-Hoc network creation took too long, failing activation)を出して、起動に失敗する。
*6:配送に非常に時間(2、3週間)がかかった。発送元は台湾。
*7: mini-CDつきだが、使用しなくてもWin10で動作した。
*8:ドライバが未対応?

参考:以下はUSBモジュールではありませんが、参考のため動作確認した結果です。

型番G570
写真
メーカLenovo
周波数2.4GHz
伝送方式11b/g/n
送信出力? (比較的弱い)
Win10 子機
Win10 HotSpot〇 ※b
Ubuntu 子機
Ubuntu HotSpot〇 ※a
Ubuntu hostapd〇 ※b
Ubuntu
使用ドライバ
AR9285

※a:Ad-Hocモードで動作する。
※b:Infraモードで動作する。

USB Linux(Ununtu)を一度起動すると、Windows10の時刻が変わる。対処できたが、このWin10の挙動は?

事象;USB Linux(Ubuntu)を起動して使用した後、Windows10を起動すると時刻がずれている。9時間遅い時刻つまり、GMT? UTCの時刻に変わっている。

暫定対処;暫定対処というよりも、事象発生時に「設定」→「時刻と言語」で、一度”時刻を自動的に設定する”もしくは”タイムゾーンを自動的に設定する”のチェックを外してもう一度”オン”に戻すと、正しい時刻にもどる。

原因調査; 推測:USB Linuxが、時計のタイムゾーンを設定していない状態になっており、Linuxを起動するとその状態がハードウェアに記録される。Windows10は起動しただけではハードウェアの設定を更新しないので時刻表示が変わると推測した。
Ubuntuを起動しtimezoneを確認した
$ timedatectl
Local time: Wed 2019-08-28 00:40:19 UTC
Universal time: Wed 2019-08-28 00:40:19 UTC
RTC time: Wed 2019-08-28 00:40:19
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
上の結果から、推測は当たっていると判断した。

根本対処、対処;
 上の確認結果から USB Linuxがハードウェア設定を変更しないようにすれば問題を発生させないと推測する。設定ベースでは、timezoneにAsia/Tokyoを設定することで解決すると推測される。

$ timedatectl set-timezone Asia/Tokyo
$ timedatectl
Local time: Wed 2019-08-28 09:44:03 JST
Universal time: Wed 2019-08-28 00:44:03 UTC
RTC time: Wed 2019-08-28 00:44:03
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

対処結果、結論:
 上の対処の結果は、USB Linux上にも記録される。また、一度Ubuntuを起動した後、Windows10を起動すると右下の時計の日時は何も設定変更しなくても正しい時刻を示すようになった。これで、問題解決であるが、Windowsの妙な挙動を検出した。Windows起動時に表示されるきれいな写真「 Windows スポットライト」 の左下に表示される時刻が9時間前の時刻になっている。気になる挙動だが、次回Windowsを起動するときには日本時間で表示される。どんな仕組みで9時間ずれが覚えられるのか、そしてWindowsを一度起動したら解消するのか。 上のメッセージの「 RTC in local TZ: no 」というのが怪しい。これを変えてみる。
$ timedatectl set-local-rtc true で解決できた。

Hyper-V上に Ubuntuで開発支援環境を整備する

方針:
 Windows10環境上にLinux(Ubuntu18.04)ベースで開発支援環境を整備する。開発環境のため長期間安定運用できる見込みの18.04を採用しています。

■1.Hyper-Vが使える状態にWindowsを構成しなおします。
PROとか上位エディションでないと使えません。
次を参考に設定する
Hyper-Vの使い方 Windows 10にWindows 7インストール
上の手順で特に補足はありません。

■2.Hyper-Vに UbuntuのVMを作成、インストールします。
Hyper-V で無線 LAN のみの PC でもネットワーク接続できるようにする方法
補足:上の手順の設定のままやるとメモリが不足する可能性が高い。起動メモリは自分のマシンのメモリサイズに合わせて決めてください。ホストOSにもメモリが必要なので半分程度を基準に、使い方に合わせて調整して割り当ててください。例えば全メモリサイズが8GBなら4GBを割り当てるといった具合に調整してください。

■おまけ:
ここで、VMから無線WiFiデバイスが使えるか確認してみました。
Hyper-V で無線 LAN のみの PC でもネットワーク接続できるようにする方法」などの情報があります。そりゃそうだ、というか、デバイスはホストOSが管理しているのでゲストOSには直接見えませんよね。つまり、無線WiFiで通信することはできるが、それはブリッジを介して接続するのでUbuntuからはブリッジ接続が有線接続のように見えるということです。よって、やりたいホットスポットとして使用することはできない。 Windows10で起動したホットスポットに対してブリッジ接続することでそれらしい動きはできそうです。しかし、これも Ubuntuからは有線接続として見えるのでUbuntuからはWiFiデバイス操作はできず目的を果たせません。

■3.terminalから ツールを追加インストールする
・まずネットワークの状態を確認するためにnet-toolsをインストールする
sudo apt install net-tools
  → ifconfigで IPアドレスなどを確認する
・ホストOSから軽るーくsshで操作したいので、sshをインストールする。
sudo apt install ssh
 → ここまでの設定で特に追加設定しなくてもホストOSから上で確認したIPに対してSSHで接続ができます。ここから下はsshからの操作でも作業できます。
・Ubuntuのメモリ消費量を削減するためにCUIで起動するように変更する
sudo systemctl set-default multi-user.target
 →VMを再起動すればCUIで起動する
・開発用のツールを導入する
sudo apt install build-essential
  →これだけで大丈夫そう。さきに下の4つのインストールを実施し後述の問題が発生したので、上インストールも実施、build-essentialのみの動作は未確認
sudo apt install git
sudo apt install make
sudo apt install make-guile
sudo apt install gcc
  →ここまでとりあえずは構築完了。 以下はビルド確認での問題。

■4.ビルドでの確認
つぎのページを参考にrtl8188eusのドライバをビルドしてみる。
https://ficus.myvnc.com/ja/blog/RTL8188%E3%81%AB%E3%82%88%E3%82%8BOrangePi%E3%81%AE%E3%83%AB%E3%83%BC%E3%82%BF%E5%8C%96Vol.2_b82

$ git clone –single-branch –branch v5.2.2.4 https://github.com/capitalfuse/rtl8188eus.git
$ cd rtl8188eus
$ make

次のようにビルドに失敗


hbox@hbox-Virtual-Machine:~$ git clone –single-branch –branch v5.2.2.4 https://github.com/capitalfuse/rtl8188eus.git
Cloning into ‘rtl8188eus’…
remote: Enumerating objects: 1173, done.
remote: Total 1173 (delta 0), reused 0 (delta 0), pack-reused 1173
Receiving objects: 100% (1173/1173), 3.71 MiB | 1.44 MiB/s, done.
Resolving deltas: 100% (693/693), done.
hbox@hbox-Virtual-Machine:~$ cd rtl8188eus
hbox@hbox-Virtual-Machine:~/rtl8188eus$ make
make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/5.0.0-25-generic/build M=/home/hbox/rtl8188eus modules
make[1]: ディレクトリ ‘/usr/src/linux-headers-5.0.0-25-generic’ に入ります
CC [M] /home/hbox/rtl8188eus/core/rtw_cmd.o
CC [M] /home/hbox/rtl8188eus/core/rtw_security.o
CC [M] /home/hbox/rtl8188eus/core/rtw_debug.o
CC [M] /home/hbox/rtl8188eus/core/rtw_io.o
CC [M] /home/hbox/rtl8188eus/core/rtw_ioctl_query.o
CC [M] /home/hbox/rtl8188eus/core/rtw_ioctl_set.o
CC [M] /home/hbox/rtl8188eus/core/rtw_ieee80211.o
CC [M] /home/hbox/rtl8188eus/core/rtw_mlme.o
CC [M] /home/hbox/rtl8188eus/core/rtw_mlme_ext.o
CC [M] /home/hbox/rtl8188eus/core/rtw_mi.o
CC [M] /home/hbox/rtl8188eus/core/rtw_wlan_util.o
CC [M] /home/hbox/rtl8188eus/core/rtw_vht.o
CC [M] /home/hbox/rtl8188eus/core/rtw_pwrctrl.o
CC [M] /home/hbox/rtl8188eus/core/rtw_rf.o
CC [M] /home/hbox/rtl8188eus/core/rtw_recv.o
CC [M] /home/hbox/rtl8188eus/core/rtw_sta_mgt.o
CC [M] /home/hbox/rtl8188eus/core/rtw_ap.o
CC [M] /home/hbox/rtl8188eus/core/rtw_xmit.o
CC [M] /home/hbox/rtl8188eus/core/rtw_p2p.o
CC [M] /home/hbox/rtl8188eus/core/rtw_tdls.o
CC [M] /home/hbox/rtl8188eus/core/rtw_br_ext.o
CC [M] /home/hbox/rtl8188eus/core/rtw_iol.o
CC [M] /home/hbox/rtl8188eus/core/rtw_sreset.o
CC [M] /home/hbox/rtl8188eus/core/rtw_btcoex_wifionly.o
CC [M] /home/hbox/rtl8188eus/core/rtw_btcoex.o
CC [M] /home/hbox/rtl8188eus/core/rtw_beamforming.o
CC [M] /home/hbox/rtl8188eus/core/rtw_odm.o
CC [M] /home/hbox/rtl8188eus/core/efuse/rtw_efuse.o
CC [M] /home/hbox/rtl8188eus/os_dep/osdep_service.o
CC [M] /home/hbox/rtl8188eus/os_dep/linux/os_intfs.o
CC [M] /home/hbox/rtl8188eus/os_dep/linux/usb_intf.o
CC [M] /home/hbox/rtl8188eus/os_dep/linux/usb_ops_linux.o
CC [M] /home/hbox/rtl8188eus/os_dep/linux/ioctl_linux.o
CC [M] /home/hbox/rtl8188eus/os_dep/linux/xmit_linux.o
CC [M] /home/hbox/rtl8188eus/os_dep/linux/mlme_linux.o
CC [M] /home/hbox/rtl8188eus/os_dep/linux/recv_linux.o
CC [M] /home/hbox/rtl8188eus/os_dep/linux/ioctl_cfg80211.o
/home/hbox/rtl8188eus/os_dep/linux/ioctl_cfg80211.c: In function ‘rtw_get_systime_us’:
/home/hbox/rtl8188eus/os_dep/linux/ioctl_cfg80211.c:354:2: error: implicit declaration of function ‘get_monotonic_boottime’; did you mean ‘getboottime’? [-Werror=implicit-function-declaration]
get_monotonic_boottime(&ts);
^~~~~~
getboottime
cc1: some warnings being treated as errors
scripts/Makefile.build:284: recipe for target ‘/home/hbox/rtl8188eus/os_dep/linux/ioctl_cfg80211.o’ failed
make[2]: *** [/home/hbox/rtl8188eus/os_dep/linux/ioctl_cfg80211.o] Error 1
Makefile:1606: recipe for target ‘module/home/hbox/rtl8188eus’ failed
make[1]: *** [module/home/hbox/rtl8188eus] Error 2
make[1]: ディレクトリ ‘/usr/src/linux-headers-5.0.0-25-generic’ から出ます
Makefile:1911: recipe for target ‘modules’ failed
make: *** [modules] Error 2
hbox@hbox-Virtual-Machine:~/rtl8188eus$

同様に別のページを参考に他のドライバをビルドしてみたが別のエラーで失敗した。

$ make
make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/5.0.0-25-generic/build M=/home/hbox/rtl8188fu modules
make[1]: ディレクトリ ‘/usr/src/linux-headers-5.0.0-25-generic’ に入ります
CC [M] /home/hbox/rtl8188fu/core/rtw_cmd.o
In file included from /home/hbox/rtl8188fu/include/osdep_service.h:41:0,
from /home/hbox/rtl8188fu/include/drv_types.h:32,
from /home/hbox/rtl8188fu/core/rtw_cmd.c:22:
/home/hbox/rtl8188fu/include/osdep_service_linux.h: In function ‘_init_timer’:
/home/hbox/rtl8188fu/include/osdep_service_linux.h:273:8: error: ‘_timer {aka struct timer_list}’ has no member named ‘data’
ptimer->data = (unsigned long)cntx;
^~
/home/hbox/rtl8188fu/include/osdep_service_linux.h:274:2: error: implicit declaration of function ‘init_timer’; did you mean ‘_init_timer’? [-Werror=implicit-function-declaration]
init_timer(ptimer);
^~~~~~
_init_timer
In file included from /home/hbox/rtl8188fu/include/drv_types.h:35:0,
from /home/hbox/rtl8188fu/core/rtw_cmd.c:22:
/home/hbox/rtl8188fu/include/wifi.h: At top level:
/home/hbox/rtl8188fu/include/wifi.h:1009:0: warning: “IEEE80211_MAX_AMPDU_BUF” redefined
#define IEEE80211_MAX_AMPDU_BUF 0x40

In file included from /home/hbox/rtl8188fu/include/osdep_service_linux.h:84:0,
from /home/hbox/rtl8188fu/include/osdep_service.h:41,
from /home/hbox/rtl8188fu/include/drv_types.h:32,
from /home/hbox/rtl8188fu/core/rtw_cmd.c:22:
./include/linux/ieee80211.h:1444:0: note: this is the location of the previous definition
#define IEEE80211_MAX_AMPDU_BUF 0x100

cc1: some warnings being treated as errors
scripts/Makefile.build:284: recipe for target ‘/home/hbox/rtl8188fu/core/rtw_cmd.o’ failed
make[2]: *** [/home/hbox/rtl8188fu/core/rtw_cmd.o] Error 1
Makefile:1606: recipe for target ‘module/home/hbox/rtl8188fu’ failed
make[1]: *** [module/home/hbox/rtl8188fu] Error 2
make[1]: ディレクトリ ‘/usr/src/linux-headers-5.0.0-25-generic’ から出ます
Makefile:1679: recipe for target ‘modules’ failed
make: *** [modules] Error 2



エラー内容をもとに調べてみると、
https://forum.manjaro.org/t/solved-error-with-rtl8812au/24066/2
https://github.com/smlinux/rtl8723de/issues/13
ドライバーのソースとカーネルバージョンの不一致が原因と言っている。
そこで、カーネルバージョンを確認する。→「カーネルバージョンの確認方法」

$ uname -a
Linux hbox-Virtual-Machine 5.0.0-25-generic #26~18.04.1-Ubuntu SMP Thu Aug 1 13:51:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

対象のカーネルバージョン用のドライバソースをビルドしてみます。
https://github.com/FreedomBen/rtl8188ce-linux-driver
→このソースは4.20にも対応しているとコメントがあるのでこれで試します



$ git clone https://github.com/FreedomBen/rtl8188ce-linux-driver.git
$ cd rtl88188xce-linux-driver/
$ make

ビルドに成功しました。 やはり、ドライバーソースが対象のカーネルバージョンに対応していなかったことが原因でした。

USBメモリにパーティションを作成する手順とツール (EaseUS Partition Master編)

先にUSBメモリにPCにインストールすることなく利用できるLinuxを構築しました。この際にUSBメモリ上にパーティションを作成して手順を紹介します。今回はパーティション管理ソフト「EaseUS Partition Master 13.5」を使用して作成する手順を紹介します。
下では「EaseUS Partition Master」を使用していますが「 EaseUS Partition Master Free」でも同様に使用できると思います。 またこのツールはデータリカバリやバックアップの機能もありディスク管理ソフトの色合いもある製品です。

目的;
 「インストールせずにUSBから起動するだけで動作するLinux環境を構築する」これを目的に、次の構成でパーティションを切ります。

パーティション1
 ファイルシステムFAT32
 パーティションサイズ 8GB(Linuxのインストール+Persistentのサイズ)
パーティション2
 パーティションラベル Persistence (この名称のパス名でマウントされる)
 ファイルシステム Ext3 (ツールがExt4未対応のためExt3としています)
 パーティションサイズ USBメモリの残り全部

●0)準備
 easeus.comのサイトからファイルをダウンロードしてインストールします。
下では「EaseUS Partition Master Pro 13.5」を使用しています。ダウンロードしたファイル名は「epm_trial_installer」でした。これ実行すると下のようにインストーラ本体をダウンロードしインストールします。

インストールが終わるとデスクトップにつぎのアイコンができます。これをクリックして起動します。

●1)「 EaseUS Partition Master 」が、つぎのように起動します。

●2)起動した画面でUSBメモリのディスク番号を確認し、下の操作対象の領域を確認します。

●3)操作した領域にパーティションがすでに確保されている場合は、パーティションを削除して、”未割り当て”状態にします。対象のパーティションを右クリックして”削除”を選択します。
→補足2参照

●4)つぎに「パーティション1」を作成します。対象の領域を右クリックして”作成”を選択します。

●5)「パーティション1」としてファイルシステムをFAT32、プライマリ、パーティションサイズを8GBに指定してパーティションを作成します。

●6)”作成”で「OK」をクリックすると、つぎの注意ダイアログがでます。「OK」をクリックして継続します。
→補足1参照

●7)つぎにパーティション2を作成します。
  パーティションラベルに”persistence”、ファイルシステムは”Ext3”、プライマリを指定し、パーティションサイズは残りすべてを割り当てます。

※この時点では、右側のパーティションは削除されように見えていますが、操作に登録されているだけで、まだ実際には削除などの操作はされていません。

●8)操作内容と構成イメージを確認し、問題なければ左上の”操作を実行する”をクリックします。

●9)つぎのダイアログが表示されるので、「適用」をクリックします。※ここで”適用”をクリックしてしまうと後戻りできません。間違いないことを確認してください。

●10)操作の適用中は下のダイアログで進行状況を表示します。
 USB 2.0の64GBのUSBメモリの構成で完了までに1時間47分かかりました。

●11)適用が完了するとつぎのように「完了しました」のメッセージが表示されます。

●12) 「EaseUS Partition Master 」を終了した後、USBメモリを取り外します。

以上で、USBメモリのパーティション構成が完了します。 いくつか補足がありますが「EaseUS Partition Master 」でGUIでの簡単な操作のみでパーティションの操作が行えます。
 下に主に 「 EaseUS Partition Master 」 の開発者向けのコメントを書きます。

■補足1
「Windowsはリムーバブルデバイス上の最初のプライマリパーティションのみ識別します。もしプライマリパーティションがない場合は最初の論理パーティションが識別されます。続行しますか?」
→正しいのかどうか判断が難しいほど情報量が多いです。
 1) もう少しわかりやすい説明をしたほうが良いですが、そのためには図を使うなど別のページに記載して、このダイアログではそのページをポイントするなどして参照してもらうようにしたほうが良いでしょう。
 2)Windows10では1つめ2つめともにパーティションを下のようにFAT32でフォーマットすると認識できました。 下の画像ではH:とX:の2つのドライブで認識しています。 このため、「 最初のプライマリパーティションのみ識別します。 」は不適切ではないでしょうか。旧バージョンのWindowsでは認識できないのなら、”WindowsXX以前では”のような表現を追加したほうが良いです。

■補足2
「パーティションサイズ調整/移動」や「削除」のメニューが非表示となる事象が発生しました。この 件について原因と回避策について現在(2019/8/16時点)EaseUSにて調査中です。
この事象は別のツールにてパーティションを再構成することで解消しました。ただパーティション削除の操作だけでは未割り当て状態には変わらなかったので何らかの異常な状態になっていたものと推測します。今のところ同じ事象を再現できていないので確認することができませんが、いったんパーティションを復旧させる操作をすることでパーティション削除できる状態に復旧できると推測しています。

USBメモリにパーティションを作成する手順とツール

先にUSBメモリにPCにインストールすることなく利用できるLinuxを構築しました。この際にUSBメモリ上にパーティションを作成して手順を紹介します。

目的;
 「インストールせずにUSBから起動するだけで動作するLinux環境を構築する」これを目的に、次の構成でパーティションを切ります。

パーティション1
 ファイルシステムFAT32
 パーティションサイズ 8GB(Linuxのインストール+Persistentのサイズ)
パーティション2
 パーティションラベル Persistence (この名称のパス名でマウントされる)
 ファイルシステム Ext4
 パーティションサイズ USBメモリの残り全部

●USBメモリにLinuxを構築する際にUSBメモリのパーティションを切る手順

いくつか方法がありますが、まずWinodws10とUbuntuのISOのみでの作業方法をざっと書きます。

1)前準備として暫定版のLinux環境を作成します。Windows10上でUniversal-USB-Installerを使ってUSBメモリをFAT32でフォーマットして、UbuntuをUSBメモリに書き込みます。
 ※フォーマット対象を間違わないように注意してください。間違うと自マシンのHDDが消されます。
  →この部分はUSBメモリでなくDVDでもよいかもしれません。
2)作成したUSBメモリを使ってUbuntuを起動します。起動時のメニューでいくつか選択肢がでます。
つぎのいずれかを選択します。”safe graphics”でない場合、私の環境では2画面でディスプレイ表示できましたが、HDMIのほうがチラつきが激しく不安定でした。
・Try Ubuntu without installing (safe graphics)
・Install Ubuntu (safe graphics)

”Try Ubuntu without installing ”で起動した場合は、起動後に”Ubuntuインストール”を実行します。

上のメニューのどちらでもよいはずですが、左側のメニュー有無の差異により”Try Ubuntu without installing ”で起動したインストラーでは、一部のメニューが画面下にはみ出して動作できない事象が発生しました。”Install Ubuntu”で起動するほうがよいでしょう。

「アップデートと他のソフトウェア」画面では特に設定は何でもよいです。ここで構築するのはパーティションが目的なので、、。
「インストールの種類」画面で、”その他”を選択してください。間違うと自マシンのHDDが消されます。※

インストール先の指定でUSBメモリにパーティションを作成してそこにインストールします。
未フォーマットのUSBメモリの場合はパーティション作成を実行できます。
しかし、一度パーティションを作成すると、この画面の操作では再度パーティションを切りなおすことができませんでした。

インストール先の指定では、USBメモリを選択してください。間違うと自マシンのHDDを上書きし消されます。※

以上の通り、Ubuntuからパーティション作成をすることは可能ですが、パーティションを切りなおせないパターンがあるなど、いろいろかゆいところに手が届かないところがあります。

■どうしても、パーティションを切りなおしたくなったので下のようにツールを利用しました。
■無償版「MiniTool Partition Wizard Free 11」を使ってパーティションを切りなおします
https://www.partitionwizard.com/free-partition-manager.html

●0)準備
 MiniToolのサイトから無償版のファイルをダウンロードしてインストールします。
ファイル名は「pw11-free.exe」でした。インストールするとデスクトップなどにつぎのアイコンができます。これをクリックして起動します。

●1)「 MiniTool Partition Wizard 」のメニューで”ディスク&パーティションの管理”を選択します。

●2)起動した画面でUSBメモリのディスク番号を確認し、下の操作対象の領域をポイントします。

●3)操作した領域にパーティションがすでに切られている場合は、このパーティションを削除します。対象のパーティションを右クリックして”削除”を選択します。

※この時点では、右側のパーティションは削除されように見えていますが、左下の保留中の操作に登録されるだけで、まだ実際には削除はされません。左上の”破棄”をクリックすると次のようにダイアログが表示されるので「はい」をクリックすることで 、保留中の作業を破棄することがきます。

●4)つぎに「パーティション1」を作成します。対象の領域を右クリックして”新規作成”を選択します。

●5)「パーティション1」としてファイルシステムをFAT32、パーティションサイズを8GBに指定してパーティションを作成します。

●6)”パーティション新規作成”で「OK」をクリックすると、つぎの警告ダイアログがでます。「はい」をクリックして継続します。
→補足1参照

●7)つぎにパーティション2を作成します。
  パーティションラベルに”persistence”、ファイルシステムは”Ext4”、パーティションサイズは残りすべてを割り当てます。
→補足2参照

●8)作業内容(保留中の操作)と最終イメージ(右側)を確認し、問題なければ左上の”適用”をクリックします。
→補足3参照

●9)つぎのダイアログが表示されるので、「はい」をクリックします。※ここで”はい”をクリックしてしまうと後戻りできません。間違いないことを確認してください。

●10)保留中操作の適用中は下のダイアログで進行状況を表示します。
 USB 2.0の64GBのUSBメモリの構成で完了までに約2時間かかりました。
→補足4参照

●11)適用が完了するとつぎのダイアログが表示され作業が完了します。

※上の状態で。Windows10のエクスプローラーでUSBメモリの”取り外し”をすると、次のダイアログが表示されます。 「MiniTool Partition Wizard 」がUSBメモリをロックしている状態になっています。

●12) 「MiniTool Partition Wizard 」を終了した後、USBメモリを取り外しします。

以上で、USBメモリのパーティション構成が完了します。 いくつか補足はありますが「MiniTool Partition Wizard 」 無料版は十分使えると考えます。
 下に主に 「MiniTool Partition Wizard 」 の開発者向けのコメントを書きます。

■補足1
「Windowsがリムーバブルディスクの一番目のパーティションのみを識別できるだめ、この新規作成されたパーティションはWindowsで使用できません。」
→この部分だけでもいくつかコメントがあります。
 1) つぎのようにメッセージの日本語表現が不適切な部分があります。「Windowsが 」の”が”は、”は”のほうが適切です。「 識別できるだめ 」の”だめ”ではなく”ため”です。メッセージリソース全体にわたってスペルチェックをかけるか日本語がわかる人にレビューしてもらうことをお勧めします。
 2)それから機能的に不適切なところがあります。Windows10では1つめ2つめともにパーティションを下のようにFAT32でフォーマットすると認識できました。ドライブ文字にX:指定することで正しくX:に割り当てられました。 下の画像ではH:とX:の2つのドライブで認識しています。 このため、「 この新規作成されたパーティションはWindowsで使用できません。 」は不適切ではないでしょうか。
 3)旧バージョンのWindowsでは認識できないのなら、”WindowsXX以前は使用できません”のような表現にしたほうが良いです。

■補足2
「パーティション新規作成」ダイアログで、「パーティションのラベル」を入力した後、ファイルシステムをExt4に変更すると「パーティションのラベル」の文字がクリアされます。ファイルシステムによってはパーティションラベルが入力できないものがあるのはわかりますが、入力枠には上から順番に入力したがるものです。クリアするなら本当にクリアするべき条件に合致しているときだけクリアするようにしたほうが親切です。

■補足3
 「保留中の操作」の番号ですが”2.5”とかは何を意味しているのか分かりにくい、すべて整数で処理順に番号を振ったほうが理解しやすいです。なにか意味を持たせるのであれば、利用者が直感的に分かる表現にしたほうが良いです。

■補足4
「 保留中の操作を適用しています… 」の %の意味は、それぞれの進捗%なので、それ以上でもそれ以下でもないのですが、利用者が一番知りたいのは「あとどれくらい時間がかかるのか」ということです。 現状の%表示ではあとどれくらいかかるのか わかりにくいです。
  FAT32からExt4にフォーマットしなおすのに2時間ほどかかりましたが、FAT32にフォーマットしなおすのに10秒ほどしかかかっていません。Ext4にフォーマットしなおすのに2時間もかかるのは何か余分なことをやっているのか、FAT32にフォーマットするのに必要かもしれない何かを省いているように思われます。工夫することでもう少し早く処理を終わらせることができるように思います。

インストールせずにLinuxを使うならUSBメモリは USB3.xで

LinuxでWiFiのホットスポットの機能を検証するためにインストールすることなく利用できるLinuxを構築してみました。

前提条件
 ターゲットマシン:Intel Core i7-2600
NVIDA GeForce GTX560だが障害あり。Winでは640×480のモードかリモートデスクトップでの利用で運用回避中
おもにWin10で利用しておりインストールはしたくない。

  別のマシン:Intel Core i7-8700など2台のマシン
ネットワーク:有線LANあり
Linux:2019/7/30時点で最新(Ubuntu19.4を使用)

参考情報
 Linux環境構築にあたり、つぎのサイトの情報を参考にさせていただきました。
LinuxをUSBメモリへインストールする

ターゲットのマシンではなく正常に動作するPCでUSBメモリにLinux環境を構築します。上のサイトに書かれている作業でほぼ実現できます。ただ Ubuntuのバージョンが上がっているので、すこし異なる手順のところはありました。今思えば、より簡単に変わっているイメージですが、上のサイトの記載に引っ張られてすこしいらないことをした感触はあります。その辺の手順は差っ引いて、以下に、上のサイトと異なるポイントを書いておきます。

1)「USBメモリ上にパーティションを作成」のところで、「ラベルはcasper-rwとします」とありますが、persistenceにします。 最悪は、何も名前を付けなくてもUbuntuが起動時に勝手に適当な名前を付けてマウントしてくれます。そのあとUbuntuからExt4のパーティションラベル名を変えることも可能です。
2)パーティション作成は最初UbuntuをUSBで起動してUbuntuのインストールの際に動くパーティション分割で構成しました。これでも十分に分割は可能です。しかし、一度分割したものの再構成し直すなど痒いところがどうしても実行できませんでした。そこで MiniTool Partition Wizard  を利用して対処しました。このパーティション作成については別ページで紹介しています。また、EaseUS Partition Masterを使う例も紹介しています。
3)「 Persistent fileのサイズは0に設定します。 」これはやりません。取れるだけ確保します。このため、第1パーティションは少し大きめに設定しておきます。もちろん第2パーティションも1)に書いたように Persistent storage に自動的に割り当てられます。
4)上のようにUbuntuの仕様変更?の影響もあって、「パーティションをPersistent storageとして割り当てる」のところの作業は不要です。

ここまでで、正常に動作するPCではUSB でLinuxを起動できるようになります。
これに加えて、最初の課題の”ディスプレイアダプタ問題”の回避をします。そのためにはグラフィックを使用しないように設定変更します。

\boot\grub\grub.cfg を編集します
既存の menuentryをコピーしてメニュー名を “Try Ubuntu without installing with TEXT” などに変更します
boot=casper xxxの部分を、”boot=casper text nomodeset —”に変更します

この変更により、上の写真のように起動時にテキストで起動ログが表示されるように変わりますが、起動し終わるとGUIが起動します。そこで、Ubuntuが起動した後、terminalなどを使ってつぎのコマンドでCUIモードに切り替えます。
sudo systemctl set-default multi-user.target
これにより、CUIで起動できます。
 ※記載しているサイトが見当たりませんでした。デフォルトのubuntu アカウント のパスワードは””つまりエンターのみ。sshからは空文字をうけつけないなどリモートからログIDでのログインが面倒です。別途アカウントを作ってsudoグループに追加して使用します。ここまでで、Linuxを利用するベースの環境ができました。

64GB USB2.0仕様と 32GB USB3.0仕様の2種類のUSBメモリを使用して起動確認を行いました。それぞれの起動、停止時間は次の通りでした。

   USB2.0USB3.0
起動からログイン画面まで4分45秒50秒
起動パスワード入力後、ログイン完了まで5分1秒
シャットダウンから電源が切れるまで5分50秒20秒

表中の「ログイン画面」は上の画面です。

上表の「 ログイン完了 」とは上の画面の状態です。


上記のようにUSB2.0でも動作はしますが、かなり処理速度が遅いのでちょっと使いづらい。USB3.0は比較的早い、もう少し早いほうが良いのですが…。今なら、USB3.0以上を使うしかないでしょう。

さて本題の障害のあるPCで確認します。このPCはWindows10が何と起動して、利用することができるが、起動時のロゴやデスクトップのアイコンが崩れて見えるとうレベルの壊れ具合です。以前は2画面使えていましたが、HDMIでつないだディスプレイには表示できず、古いディスプレイBL-191A-Bで表示が崩れながら使うか、リモートデスクトップで別マシンから使うかしています。リモートデスクトップの場合はディスプレイアダプタを使わないので障害の影響を受けにくいのでしょう。

上の写真をよく見ると、微妙な濃淡ですが妙な横線が何本もあるのが見えます。こんな感じで微妙な壊れ方をしています。


このマシンでUSB Linuxを起動してみました。

普通に起動できたかと思い蒔いたが、一切動きません。 キーボードを認識していない のかユーザー名を入力できません。最後の確認としてキーボードのUSB端子を抜き差ししてみました。すると、次のようにメッセージがでました。

”usb 3-1.3: device not accepting…” USBになにか差し込まれたことを認識はしたが、デバイスを受け付けていません。

テキスト起動であればグラフィックに多少の問題があっても使えると考えていたのですが、上の状態となりだめでした。残念、この状況からLinuxはまだまだハード障害に弱いと感じましたというか、Windowsがこの状況に耐えているのがすごいという感じでしょう。

とりあえず、正常に動くPCで、検証進めます。