えんでぃの技術ブログ

えんでぃの技術ブログ

ネットワークエンジニアの視点で、IT系のお役立ち情報を提供する技術ブログです。

NUC10セットアップに必要なものを全て紹介|NUC10構築(1)

nyuc

前の記事

※同じシリーズにはNUC、Linuxタグをつけてあります。

endy-tech.hatenablog.jp

お伝えしたいこと

今回NUCを購入するにあたって、私が調達したものを共有します。
必要なもの、不要なものの検討の参考になれば幸いです。

買ったもの

NUC本体

nuc_front nuc_rearnuc_leftsidenuc_rightside

画像は左から正面、背面、左面、右面です。

BXNUC10i5FNH
Amazon | INTEL NUC BXNUC10I5FNH 小型PC i5-10210U 2.5対応 要ACコードC5 日本正規流通品 | インテル | ベアボーンPC 通販

NUC本体。
PCケース、マザーボード、電源モジュール、CPUが付属します。

今回はCore i5搭載、2.5インチベイ付きのモデルです。
2.5インチベイは正直使う予定はないのですが、2.5インチベイ付属モデルの方が単純に安価だったんですよね。

見えているポート以外にもBluetooth、Wifi6無線クライアントもついています。
内蔵マイクもあるようです (サウンド設定画面で音に反応していたため)。
詳細スペックは以下URLを参照です。
インテル® NUC 10 パフォーマンス・キット - NUC10i5FNH 製品仕様

nuc_power_module_cable

↑の画像にあるコードと箱 (呼び方がわからない) もNUC本体に付属します。
コンセントに接続するための電源ケーブル (C5形状) は別途必要です。
コード長は約17.5cmです。

NUC10シリーズは複数種類ありますが、型番の意味とバリエーションについては(参考) NUCの型番の意味で補足します (今回はCore i5搭載、2.5インチベイ搭載、ベアボーンモデル)。

電源ケーブル (100V, C5形状)

c5_ac_cable

AC06C05JP
Amazon | intel NUC 用 ACコード C5 Type 0.6m(コンセント側3Pin) | インテル | 電源ケーブル 通販

コンセント接続用の電源コードです。
NUCにはこの部分が付属しないので、別途購入が必要です。
片端は家庭用の100Vコンセント形状、反対側はC5形状 (ミッキー型) のものを選んでください。

電源コードを選ぶ際は、以下の点に注意しましょう。

  • 買おうとしているものはC5形状で間違いないか?
  • 100Vプラグ形状が3ピンのものを買う場合、家のコンセント側も3つ穴が空いているか?
  • ケーブル長は適切か? (NUC本体からすでに17.5cmものケーブルが伸びているので、結構短めで良いと思います)

DDR4 メモリ (32GB) x2枚

memory

M471A4G43MB1 (32GB, DDR4) x2枚
Samsung 32GB DDR4 2666MHz RAM Memory Module for Laptop Computers (260 Pin SODIMM, 1.2V) M471A4G43MB1 at Amazon.com

このメモリを選んだ基準は以下の3点です。

メモリの動作要件は、下記のTechnical Product Specification にも記載がありますが、理由がなければIntel動作確認済みから選んだほうが安心ですね。
intel.com - Technical Product Specification for NUC10i3FN, NUC10i5FN, and NUC10i7FN (page 21)

M.2 NVMe SSD 1TB

ssd_frontssd_back

WDS100T2B0C
Western Digital ウエスタンデジタル WDS100T2B0C 《送料無料》|TSUKUMO公式通販サイト

日本ではツクモドスパラが安め。
しばしば売り切れますが、2020/8時点では1週間以内に再入荷していました。
上位モデルの WDS100T3X0Camazon.com でかなり値引きされているので、そちらを狙うのも手。

M.2 はSSDの接続端子の形状、NVMeは通信プロトコルの名前とのことです。
通信プロトコルSATASSDも売っていますが、別物なので気をつけましょう。
型番を見るようにすれば大丈夫かと思います。

今回、上記Western DigitalSSDを選んだ理由は以下の3点です。

念のため、NUCのマニュアルでもSSDの仕様を満たすことも確認しました。

その他道具類

  • プラスドライバー (1番)
    • 2番もあったほうがベターです
    • NUCの蓋を開け、メモリやSSDを取り付けるために必要です
  • Bluetoothではないキーボード (赤外線か有線)
    • BIOS画面に入ったり、Linuxコンソールでインストールコマンドを打つために必要です
    • Bluetoothは、Linux Desktop Environment インストール時に付属するBluetooth接続用のパッケージをインストールした後でないと認識されません

その他用意したもの

BIOSアップデート用USB

BIOSアップデート用のバイナリをUSBに保存して持っておきます。

NUC10のバイナリは下記からダウンロードします (他世代のNUCの場合はURLが異なります)。
intel.co.jp - 第 10 世代インテル Coreプロセッサー・ファミリー搭載インテル NUC キット

URLにアクセスし、「ドライバー・ダウンロード」セクションから「BIOS アップデート」といった記事を探してください。
※もし記事が見つからない場合は、「すべてを表示」のリンクを移動し、「製品 = NUCi5FNH、オペレーティングシステム = OS非依存」とフィルターしてみてください

記事のリンクの中で、「FNxxxx.cap」といった名前のファイルをダウンロードしてください。
こちらのファイルは、「F7 BIOS アップデート」と呼ばれる、BIOS画面上の操作でアップデートする手順で利用します。
OS非依存で実施可能な手順です (例えばWindows, Linux, ESXiなど)。

Windowsを入れる予定の方は、exeファイルをダウンロードした上で、Windowsインストール後に実行する形でも大丈夫です。
その場合は使うときにexeファイルをダウンロードして実行すれば良いので、事前のUSBの準備は不要です。

最後に注意なのですが、「NUC BIOS アップデート」などでググってマニュアルページを見つける場合は気をつけてください。
過去のNUC製品は別のBIOSプログラムを利用しているので、アップデート手順が異なる場合があります。。。

OSインストール用USB

OSインストーラを保存したUSBも用意しておきます。

