宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
次の号に掲載される予定のシス管系女子の原稿を制作中に、突然画面がグリッチしたかと思ったら無反応になり、電源長押しで再起動を試みても画面は真っ暗のまま、UEFIの画面すら出てこなくなってしまった。追加で挿してたグラボを抜いても状況変わらずだったので、マザーボードとかオンボードグラフィックスとかその辺がお亡くなりになったのだと思われる。前回調達して移行したのは2017年5月だったので、享年約3年9ヵ月だった。
作業中の原稿は、そのPCの起動ドライブだったSSD(M.2 NVMe)の中に閉じ込められてしまってたんだけど、AOTECHというブランドから出てるUSB接続の外付けHDDとして使えるようにするケース(当初、「M.2」という点だけに気を取られて「M.2 SATA」のみ対応のケースを買いそうになってしまったけど、Twitter上で「安い物はM.2 SATAのみ対応でM.2 NVMeと互換性が無いよ」と指摘を頂いて、ギリギリで回避できた。危なかった)を使って取り出して、別のPCでとりあえず完成まで仕上げて提出した。この間1週間もかかってない。
それと並行して進めなくてはならなかった新PCの調達だけど、そういう切羽詰まった状況で吟味してられなかったので、前回と同じくパソコン工房のBTOのクリエイター向け構成にした。4年の延長保証を付けずに購入したPCが3年9ヵ月で死んでしまったので、今回は4年保証も付けた。
移行は概ね、過去にやった以下のそれぞれの作業の合わせ技で行った。
最新の情報へのアップデートも兼ねて、改めて書き起こしておく。
個人使用ではMicrosoftのアカウントを特に作らずに使ってきていたので、今回もローカルアカウントとして常用アカウントを作成した。もし後からMicrosoftのアカウントを作ることになったら、このローカルアカウントを紐付けて使うことになるはず。
初回起動時にうっかりMicrosoftアカウントでログオンしてしまった場合は、ローカルアカウントを作成してそちらに紐付けし直す手順に従って操作する必要がある。
家庭内LANで他のコンピューターから参照するときや、WSL1のホスト名などで度々目にする事になるので、初期状態のランダムな名前から、何らかのわかりやすいコンピューター名に変えておく。今回は旧PCの置き換えなので、旧PCとまったく同じ名前にした。
旧マシンから移植したHDDから、以下の位置にある物を、新環境の対応するパスにコピーする。(ユーザの内部IDが変わっているので、コピーの前に、新環境のユーザにフルコントロールの権限を付与しておく必要がある……のだけれど、初めてアクセスする時にWindowsにアクセス権の付与を尋ねられて、OKしたらいい感じに処理してくれた)
*:\Users\(username)\AppData\Roaming
(一般的なアプリのユーザー設定)*:\Users\(username)\AppData\Roaming\npm
(WindowsのNode.jsのnpmパッケージ)*:\Users\(username)\AppData\Roaming\npm-cache
(Node.js関連)*:\Users\(username)\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe
(Windows Terminalの設定)
AppData\Local
配下にはストアアプリの設定が保存されているようだが、WSLのファイルシステムなど安易に引き継いで大丈夫かどうか怪しい物もあるため、安全そうな物だけ引き継いだ。*:\Users\(username)\AppData\Local\VirtualStore
(WindowsのVirtual Store機能で自動的にリダイレクトされた書き込み先のファイル。古いアプリの設定がこちらに置かれている可能性がある。)*:\Users\(username)\AppData\Local\node-gyp
(Node.js関連のファイル)*:\Users\(username)\Desktop
(デスクトップ上のファイル)*:\Users\(username)\Documents
(ComicStudioとか、ここに設定を保存してる物がある)*:\Users\(username)\Downloads
(ダウンロード済みファイル)*:\Users\(username)\Music
(iTunesのライブラリはここにある)*:\Users\(username)\Pictures
(画像系のデータが保存されてることがある)*:\Users\(username)\Videos
(動画系のデータが保存されてることがある)*:\Users\(username)\.*
(GIMPなど、UNIX・Linux系由来のアプリはホーム直下の.
で始まる名前のフォルダに設定を保存しがち)*:\Users\Public\*
(ユーザーに依らないデータ類)*:\ProgramData
(作りの古いアプリがここに設定を保存している場合があるのと、比較的最近のアプリもユーザに依らない設定はここに保存してるっぽい)*:\Program Files\
配下のアプリケーション(インストーラを使用せずインストールした物があるため)*:\Program Files (x86)\
配下のアプリケーション(インストーラを使用せずインストールした物があるため)*:\Program Files (x86)\JustSystems\ATOK
(ATOKのバージョンに依らない広辞苑とかの辞書はここにある。ATOK Syncでは同期されないので、この時点でコピーしておく必要がある。)*:\Windows\Fonts
(フォント。ファイルを全選択して新環境のC:\Windows\Fonts
にコピーしようとすれば、フォントファイルはフォントとしてインストールして、そうでないファイルは警告が出るという感じでフォントだけ引き継げる)ただ、AppData配下やProgramData配下の情報は、新環境にそのまま上書きすると期待通りの動作を得られなくなる可能性もあるので、新規インストールからの再設定が容易な物(DropboxやATOK Syncなど)、同名のファイルがある旨のメッセージが出た物などは、スキップするのが賢明と思われる。
今回のコピー時には、後述のシェル拡張で作ったシンボリックリンクが引っかかってコピーできない物がいくつか発生してたので、そこだけ後でリンクを作り直した。
HKEY_USERS
に以下の要領で読み込む。
*:\Users\(username)\NTUSER.DAT
→HKEY_USERS\old-(username)
にロード*:\Windows\system32\config\SOFTWARE
→HKEY_USERS\old-software
にロードHKEY_USERS\old-(username)\Software
HKEY_USERS\old-(username)\Software\Mozilla\NativeMessagingHosts
(アドオンのNative Messaging Hostの登録情報)HKEY_USERS\old-software
HKEY_USERS\old-software\WOW6432Node
.reg
ファイルをテキストエディタ(※自分は秀丸エディタを使用した。この段階では設定が引き継がれていないので、初期設定で試用期間扱いになっている)で開き、以下のように置換する。
HKEY_USERS\old-(username)
→HKEY_CURRENT_USER
HKEY_USERS\old-software
→HKEY_LOCAL_MACHINE\Software
.reg
ファイルをダブルクリックしてインポートする。レジストリの編集を伴う操作をしたので、このあたりで1回再起動しておくといい気がする。
何を置いてもまず最初に、Firefoxを既定の位置にインストールする。
現行バージョンのFirefoxはインストール先のパスとユーザープロファイルが紐付けられているため、これを起動すると、先の手順でAppData配下にコピーしたプロファイルが使われる。自分はFirefox Lockwise(Firefoxのパスワードマネージャ)に認証情報を集約するようにしていて、それにアクセスできないことには以後の諸設定がままならないため。
Thunderbird、ComicStudio、Adobe Illustrator、GIMP、Dropbox、ATOK Passport、iTunes、Windows Terminal、Node.js、シンボリックリンク作成用のシェル拡張など、必要なアプリケーションをインストールしていく。ユーザー設定やレジストリの情報を引き継ぎ済みであることから、この段階で「既にインストール済みのアプリを再度インストールし直した」状態になっていることが期待される。
DropboxやATOK Passport(ATOK Sync)は、Firefoxから取り出したログイン情報でログインすると、その時点で概ね完全な状態が再現される。
Windowsの環境変数PATHにNode.jsの設定が入ることと、ファイルのコピーでインストール済みのnpmモジュールが引き継がれたことで、この時点でweb-extなどのコマンドも使えるようになっていた。
今回はここがポイントだった。以前の環境で使用していたWSL1のUbuntuは、正確にはBash on Ubuntu on Windowsと呼ばれていた頃の物で、今アプリストアからインストールできるUbuntuと同じ物ではなかったので。
ストア版のUbuntuの場合、設定やファイルシステムは AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc
にあるようなんだけど、BoUoWの場合は AppData\Local\Packages\lxss
にある。見てみた感じではフォルダ構成も結構違うようだったので、すべてを引き継ぐのは諦めて、home配下だけコピーしてくることにした。
"source": "Windows.Terminal.Wsl"
をコメントアウトして、代わりに "commandline": "wsl.exe ~ -d Ubuntu"
と書いておく。Windowsのファイルシステム上でWSLのファイルのパーミッションを保存できるようにするために、 sudo vim /etc/wsl.conf
で設定ファイルを開いて以下の内容を保存する。
[automount]
options = "metadata,umask=22,fmask=111,case=off"
マウントした既存のファイルや新たに作成したファイルが全部実行権限付きで認識されるとGitを使うのに不便なので、maskを指定して実行権限がつかないようにしておく。case=off
は、WSL1からNTFSに作られたファイルやフォルダの名前の大文字小文字を区別しないための指定。
LxssManager
を探し、再起動する。これで、上記の設定が反映される。cp -r "/(ドライブレター)/Users/(username)/AppData/Local/Packages/lxss/home/(username)/*" "/(ドライブレター)/Users/(username)/AppData/Local/Packages/lxss/home/(username)/.*" ~/
などとして、旧環境のhome配下のファイルをコピーする。rm ~/Desktop; ln -s /mnt/c/Users/username/Destop ~/Desktop
~/.bashrc
には、コマンドヒストリの保存タイミングの変更も含めて、いくつかよく使う設定が書かれているので、この時点で source ~/.bashrc
で読み込んでおく。設定している内容は過去のエントリの通り。sudo update-alternatives --config editor
でデフォルトのエディタをvim.basic
に切り替えておく。Program Files
以下のファイルを引き継がなかった場合) rupor-github/wsl-ssh-agentのリリース一覧から最新版のバイナリのwsl-ssh-agent.7zをダウンロードしてきて展開し、中身をC:\Program Files\wsl-ssh-agent\
あたりに置く。ProgramData
以下およびAppData
以下のファイルを引き継がなかった場合)wsl-ssh-agent-gui.exe
へのショートカットを C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
(全ユーザー向けの場合)か、%AppData%\Microsoft\Windows\Start Menu\Programs\Startup
(自分のみの場合。Win-Rで shell:startup
を実行して開かれるスタートアップフォルダ)に作り、ショートカットのプロパティを開いて「リンク先」に -socket "%temp%\ssh-agent.sock"
と起動オプションを付け足す。これで、毎回起動時にssh-agentのためのソケットが作られるようになる。また、この時点ではまだ wsl-ssh-agent-gui.exe
が起動していないので、ショートカットをダブルクリックして起動する。~/.bashrc
を引き継がなかった場合)~/.bashrc
に export SSH_AUTH_SOCK=/mnt/c/Users/$USER/AppData/Local/Temp/ssh-agent.sock
という行を足して、source ~/.bashrc
を実行して設定を反映する。これで、WSLの環境に入ると自動的にWindows側のssh-agentと繋がるようになる。chmod 700 ~/.ssh
で、ディレクトリのパーミッションを他のユーザーから参照不可能なようにする。chmod 600 ~/.ssh/*
で、ディレクトリのパーミッションを他のユーザーから参照不可能なようにする。ssh-add ~/.ssh/(秘密鍵)
を実行し、秘密鍵を ssh-agent に読み込ませる。sudo apt install nodejs npm
でnをインストールするための準備をする。sudo npm install -g n
でnをインストールする。sudo apt remove nodejs npm; sudo apt autoremove
で不要になったパッケージを削除する。sudo n latest
で最新のNode.jsをインストールする。これでとりあえず最低限の引き継ぎはできているので、使いたいコマンドが動かないときは、適宜インストールし直していくことにした。
以上でだいたいの移行は完了したことにする。スタートメニューやタスクバーのピン留めの内容、自分でフォルダーを割り当てて追加していたツールバーなど、細かい部分がまだ未整備だけど、それは使う中で適宜設定していくつもり。
新環境のSSDの起動ドライブは、CrystalDiskInfoで見ると、IntelのSSDPEKNW010T9と出ていた。検索して出てきた仕様によると300TBWとのことで、現時点の情報に基づいて残り寿命を計算したら2年9ヵ月と出た。書き込み頻度が低いと、実際にはもっと長く持つことになるのだと思われる。旧PCの起動ドライブだったSSDも、今計算したら2年9月で、2年前に計算したときからあまり変わっていなかった。
の末尾に2020年11月30日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2021-01-31_home-win10-migration.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。
writeback message: Ready to post a comment.