OSインストーラをUSBに書き込む際、既存のUSBのデータをすべて削除してしまう仕様のものが多いみたいです。
従って、 BIOSアップデート用USBとは別に用意しておいたほうが良いと思います。
※USBを1つしか持っていない方はBIOSアップデートが完了してからOSインストール用USBを作成するという若干面倒な工程になります

NUCを組み立ててBIOSBIOSから起動順序を変更し、このUSBから起動することでOSインストールします。

今回、私はFedora Server を入れる予定なので、その手順を記載します。

Fedoraインストール用USBの作成 (公式手順へのリンク)

Fedora ではなくRHEL8の記事ですが、中身は同じです。
RHEL8の記事の方が単純にわかりやすいのでオススメです。
Performing a standard RHEL installation Red Hat Enterprise Linux 8 | Red Hat Customer Portal

念のため、Fedora 公式にも同様の手順はあります。
リンクだけ貼っておきます。
Preparing for Installation :: Fedora Docs

Fedoraインストール用USBの作成 (具体的な手順)

この段階では、Fedoraインストール用USBの作成まで行います。

  • Fedora Server インストール用のISOファイルを公式からダウンロードします (※)
  • FedoraRHEL で公式に推奨されている Media Writer ツールをダウンロードし、インストールします
  • USBを挿した状態で Media Writer を実行し、Fedora Server インストール用USBを作成します
    • 繰り返しになりますが、 書き込み先のUSBは全データが消えるので、必ず空っぽになっても良いUSBを用意してください。もちろんBIOSアップデート用とは別です

(※) 後々Cinnamon を導入するので、Fedora Spin でも良いのではと思われるかもしれませんが、そのとおりです。しかし、後からCinnamon を削除して別のデスクトップに変える可能性もあるので、念のためベースはMinimalにしておきつつ、後からCinnamonを入れるようにしています。

ちなみに、Windowsを入れる方はオンラインから最新版のWindowsインストール用プログラムをダウンロードしてUSBに書き込むのが良いと思います。
オンラインから入手すると必ず最新版が手に入るので、パッケージ付属のUSBやDVDと比べて更新の手間が省けます。

参考情報

色々参考情報をまとめておきます。
興味ない部分はスキップお願いします。

(参考) 本当に必要なものは何か?

NUC購入のコストに関するお話です。

当初は別の構成でNUC購入を検討していましたが、合計金額が15万ぐらいになっていたと思います。。
そこで、以下のようにプランを変更しています。
結果として6.2万円の節約になり、合計金額を10万円以内に抑えることができました。

  • Core i7搭載NUC → Core i5搭載NUC
    • 価格差1万円
    • Core i7 は6コア、Core i5 は4コア。Hyper Threadingあるし、周波数も高い。i5でもかなり早い
    • そもそもVMやコンテナ動かす検証でCPU性能は必要なのか? → 否。ボトルネックはメモリ容量
  • Microsoft Office → FreeOffice + OnlyOfficeの使い分け
    • 価格差3.5万円
    • 家ではExcelをお金やパラメータシートなどの管理表作成に使っている
    • GSuiteは使いやすいが、お金の管理表だけはクラウドに上げたくなかったので、オンプレのOfficeも必要だった
    • FreeOfficeは若干機能が足りない部分があるものの、その時だけOnlyOfficeでファイルを開いて編集すれば何とか実用に耐える
    • 好みによってはWPS Office もアリ。編集とは無関係な設定画面が崩れている部分が多かったが、最もMicrosoft Office に近い使い勝手だった
    • Office を使う機会は少なく、どちらかというと技術検証や動画学習にPCを使うことが多め。Office にお金をかける必要はないと判断した
  • Windows10 → Linux
    • 価格差1.7万円
    • MS Office から脱却できるなら、Windows を使う理由がない (Photoshopも持ってないし)
    • Cinnnamon Desktop Environment を事前にお試ししてみたが、ショートカットキーとか普通に快適
    • Windows Update、難解なレジストリ、不要なアプリ (フォトとか映画) から開放される
    • 謎のディスクアクセスが激減。サクサクになる (Telemetry Serviceとかインデックス作成)
    • 平常時のメモリ消費量が激減 (2GB → 1GB。Desktop Environment によっては200MBとか)
    • パワフルなCLI環境が使える
    • Linux を普段遣いってなんかカッコイイし勉強になりそう (と自分は思っている)

Windowsが節約に大きく寄与しました。

(参考) NUCの型番の意味

今回購入した BXNUC10i5FNH をモデルに補足します。

  • BX:店舗販売 (表記上省略されることもしばしば)
  • NUC:NUC
  • 10:NUC第10世代。2020/8時点では一番新しい
  • i5:corei5搭載。今回の場合はCore i5-10210U。他にはi7, i3 という選択肢がある
  • FN:NUCのファミリーを表すコードらしい。意味はなさそう
  • H:2.5インチベイにHDD/SSDを挿せるモデル。少し高さが大きくなる。Kは付属しない
  • 末尾にJPなどついているものはベアボーンではなくミニPCモデル。HDDやメモリが付属する

詳細な命名規則はコチラを参照。
Product Code Naming Convention for Intel® NUC

(参考) Intel公式リンク集

各情報をググって見つけるのも大変だったので、Intelホームページのトップからの下り方も含めて書いておきます。

トップページ

intel.co.jp - トップページ

NUCのハードウェア仕様

インテル® NUC 10 パフォーマンス・キット - NUC10i5FNH 製品仕様

各種マニュアルや手順のリンクがまとまっているページ

インテル NUC 10 パフォーマンス・キット - NUC10i5FNH

  • 記事の場所:トップページ > (サポート:サポート:製品) > インテル NUC > (インテル ネクスト・ユニット・オブ・コンピューティング・キット:第10世代) > NUC 10 パフォーマンス・キット - NUC10i5FNH (以降、★ と表記)

ユーザーガイド、ダウンロードセンター、互換性ツール

intel.co.jp - インテル NUC キット NUC10i7FN、NUC10i5FN、NUC10i3FN を開始する

  • ユーザーガイド:メモリやSSDの挿し方が書いてある
  • ダウンロードセンター:「Linux」ならOS非依存でフィルター。BIOSアップデート用のバイナリと手順がある。Windowsの場合は各種ドライバをダウンロード可能だが、Linuxの場合は不要
  • 互換性ツール:Intelで動作確認済みのメモリ型番が列挙されている
  • 記事の場所: > 〜〜を開始する

Technical Product Specification (技術製品仕様)

intel.co.jp - インテル NUC 製品の技術製品仕様

  • NUCハードウェアやBIOSの仕様について一番詳しく書かれたドキュメント
  • プルダウンから、目的の製品を選択する (第10世代など)
  • 記事の場所: > インテル NUC 製品の技術製品仕様

(参考) amazon.com で買うときのtips (関税と為替手数料)

海外から輸入するときは商品代、送料だけでなく関税も考慮が必要らしいです。
関税はかかる場合とかからない場合があり、1購入あたりの合計金額が一定額を超えると関税がかかるみたいです。

今回はメモリ2枚を amazon.com から購入したのですが、あえて2回に分けて購入しました。
そうしたら送料が2倍かかりますが、関税はかからなくなるためです。

注文確定の画面で関税が表示されるのでそこも確認。
ここの数値は目安らしいのですが、万が一システムの計算がズレていた場合は、amazon.com が出品者 or 発送者であればamazon側で調整してくれるみたいです (追加請求はされない)。

また、購入するときに円払いかドル払いかも選べるのですが、ドル払いのが安価のことが多いようです。
円払いの場合は amazon.com の手数料がかかり、ドル払いの場合 (クレジットカード利用なら) クレジットカード会社の手数料がかかります。
調べてみればわかるのですが、クレジットカード会社のが手数料がだいぶ安いです (特にMastercard)。

クレジットカードの場合は為替計算のタイミングでラグがあって、為替レート動きによる損はあるかもしれないのですが、まぁそこは確率的に割り切って...ですね。

まとめ

NUC周りで購入したものを書き並べてみましたが、参考になりましたでしょうか。
自分はこの調査に3日かかったので、他の人はもう少し時短で済むといいなと思いつつ書いてみました。

次の記事では、NUCの組み立てやBIOSアップデート手順について書く予定です。

Linux PC構築関連リンク集

endy-tech.hatenablog.jp

次の記事

NUCの組み立て、BIOSアップデート、起動順序を指定してOSインストーラからブートまでの手順を紹介します。

endy-tech.hatenablog.jp

パソコン買い替えました (NUC10i5FNH)

nuc_box

※今回は雑談です。

メインPCの故障

10年間動き続けてきたデスクトップPCが先日壊れました。

作業の合間に離席して、戻ってきたら画面が真っ暗。
キーボードやマウス操作を一切受け付けなかったので電源ボタン長押しして再起動。

その後何度試しても通常起動、スタートアップ修復共に、起動画面の途中で固まってしまいました。

そしてついに、何度も試す間にBIOSすら起動しなくなりました。
電源を投入してもファンが回るだけ。。。

多分ですが、マザーボードか電源モジュールが壊れたのでしょう。。

買い替えの決意

...実は、PCが故障する直前にこんな記事を見ていました。

tekunabe.hatenablog.jp

あの金魚の方がサーバを買うのか...どれどれ。
ESXi動作可能 (※非公式)、メモリ64GB、しかもサイズがひじょ〜〜に小さい。

めっちゃかっこいいじゃないですか。

物欲が掻き立てられていた頃に、ちょうどPCが壊れたんです。

GOD!!!!

...なんて思ってませんが、多分故障したPCもタイミングを読んでくれたのでしょう。
勉強にゲームと色々付き合ってくれたPCに感謝しつつ、新しいPC (もといNUC) を買おうと決意しました。

新しいPC、NUC

nyuc

"Next Unit of Computing" 、略して「ナック」と読むそうです。

ベアボーンキットに分類される製品です。

ベアボーンキットとは、PCケース、マザーボード、CPU、電源ユニットなどがセットで売られているものです。
メモリ、ストレージ、OSなどは付属しないため、このあたりは自分で買い揃える必要があります。
特にNUCは電源ケーブルも付属しないのでこちらも購入が必要ですが、詳細は次の記事で...。

今回NUCが欲しいと思ったのはこのあたりの理由からです。

  • メモリを最大64GB搭載できる。仮想マシン立てて検証するにはうってつけ
  • 超省スペースかつ軽量 (117x112x51mm、700g)
    • 他のミニPCを探してみても、このサイズ感でメモリ64GBを搭載できるモデルはなかった
  • 導入事例が多く、情報ソースには困らなさそう。公式ドキュメントも充実している

そして...

今は無事NUCを購入し、Fedora + Cinnamon Desktop をインストールしてメインPCとして使っています!
今後の更新でNUCの調達、OS検討の背景、Fedoraインストールのノウハウなど得られた知見を投稿予定です。

NUC購入を検討している人、Linuxパソコンに興味のある人に参考になればいいなと思ってます。

ではでは。

Linux PC構築関連リンク集

endy-tech.hatenablog.jp

次の記事

NUCと合わせて購入・調達したものを紹介します!
メモリ、SSDBIOSアップデート用USB、OSインストール用USBなどです。

同じシリーズにはNUC、Linuxタグをつけておきます。

endy-tech.hatenablog.jp

【Cmder+CygWin】Windows用の使いやすいターミナル

f:id:stopendy:20190114233719p:plain

お伝えしたいこと

本記事では、Windowsユーザ向けにオススメのターミナルソフトウェアを紹介したいと思います。
具体的には、CmderとCygWinの組み合わせです。

上記ソフトウェアの組み合わせによって、WindowsコマンドプロンプトPowerShellが抱える以下の問題を解決できます。

  • コマンドが使いにくい。Linuxのコマンドにはよく慣れているのに...
    • Bash実行環境を追加
    • 使い慣れたgrep、less、awkなどのコマンドを実行可能に
    • パイプ(|)、シェルスクリプト、~などのシェル機能も利用可能
  • ターミナルの機能が貧弱。コピペも大変
    • MacのiTerm2に負けないデザイン性と機能性を持ちます
    • 色、透明度、ショートカットキーなどをカスタマイズ可能
  • SSH接続やファイル転送のGUI操作が面倒
    • 既存ツールをコマンドに置き換えることで、作業を効率化できます
    • Teraterm: sshコマンドが使える。コピペ時の確認メッセージ、自動ログ取得にも対応
    • WinSCP: scp、ftpコマンドなどで代用

Cmder + CygWin の構成

Cmderは、GUI部分を担います。
優れたデザインのターミナル画面と、使いやすくするための付加機能を提供します。

Cmder自身はシェル機能を持ちません。
内部でコマンドプロンプトPowerShellを呼び出すことで、シェルを提供しています。
上記以外にも、CygWin(Bash) とも連携することができます。

今回はCmderに対し、CygWin を組み合わせてWindowsのターミナルを使いやすくする手順を紹介します。

導入イメージ

GUI部分を担うCmderのスクリーンショットを貼ります。

画面はこんな感じです。

f:id:stopendy:20190114233719p:plain

画面を非アクティブにしたときに、少し暗くするといった設定もできます。

f:id:stopendy:20190114233712p:plain

設定すれば、Teratermのように「改行を含む文字列をコピペしたとき」に確認メッセージを出せます。

f:id:stopendy:20190114233606p:plain

設定画面もリッチです。

↓フォントの設定

f:id:stopendy:20190114233618p:plain

↓配色の設定

f:id:stopendy:20190114233623p:plain

↓Cmderと連携するシェルの設定

f:id:stopendy:20190114233614p:plain

上記画像の通り、CmderのデザインはMacのiTerm2にも負けていないと思います。

Cmderと何を組み合わせるか

Cmderと組み合わせるシェルは、Linuxに慣れているのであればCygWinがオススメです。
Windowsに慣れている場合はcmdやPowerShellでも良いと思います。

CygWinの特徴は以下の通りです。

  • Unix環境をエミュレーションする
  • ほぼ、Bash実行環境と言ってよい
  • Cmderと比べると、以下の差分がある
    • apt-cygによってLinuxパッケージを追加インストール可能 (yum/aptと似ている)
    • Linuxライクなディレクトリ構造を持つ (Windowsファイルは/cygdrive配下にある)

CygWinのセットアップ

f:id:stopendy:20190114233704p:plain

ここでは、CygWinのセットアップ手順を紹介します。
Cmderとの連携設定は、Cmderのセットアップにて説明します。

CygWinを導入しない場合は読み飛ばしてください。

CygWinのインストール

下記公式サイトからインストーラをダウンロードして実行します。
64bit版、32bit版がありますので、正しい方を選択してください。

https://CygWin.com/install.html

インストーラを起動したら、ウィザードに沿って以下のように選択します。

  • 5回ほど「次へ」を選択する
  • ダウンロードサイトの選択画面では、"http://ftp.iij.ad.jp" などを選択する
  • パッケージ選択画面では、以下のように選択する
    • View: Full
    • Search: パッケージ名で検索し、必要なものにチェックを入れる。最低限、★のついたものは入れる (apt-cyg導入に必要)
      • wget (Web)
      • curl (Net)
      • gcc-core (Devel)
      • gcc-g++ (Devel)
      • make (Devel)
      • openssh (Net)
      • xinetd (Net) ※telnet
      • vim (Editors)
      • git (Devel)
    • 「次へ」を2回ほど選択すると、依存関係を含めて上記パッケージをインストールする
  • 画面に従ってインストーラを終了する

これでCygWinがインストールできました。
CygWinが単体で正しく起動することを確認しておきましょう。

(任意) apt-cygのインストール

任意なのですが、ついでに便利なパッケージマネージャーであるapt-cygも入れておきましょう。
Linuxでいうyumやaptに相当するツールです。

CygWinを起動し、下記コマンドを実行することで導入できます。

wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg

chmod 755 apt-cyg
mv apt-cyg /usr/local/bin

以降、apt-cyg install <package-name>でパッケージをインストールできます。

Cmderのセットアップ

f:id:stopendy:20190114233610p:plain

Cmderのインストール

下記公式サイトからCmderをダウンロードします。
Mini版とFull版がありますが、Full版を選択します。

http://Cmder.net/

ダウンロードした圧縮ファイルを展開し、好きなフォルダ階層に移動します。
Cmderは、インストール無しで動作するプログラムのため、起動すればすぐに使えます。

参考までに、私はインストール不要なアプリケーション (ポータブルアプリケーション) の置き場を決めており、Documents\PortableApps\ 配下にしています。
Documents以外にも、C:\ や D:\ など候補はいくつかあると思いますので、わかりやすい場所に決めて配置しましょう。

Cmderの初期設定

Cmder.exeを起動します。

画面下部のタブバー (タブ以外の部分) を右クリックして、"Settings" を選択します (またはWindows + Alt + P)。
そしてお好みに設定します。

私のオススメ設定を以下に載せておきます。 ※設定画面内は、マウスカーソルを合わせると補足説明が出てきます。これがとても便利です

General > Quake style

Quake Mode (フルスクリーンのようなモード) がお好みの場合は設定します。
Ctrl+@キーでターミナルを開いたり隠したりできます。
私個人としては便利だと思うので使っています。

  • Quake style slide downにチェックを入れる
  • Restore inactive window by hotkeyにチェックを入れる

Quakeモードを使う時は、General > Tab barの以下の設定もオススメします。

  • Close ConEmu with last tabのチェックを外す
    • ConEmuの最後のタブを閉じてもバックグラウンドでCmderが起動し続けます
    • Ctrl+@で呼び出してCtrl+Tでタブ追加すればすぐに再度使えるようになります
  • Minimize on closing last tabにチェックを入れる
    • 最後のタブを閉じたらCmderが自動的に最小化します

General > Size & Pos

Console buffer height: 32766

ターミナルの最大行数を増やす設定です。

General > Tab bar

Lazy tab switch: チェック外す

Cmderのタブは、Ctrl+Tabで切り替えできます (もちろんマウスクリックでも)。
デフォルトでは、Ctrlキーを離したときに画面が切り替わります。
この挙動を変更し、Ctrl+Tabキーを押したらすぐに画面が切り替わるようにします。

General > Confirm

Confirm actionsのチェックを全て外す

面倒な確認メッセージを抑止します。

Startup > Environment

以下の3行を入力しておきます。
最初の1行はすでに入っていると思います。

set PATH=%ConEmuBaseDir%\Scripts;%PATH%
set PATH=%PATH%;%ConEmuDir%..\git-for-windows\cmd
set PATH=%PATH%;%ConEmuDir%..\git-for-windows\usr\bin

Cmder経由でシェルを起動したときに、PATHを通すための設定です。
ここでは、Git for WindowsLinuxコマンド群 (ls、grep、less、ssh、scpなど) にPATHを通しています。
CygWinの場合は不要な設定ですが、cmdやPowerShellを使うときにはあった方が便利になります。

%ConEmuDir% などの設定ファイル中で使える環境変数について、詳細はConEmuのドキュメントを参照してください。
※Cmderは内部的にConEmuを利用している https://conemu.github.io/en/ConEmuEnvironment.html

Keys & Macro

Cmderで利用可能なショートカットキーを編集できます。
以下のように編集するのがオススメです。
右上の検索ウィンドウで「Scroll buffer」などのように検索しながら編集してみてください。

  • Scroll buffer to the top: Ctrl+Home ※ターミナルの先頭を表示
  • Scroll buffer to the bottom: Ctrl+End ※ターミナルの末尾を表示
  • Paste first line of clipboard contents: 割り当てなし ※Linux用途で使用するCtrl+Vが上書きされてしまうため
  • Copy: All active console text output: Ctrl+Shift+A ※ターミナル全体の文字列をコピー
  • Find text in active console: Ctrl+Shift+F ※文字列検索
  • Choose and paste file pathname: 割当解除 ※Ctrl+Shift+Fで重複
  • Split: Duplicate active 'shell' split to bottom: Ctrl+Shift+D ※画面分割
  • Split: Duplicate active 'shell' split to right: Ctrl+Shift+R ※画面分割
  • Choose and paste directory path: 割当解除 ※Ctrl+Shift+Dで重複

Cmderの便利なショートカットキーは、本ブログの末尾にてまとめて紹介しています。

Mark/Copy

Text selectionの値をL-ShiftからNo-Modに変更します。

デフォルトでは、Cmderからローカルのvimを開いた時に左側のシフトキーを押しながらでないと、マウスドラッグでテキストを選択できません。
これをShiftキー無しでもテキストを選択できるようにします。

Features > Colors

ターミナル画面の色合いを変更できます。
デフォルトはMonocai というテーマが設定されていますが、この画面で色設定を変更して自作のテーマとして保存できます。

また、Fade when inactive の設定を変えることで、Cmderのウィンドウが非アクティブになったときに画面を少し暗く見せるかの設定ができます。

私個人としてはNord Color Schemeが好きで、個人的に使っています。
CmderのUI部分を担っているのはConEmuというソフトなので、対応する定義ファイルをリポジトリからコピーして適用することで利用可能です。
詳細は割愛しますが、nord-conemuの手順を参考に、ConEmu.xmlを編集するという手順です。
ConEmu.xmlのパスは、Cmder設定画面 (Win+Alt+P) の右上にあるStorageと書かれた部分から確認できます。

Features > Transparency

画面の透明度の設定はこちらでできます。

一通りの設定が終わったら、右下の Save settings ボタンで設定を保存します。

CygWinとの連携設定

いよいよCmderからCygWinを呼び出せるようにします。 再び設定画面を開きます (Windows + Alt + P)。

Startup > Tasksを選択します。
Cmderで新しいタブを追加するとき、Cmderが呼び出すシェル (CygWin/cmd/PowerShellなど) を指定できるのですが、この画面からシェルを追加登録/削除/並べ替えできます。

まず、CygWinを追加登録します。

  • '+' ボタンを選択し、以下のように設定する

    • タスク名 (左上の部分) : bash::CygWin
    • Default task for new console: チェック推奨 (Cmderで新規タブを追加するとき、デフォルトでbash::CygWinが選択される)
    • Default shell (Win + X): チェック推奨
    • Commands (右下の部分): 以下のように入れる
      set "PATH=<CygWinインストールディレクトリ>\bin;%PATH%" & %ConEmuBaseDirShort%\conemu-cyg-64.exe /usr/bin/bash.exe --login -i -new_console:p:C:"<CygWinインストールディレクトリ>\CygWin.ico"

      具体的には、以下のようになる。

      set "PATH=C:\CygWin64\bin;%PATH%" & %ConEmuBaseDirShort%\conemu-cyg-64.exe /usr/bin/bash.exe --login -i -new_console:p:C:"C:\CygWin64\CygWin.ico"

  • 'Up'、'Down' ボタンで、以下の順序に調整する

    • bash::CygWinを一番上に
    • 他は好きな順序で並べる

↓参考URL
https://conemu.github.io/en/CygWinMsysConnector.html#CygWin64-shortcut

次に、設定画面のStartup セクションを開きます。
Cmderを起動したとき、デフォルトで表示するTask (シェル) を指定します。

デフォルトは Specified named task の値が {cmd::Cmder} になっていると思うので、これを {bash::CygWin} に変更します。

これでCmder + CygWin連携構成を実装できました。

(参考) 知っておくと便利なCmderのショートカットキー

以下のショートカットキーが便利です。

  • Linux Bash でおなじみのショートカット (Ctrl + C, L, D, U, K, Q, Z, ...)
  • 設定を開く (Windows + Alt + P)
  • 新しいタブを開く (Ctrl + T)
  • タブを閉じる (Ctrl + W) ※bashなら Ctrl + D でexitした方が楽
  • スクロールバッファ削除 (Ctrl + Shift + L)
  • 画面スクロール (Ctrl + ↑、↓)
  • 表示/非表示切替 (Ctrl+@)
  • 今回紹介した手順でカスタマイズしたショートカット
    • ターミナルの先頭を表示 (Ctrl+Home)
    • ターミナルの末尾を表示 (Ctrl+End)
    • ターミナル全体の文字列をコピー (Ctrl+Shift+A)
    • 文字列検索 (Ctrl+Shift+F)
    • 下に画面分割 (Ctrl+Shift+D)
    • 右に画面分割 (Ctrl+Shift+R)

まとめ

いかがでしたでしょうか。
CygWin + Cmderを導入することで、Windows OS特有の作業ストレスを大幅に軽減できます。
Cmderは業務で数年使い続けてきて、本当に良いソフトだと実感しています。
皆様もぜひお試しください。

【VirtualBox】VirtualBoxの基本と仮想ネットワークを紹介

f:id:stopendy:20181027131833p:plain

前の記事

「そもそも仮想化って何?」という方は、先にこちらをご覧ください。

endy-tech.hatenablog.jp

本記事で紹介すること

本記事では、VirtualBoxを使いこなすうえで必要となる、基本概念を紹介します。

仮想化の基礎知識と、VirtualBoxの仮想ネットワークを中心に紹介します。

具体的な操作手順は別記事に譲り、ここでは概念を紹介します。

VirtualBoxの概要

VirtualBoxとは

WindowsMacに対応する無料のサーバー仮想化ソフトです。

Windowsの場合、他にVMware Workstation Playerも無料の仮想化ソフトとして使えます。
Macの場合、有償ですがVMware Fusionという製品があります。

サーバー仮想化とは

いわゆるVM (Virtual Machine: 仮想マシン) を作る機能です。

あるOSの中に別のOSを立ち上げることができます。

サーバー仮想化にもホスト型、ハイパーバイザ型、コンテナ型などいくつか種類があります。
VirtualBoxは、サーバー仮想化の中でも「ホスト(OS)型」に分類されています。

各種サーバ仮想化ソリューションの構成は、下図のようになっています。
VirtualBoxはホストPC上のアプリケーションとして動作し、VMを管理する役割を持っています。

f:id:stopendy:20180930181027p:plain

仮想化のタイプ別のメリット/デメリットの概要は以下になります。

f:id:stopendy:20181006114446p:plain

VirtualBoxを含むホストOS型の仮想化は無償の製品が多く手軽に導入できます。
世の中でも多くの人が使っており、先人の知恵が多く蓄積されています。
ホストOS型の仮想化製品は、まさに学習用途にうってつけなのです。

VirtualBoxの仮想ネットワークについて

サマリ

VirtualBoxの操作方法は別記事で紹介することとして、ここではVirtualBoxで唯一の難しい概念である仮想ネットワークについて説明します。

仮想ネットワークには以下のバリエーションがあります。

  • NAT
  • 内部ネットワーク
  • ホストオンリーアダプター
  • NATネットワーク
  • ブリッジアダプター
  • 汎用ドライバー

多くの場合、ホストオンリー、NAT、ブリッジがあれば事足ります。

機能のサマリは以下のようになっています。

f:id:stopendy:20181027125427p:plain

これだけ種類があると、どう使ったものか迷ってしまいますよね。
私は以下のように使い分けています。
どの機能も必要な場合、1つのVMに3つのネットワークインターフェースを追加しています。

  • Host PCからVMに通信させたいとき (SSH接続や、サーバを立てた後にブラウザで試験的にアクセスする時のため)。VM同士を通信させたいとき (ホストオンリーはどんな場合でも追加すべきです) → ホストオンリー
  • VMからHost PCの外部 (特にインターネット) に通信させたいとき (外部からVMにはアクセスさせない) → NAT
  • VM同士を通信させる、かつホストオンリーとはネットワークセグメントを分けたいとき (仮想マシンでルーティングやNAT、プロキシさせたいときなど) → 内部ネットワーク

外部からVMにアクセスさせたい場合は、以下のどちらかで対処します。

  • 基本的には ブリッジ を利用する
  • Host PCが属するネットワークのIPアドレスVMに割り当てられない場合 (例えば、自分が管理していないネットワークから固定のIPアドレスアサインされているとき) → NAT + ポートフォワーディング を利用する

NATネットワークと汎用ドライバーについては、恐らく今後も利用することはないと思います。

次に、各仮想ネットワークの詳細を説明します。

NAT

説明

VMがHost PCの外部 (インターネットなど) にアクセスするために利用します。

NATに指定したインターフェースのIPアドレスは、VirtualBoxに組み込まれたDHCPサーバ機能によって自動的にアサインされます。
ユーザはどのIPがアサインされるかを意識する必要はありません。

ホストPCの物理インターフェースのIPアドレスにNAPTしていますので、デフォルトの設定ではHost PC外部からVMに通信を開始することはできません (できるのは折り返し通信のみ)。

最後に注意点ですが、NATに設定したインターフェースで、VM同士は互いに通信できません。
VM同士通信させたい場合は、ホストオンリーか内部ネットワークのインターフェースを使うのが一般的です。

(参考) ポートフォワーディングによってホストPCとVMIPアドレスとポート番号を紐づけることで、インターネットからVMにアクセスできるようになります。
IPアドレスの部分を空白にすると、any扱いとできるようです
https://www.virtualbox.org/manual/ch06.html#natforward
https://blogs.oracle.com/scoter/networking-in-virtualbox-v2#NAT-PF

公式マニュアルによると、NATには制限があるとのことなので、こちらも目を通しておいた方が良さそうです。
私は今までに困ったことはありませんが、ポートフォワーディングでホストPC側の1023以下のポート番号を設定してもうまく動かないなどあるとのことです。
https://www.virtualbox.org/manual/ch06.html#nat-limitations

論理構成

f:id:stopendy:20180930184305p:plain

設定方法

NATを使うための事前設定は不要です。
ホストPCが外部ネットワークと通信可能な状態であり、VM側でDHCPを利用する設定さえすれば通信できます。

ここからは参考情報です。

NATインターフェースに振られるIPアドレスは10.0.x.0/24から払い出されるのがデフォルトですが、この払い出し元のIPアドレスは変更することができます。
この設定変更はVirtualBoxGUIからはできず、VBoxManageというCLIプログラムを使って変更します。
どうしても変更できない既存のIPアドレスと重複している場合を除き、この設定は基本的に不要です。

(参考) 公式マニュアル https://www.virtualbox.org/manual/ch09.html#changenat

以下にコマンドサンプルを載せます。
コマンドの存在は確認済みですが、実際には使ったことはありません。

# Windowsの場合
# --natnet の後の数値には、1以上の数値が入る。インターフェース番号と対応する
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyvm "<仮想マシン名>" --natnet1 "192.168.100.0/24"

# (参考) VBoxManageのヘルプ
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" 

ホストオンリー

説明

ホストオンリーは、VM - Host PC間、VM間の通信を実現するネットワークです。

特殊な事情がなければ、全てのVMにホストオンリーのインターフェースを1つは搭載すべきです。
ホストPCからSSHアクセスすればコピペできますし、SCPでファイルのやりとりをすることもできます。
多くの検証では、VM間の通信もできた方が都合が良いと思います。

ホストオンリーに設定したインターフェースには、固定のIPアドレスを振ることもDHCPで動的にIPアドレスを振ることもできます。

論理構成

f:id:stopendy:20181027130037p:plain

設定方法

ホストオンリーネットワークは、使用する前に事前にサブネットやDHCPサーバの設定を定義する必要があります。

ファイル > ホストネットワークマネージャーから設定できます。
(または、画面右上のグローバルツール > ホストネットワークマネージャー)

まだ1つもホストオンリーネットワークがない場合は、「作成」ボタンから追加しましょう。
設定項目は以下の通りです。

アダプターにはHost PC側のIPアドレスの設定を入れます。

f:id:stopendy:20181027125424p:plain

上記のサンプル設定では、VMに対して静的なIPアドレスを192.168.10.2-199の範囲で割り振ることができます。
VM側でDHCPを利用する設定とした場合、192.168.10.200-254の範囲でアドレスが割り振られます。

内部ネットワーク

説明

VM同士が通信する専用のネットワーク設定です。
このインターフェースでは、同じ内部ネットワークに所属するVMとは通信できますが、他のホストとは一切通信できません。

VM同士で通信させるだけなら、ホストオンリー (、NATネットワーク、ブリッジ) でも可能です。
多くの場合、ホストオンリーをVMに搭載すれば十分に要件を満たすでしょう。
ホストオンリーとは別に、内部ネットワークを追加で利用する場面は ネットワークセグメントを分割したいときだけ です。

論理構成

f:id:stopendy:20180930184316p:plain

設定方法

内部ネットワークを利用するための事前設定は不要です。

設定箇所は、 仮想マシンの設定 > ネットワーク > 名前 のみです。
複数のVMで同じ名前の内部ネットワークに接続すれば相互に通信可能、異なる内部ネットワーク間では通信不可です。

デフォルトの名前はintnetなので、特に理由がなければこの名前を使いましょう。

名前と紐づけて、ネットワークアドレスやサブネットマスクを設定することはありません。
VM上で任意のIPアドレスサブネットマスクを固定で割り当ててください。

NATネットワーク

説明

※当ブログでは、NATネットワークは未検証です。ご了承ください。

NATネットワークは、NATとほぼ同じ機能です。
VMからホストPCの外部 (インターネットなど) にアクセスできますが、外部からVMにはアクセスできません。

NATと異なるところは、同じNATネットワークに所属するVM同士は、NATネットワーク越しに相互に通信できることです。
そして、NATネットワーク内部では静的にIPアドレスを割り当てることができます (DHCPも利用可能です)。

いつもNATインターフェースとホストオンリーインターフェースの組み合わせで賄っています。
このあたりは、純粋に好みの問題だと思います。

NATネットワークを設定すると、論理構成は以下のようになります。

論理構成

f:id:stopendy:20180930193616p:plain

設定方法

NATネットワークは、使用する前に事前にネットワーク名やサブネット情報を設定する必要があります

NATネットワークの設定は、VirtualBoxのファイル > 環境設定 > ネットワーク から変更できます。

ネットワーク名とネットワークアドレス、DHCPの有効化有無を設定できます。
デフォルトゲートウェイのアドレスや、DHCPの割り当て範囲については記載がありません。
公式マニュアルを確認しましたが、部分的にしかわかりませんでした。

"ゲートウェイのアドレスは、原則として先頭のアドレスが使用される。
しかし、変更される場合もある。"

https://www.virtualbox.org/manual/ch06.html#network_nat_service

DHCPの割り当て範囲については言及無し。
やはりこの機能は使いたくありません。。。

ブリッジアダプター

説明

VMがHost PCの物理インターフェースとL2スイッチ越しに接続されている (ブリッジ接続されている) かのような状況を作り出せます。
スタンドアロンの検証環境とHost PCを直結し、VMと検証環境で通信させたいときに便利でしょう。
家にネットワーク機器を購入しているエンジニアの方はよく使うと思います。

NATや内部ネットワークとの違いは、以下の通りです。

  • 通信に制限がない
    • NATはVM同士で通信できない。外部にアクセスできるが、外部からVMへはアクセスできない (ポートフォワーディングすれば別)
    • 内部ネットワークはVM同士しか通信できない
    • ブリッジは外部と双方向通信できる。ブリッジ設定したインターフェース越しに、VM同士も通信できる。ポート番号も変換不要で、そのまま使える

ブリッジの特徴は、VMがホストPCとは完全に独立しているかのように振舞えることです。

ブリッジネットワークに接続されたVMは外部 (インターネットなど) と双方向に通信でき、ポート番号も自由に使えます。

その分、気を付けなければならないこともあります。

外部からVMに直接アクセスできてしまうので、インターネットに接続する場合はVMのセキュリティを万全にしておく必要があります。

また、 ブリッジインターフェースと紐づいた物理ポートがLink Down (ケーブルを抜くなど) すると、ブリッジインターフェースも同時に使えなくなってしまいます。
従って、個人的にはブリッジインターフェースを利用する場合にも、ホストオンリーインターフェースを別途設定することをお勧めしています。
そうすれば、PCからケーブルが抜けた状態でも、ホストPCからVM間にSSHログインできる状態が継続されます。

VMのブリッジ設定したインターフェースにIPアドレスを設定するときですが、Host PCの物理インターフェースと同じネットワークのIPアドレスを割り振る必要があります。
IPアドレスの枯渇には注意してください。
自宅外のように、プライベートIPアドレスを自由にアサインできない環境では、ブリッジインターフェースの利用に不向きです (後述のようにDHCPでアドレスを受け取ることはできますが、そのような環境ではそもそもNATで十分でしょう)。

ブリッジインターフェースには、VirtualBox自体がDHCPサーバ機能を提供することはありません。
しかし、ブリッジ接続したネットワークにもともとDHCPサーバが存在した場合、VMDHCPによってIPアドレスを受け取ることができます。

(参考) ブリッジインターフェースの説明
https://blogs.oracle.com/scoter/networking-in-virtualbox-v2#Bridged

論理構成

f:id:stopendy:20180930193627p:plain

設定方法

ブリッジを設定する前の事前設定は不要です。

ブリッジインターフェースをVMに設定するときに気を付けるポイントがあるので、そこだけ補足します。

まず、仮想マシンの設定 > ネットワーク > 割り当てで「ブリッジアダプター」を指定します。
その後、「名前」にブリッジアダプターと紐づけたいホストPCのインターフェースのドライバ名を指定します。

ブリッジは「ホストPCのインターフェースとL2接続する」仮想ネットワーク機能です。
ホストPCが複数のインターフェースを持っていた時に、どのインターフェースと紐づけるかを指定するためにこの工程があります。

ホストPCがインターフェースを1つしか持っていない場合は悩むことはありませんが、複数あると厄介です。

その場合は...頑張って調べてください。
Windowsの場合、コマンドプロンプトからipconfig /allで調べられます。
命名について、Windowsの場合、多くは「Realtek」という文字列を含んでいると思います。
Macの場合、Thunderboltなど接続規格の名前がついていると思います。

最後に

VirtualBoxは、無料で簡単に仮想マシンによる検証環境を作ることができる便利なデスクトップ仮想化製品です。
多くの設定は直観的に理解できると思いますが、仮想ネットワークだけは難解なのでここで説明してみました。

皆さんの自習に役立てばうれしいです。

質問は大歓迎です。
記事の改善のため、皆さんの疑問や感想、アドバイスを聞かせてください。
お願いします。

【サーバ仮想化】概要の紹介

f:id:stopendy:20181006113751p:plain

本記事で紹介すること

本記事では、仮想化製品を 勉強目的で 使いこなすために必要となる、基本概念を紹介します。

仮想化製品の中でも、特に ホストOS型仮想化製品にはフリーソフトもあります。
自宅にて無料でサーバ / 仮想ネットワークの検証をするには必須の製品 と考えております。
※お金があるならクラウドでも...

興味のある方はぜひ本記事を出発点に、良い検証ライフを始めましょう。

続きの記事では製品の詳細や具体的な操作手順も紹介する予定ですので、そちらもお見逃しなく。

サーバー仮想化とは

いわゆる仮想マシン (VM: Virtual Machine) を作る機能です。

あるOSの中に別のOSを立ち上げることができます。

サーバー仮想化にもホスト型、ハイパーバイザ型、コンテナ型などいくつか種類があります。

全てを語れるわけではないですが、ここでも簡単に説明します。

簡易構成図

各種サーバ仮想化ソリューションの構成は、下図のようになっています。
VirtualBoxはホストPC上のアプリケーションとして動作し、VMを管理する役割を持っています。

f:id:stopendy:20180930181027p:plain

いずれの仮想化製品でも共通して以下の特徴を持っています。

  • ホストPCのOSとは別のOSをVMとして起動できる
  • VMは複数台起動できる

例えばホストOS型仮想化製品をインストールすれば、以下が実現します。

  • 普段の生活では今まで通りWindowsを利用する
  • 勉強したいときは仮想化ソフトを起動して、アプリケーションウィンドウの中にLinuxを起動して操作する

新たなマシンを購入することなく、無料でLinuxの勉強ができるようになります。
まさに、勉強にはうってつけの製品なのです。

他にも、一般的に仮想化には以下のメリットがあります。
こちらは商用での話であり、勉強用途では関係ないのでご参考までに...。

  • CPUやメモリなどのリソース消費の傾向が異なるVMを単一の物理マシンに導入することで、
    ハードウェアのリソースを無駄なく使いきることができる
  • スケールアウト (VMを増やすこと) により、リモート作業で簡単に性能を増強できる
  • 同種のVMを複数起動して冗長化することで、VMの論理障害 (OSクラッシュなど) に対する耐障害性を向上できる

仮想化製品のタイプ別比較

仮想化のタイプ別のメリット/デメリットの概要は以下になります。

f:id:stopendy:20181006114446p:plain

ホストOS仮想化は導入や操作が 簡単 です。
更に 無料 で導入できます。

堅牢性が低く、商用には向きませんが、 学習にはもってこい なのです。

まとめ

WindowsではOracle VirtualBoxVMware Workstation、MacではOracle VirtualBoxを無料で利用できます。
これらのフリーソフトをインストールすることで、ホストPCで既存のOSを使いながら、無料で仮想サーバを立てることができます。

他の仮想化製品と比較すると、ホストOS型は学習用途に向いています。
ハイパーバイザ型の多くは商用、コンテナ仮想化はどちらにも向いています。

別記事で仮想化製品に関する解説を行いますので、興味のある方はぜひご覧ください。
初めての方でも、読めば大体製品をいじれるようになると思います。

次の記事

VirtualBoxについて、更に詳細を説明します。
仮想ネットワークが中心です。

endy-tech.hatenablog.jp

本ブログについて

ブログ開設の目的

ブログを開設した目的は以下になります。

  • 個人的な備忘のため
  • 人に伝わる文書を書く練習をするため
  • 情報発信により達成感を得るため ※このぐらいいいですよね...(・ω・)

記事のトピック

仕事や日々の検証で得られた技術情報を発信していきたいと思います。
技術情報には以下を含める予定です。

  • ネットワーク
  • サーバ (Fedora / Windows)
  • 自動化、プログラミング

記事紹介や引用について

紹介や引用は大歓迎です。
ご自由に行ってください。
責任は負えませんが、紹介したコードも自由にご活用ください。