えんでぃの技術ブログ

えんでぃの技術ブログ

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

nmcliコマンドによるLinuxネットワーク設定手順

f:id:stopendy:20180908141506p:plain:w400

本記事で紹介すること

本記事では、nmcliによるネットワーク設定変更コマンドを紹介します。
ネットワーク構成図、実行コマンド例、オプション説明の順にひたすらユースケースを紹介していきます。

nmcliとは何か、基本的なコマンド体系の説明については下記記事にまとめてあります。
まだの方は、先にこちらをお読みください。

endy-tech.hatenablog.jp

記事が長いので、目次からジャンプして目的の設定例を確認する読み方がオススメです。

共通のオプション

nmcli で Connection を設定する際、必須となるオプションをここで先に紹介します。
以降の例では、以下の4オプションがどの例でも必ず登場します。

  • type
    • Connection の種別を指定する (物理インターフェースなら通信規格名、論理インターフェースならプロトコル名)
    • ethernetwifiwimax、vlan、bond、vpn、vxlan、dummy、他多数 を指定可能
      • ethernet: 最も基本的な構成。TagやTunnel、Teamingなどの設定を持たない、普通のインターフェースを作る
      • vlan: Dot1Q Tagging を利用したいときに利用する
    • 詳しくは、nmcli connection add help コマンドで確認できる
  • ifname
    • Connectionを紐づける対象の Device名を指定する
  • con-name
    • Connection名を指定する
    • 任意の文字列を指定可能
      • 半角スペースなどは \ でエスケープが必要
      • 2バイト文字は文字化けする
      • Device名と揃えるのが基本的に無難
  • autoconnect
    • yes/no のいずれかを指定
    • デフォルトはno
    • yesの場合、OS起動時やConnection作成時に自動的にifname で指定したDeviceに紐づけられる
    • noの場合、手動でnmcli connection up Connection名 を実行しない限り、Deviceに紐づけされない

以下の設定は任意ではありませんが、よく出てくるのでついでに紹介しておきます。

  • ipv6.method
    • IPv6 のアドレス設定方法を指定する
    • auto、dhcp、ignore、link-local、manual、shared を指定可能
    • デフォルトはauto
    • IPv6を使わない環境では、とりあえずignore にしておく

IPアドレスの設定

構成図

以下のようにL3スイッチとLinuxサーバが直結された構成を例にします。

f:id:stopendy:20180726203434p:plain

nmcliコマンド例

nmcli connection add type ethernet ifname enp0s3 con-name enp0s3 autoconnect yes ipv6.method ignore

#### 今回紹介したいコマンド ####
nmcli connection modify enp0s3 ipv4.method manual ipv4.addresses 10.0.0.2/24

# 設定反映
nmcli connection up enp0s3

#### 補足 ####
# 以下のように1行で済ませることも可能
# nmcli connection add type ethernet ifname enp0s3 con-name enp0s3 autoconnect yes ipv4.method manual ipv4.addresses 10.0.0.2/24 ipv6.method ignore

(補足1) セカンダリIPアドレスの設定

1つのConnectionに2つのIPアドレスを設定することも可能です。

# セカンダリIPアドレスの追加
nmcli connection modify +ipv4.addresses 10.0.0.102/24

# セカンダリIPアドレスの削除
nmcli connection modify -ipv4.addresses 10.0.0.102/24

# 設定反映
nmcli connection up enp0s3

(補足2) IPアドレスの削除

nmcli connection modify -ipv4.addresses 10.0.0.2/24 ipv4.method auto

# 設定反映
nmcli connection up enp0s3

nmcliコマンドオプション

  • ipv4.method
    • IPv4 のアドレス設定方法を指定する
    • auto、disabled、link-local、manual、shared を指定可能
      • auto: デフォルト値。DHCPからアドレス取得する際の設定
      • disabled: IPv4を利用しない
      • manual: IPv4アドレスを手動設定する。この設定は、ipv4.addressesとセットで使う
  • ipv4.addresses

疎通確認

Linuxからスイッチに対してpingが通ることを確認できました。

ping 10.0.0.1
# PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
# 64 bytes from 10.0.0.1: icmp_seq=1 ttl=255 time=0.852 ms
# 64 bytes from 10.0.0.1: icmp_seq=2 ttl=255 time=7.71 ms
# 64 bytes from 10.0.0.1: icmp_seq=3 ttl=255 time=1.25 ms
# ^C
# --- 10.0.0.1 ping statistics ---
# 3 packets transmitted, 3 received, 0% packet loss, time 2025ms
# rtt min/avg/max/mdev = 0.852/3.272/7.712/3.143 ms

(参考) スイッチ側の設定手順

参考情報として、対向側のスイッチの設定も載せておきます。

下記リンクをクリックすると、スイッチの設定が表示されます。

デフォルトゲートウェイの設定

構成図

f:id:stopendy:20180726210526p:plain

nmcliコマンド例

nmcli connection add type ethernet ifname enp0s3 con-name enp0s3 autoconnect yes ipv6.method ignore ipv4.method manual ipv4.addresses 10.0.0.2/24

#### 今回紹介したいコマンド ####
nmcli connection modify enp0s3 ipv4.gateway 10.0.0.1

# 設定反映
nmcli connection up enp0s3

(補足1) デフォルトゲートウェイの削除

# nmcli connection modify enp0s3 -ipv4.gateway 10.0.0.1 では削除できない
nmcli connection modify enp0s3 ipv4.gateway 0.0.0.0

# 設定反映
nmcli connection up enp0s3

nmcliコマンドオプション

(参考) スイッチ側の設定手順

参考情報として、対向側のスイッチの設定も載せておきます。
下記リンクをクリックすると、スイッチの設定が表示されます。

DNSサーバの登録 (DNSクライアント設定)

次にDNSサーバの設定を行います。
今回は環境をインターネットに接続し、GoogleDNSサーバ (8.8.8.8と8.8.4.4) を利用する構成としました。

構成図

デフォルトゲートウェイの例と同じ構成です。

f:id:stopendy:20180726210526p:plain

nmcliコマンド例

nmcli connection add type ethernet ifname enp0s3 con-name enp0s3 autoconnect yes ipv6.method ignore ipv4.method manual ipv4.addresses 10.0.0.2/24 ipv4.gateway 10.0.0.1

#### 今回紹介したいコマンド ####
nmcli connection modify enp0s3 ipv4.dns 8.8.8.8
nmcli connection modify enp0s3 +ipv4.dns 8.8.4.4

# 以下のように1行でも表現可能
# この書き方はDNS削除や、セカンダリIPアドレス追加などには使えないので微妙
# nmcli connection modify enp0s3 ipv4.dns 8.8.8.8, 8.8.4.4

##### 設定反映 #####
nmcli connection up enp0s3

(補足1) DNSサーバの削除

nmcli connection modify enp0s3 -ipv4.dns 8.8.8.8 -ipv4.dns 8.8.4.4

##### 設定反映 #####
nmcli connection up enp0s3

nmcliコマンドオプション

疎通確認

今回はdigコマンドで確認しました。
ANSWER SECTIONにIPアドレスが表示されていれば、DNSの設定は成功です。

stopendy@linuxgui001:~$ dig google.com

; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52585
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;google.com.          IN  A

;; ANSWER SECTION:
google.com.       299 IN  A   216.58.197.174

;; Query time: 51 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Jul 26 21:23:00 JST 2018
;; MSG SIZE  rcvd: 55

stopendy@linuxgui001:~$ 

(参考) スイッチ側の設定手順

デフォルトゲートウェイの設定と同じなので割愛します。

ルーティングの設定

構成図

f:id:stopendy:20180929195101p:plain

nmcliコマンド例

nmcli connection add type ethernet ifname enp0s3 con-name enp0s3 autoconnect yes ipv6.method ignore ipv4.method manual ipv4.addresses 10.0.0.2/24

#### 今回紹介したいコマンド ####
nmcli connection modify enp0s3 ipv4.routes "192.168.0.0/24 10.0.0.1"

# 設定反映
nmcli connection up enp0s3

(補足1) ルーティング設定の追加 (2行目以降)

2つ目以降の経路を追加するときは + をつけます。
+をつけないと設定が上書きされ、192.168.0.0/24宛の経路が消えてしまいます。

+の付け忘れが怖い方は、常に+を付けてしまうのも手です。
1つ目のルーティング追加時に+をつけても問題はありません。

nmcli connection modify enp0s3 +ipv4.routes "192.168.1.0/24 10.0.0.1"

# 設定反映
nmcli connection up enp0s3

(補足2) ルーティング設定の削除

nmcli connection modify enp0s3 -ipv4.routes "192.168.0.0/24 10.0.0.1"
nmcli connection modify enp0s3 -ipv4.routes "192.168.1.0/24 10.0.0.1"

# 設定反映
nmcli connection up enp0s3

nmcliコマンドオプション

  • ipv4.routes
    • ルーティングの追加を行う
    • 形式: ipv4.routes "IPアドレス/プレフィックス [ネクストホップ] [メトリック]"
      • 例1: +ipv4.routes "192.168.0.0/24 10.0.0.1"
      • 例2: +ipv4.routes "192.168.0.0/24 10.0.0.100 2"
    • 削除時は-を付ける
      • 例1: -ipv4.routes "192.168.0.0/24 10.0.0.1"
      • 例2: -ipv4.routes "192.168.0.0/24 10.0.0.100 2"

(参考) スイッチ側の設定手順

デフォルトゲートウェイの設定と同じなので割愛します。

Dot1Qトランクポートの設定

VLAN Taggingのポートを設定する方法を説明します。

構成図

f:id:stopendy:20180726213225p:plain

nmcliコマンド例

#### 今回紹介したいコマンド ####
# 物理インターフェースに対応するコネクションを作成する
# IPアドレスはアサインしない → ipv4.method disabled
nmcli connection add type ethernet ifname enp0s3 con-name enp0s3 autoconnect yes ipv4.method disabled ipv6.method ignore

# Tag VLAN用のサブインターフェースを作成する
nmcli connection add type vlan ifname enp0s3.100 con-name enp0s3.100 autoconnect yes id 100 dev enp0s3 ipv4.method manual ipv4.address 10.0.0.2/24 ipv4.gateway 10.0.0.1 ipv6.method ignore

# 設定反映
nmcli connection up enp0s3
nmcli connection up enp0s3.100

nmcliコマンドオプション

Dot1Q Taggingインターフェースの作成は、以下の2工程に分かれています。

  • 物理インターフェース用のコネクションの設定
  • サブインターフェース用のコネクションの設定

まず、物理インターフェース用のコネクション設定について説明します。
特に新しいオプションは使いません。
ipv4.method disabled により、IPv4アドレスをアサインしない構成にするだけでOKです。

次にDot1Q用途のサブインターフェース (CiscoでいうSVI) ですが、以下のようにオプションを設定します。

  • type
    • 今回はvlanを指定する
    • (物理インターフェースを設定するときは、ethernetだった)
  • ifname
    • Device名を指定する (nmcli device で表示される文字列を指定する)
    • 物理インターフェースの場合、すでに存在するDevice名を指定する必要があった
    • サブインターフェースの場合、恐らくどんな文字列を指定しても問題ない (VLAN100など)
    • 今回は [デバイス名.VLAN-ID] という命名規則で設定した
    • 例: ifname enp0s3.100
  • con-name
    • Connection名を指定する (nmcli connection で表示される文字列を指定する)
    • ifname と同様、どんな文字列でも指定可能 (2バイト文字や空白は避けたい)
    • 細かい情報だが、con-name と ifname はどちらかのみ指定すれば、もう一方は自動補完される
    • 例: con-name enp0s3.100
  • dev
    • Dot1Q サブインターフェースが紐づく Device名を指定する
    • 任意文字列ではない。正確に指定する必要がある
    • 例: dev enp0s3
  • id
    • Dot1Q サブインターフェースが Tagging に利用する VLAN ID を指定する
    • 例: id 100

疎通確認

Linuxからスイッチに対するpingが通ることを確認しました。

ping 10.0.0.1
# PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
# 64 bytes from 10.0.0.1: icmp_seq=1 ttl=255 time=0.927 ms
# 64 bytes from 10.0.0.1: icmp_seq=2 ttl=255 time=10.7 ms
# ^C
# --- 10.0.0.1 ping statistics ---
# 2 packets transmitted, 2 received, 0% packet loss, time 1032ms
# rtt min/avg/max/mdev = 0.927/5.857/10.788/4.931 ms

(参考) スイッチ側の設定手順

参考情報として、対向側のスイッチの設定も載せておきます。
下記リンクをクリックすると、スイッチの設定が表示されます。

最後に

以上、nmcliによるネットワーク設定方法を紹介しました。

他にも追加してほしい設定例などありましたら、コメント欄にてリクエストお願いします。

おすすめ記事

メモリ64GBの小型PCを10万円で購入し、Linuxをインストールしました。
Windowsによって得られたノウハウを日々まとめていますので、よろしければ是非読んでみてください。

endy-tech.hatenablog.jp

nmcliコマンドの基礎

nmcli

本記事で紹介すること

nmcliコマンドの基本的な使い方を紹介します。

nmcliコマンドによるIPアドレス設定、ゲートウェイ設定、DNSクライアント設定などの応用的なコマンド例については、以下の記事で紹介します。

endy-tech.hatenablog.jp

ipコマンドについては、本記事の後半で概要のみ紹介します。

nmcliの概要

RHEL6 / CentOS6でのネットワーク設定は、以下の流れで行われていました。

  1. 設定ファイルの編集
  2. networkサービスの再起動で設定反映

しかし、RHEL7 / CentOS7以降ではトレンドが変わり、Network Managerよる設定変更手順が公式手順としてマニュアルに掲載されるようになりました。
言い換えると、原則としてNetworkManagerを使うのが推奨であるということです。
RHEL8 - ネットワークの設定及び管理 - 2. イーサネット接続の設定

したがって、本記事においてもNetwork Managerによるネットワーク設定手順を紹介します。

NetworkManagerにはいくつかの設定管理の方法がありますが、今回はCLIツールであるnmcli (NetworkManager CLI) を紹介します。
nmcliには以下の利点があります。

  • GUIがない環境でも動作する
  • コマンドを事前に用意してコピーペーストで投入できる
  • シェルスクリプトと併用できる

(参考) NetworkManager関連ツール

NetworkManagerを介してネットワーク設定変更をするツールは、nmcli以外にもいくつかあります。
主なツールを下表にまとめておきます。

ツール名 形式 特徴
nmcli CLI
(Command Line Interface)
nmtui TUI
(Table User Interface)
  • CLI環境で動作する
  • GUIに近い操作感で、予備知識がなくてもある程度直感的に操作できる
  • 自動化には向かない。最初はnmtuiを使い、慣れてきたらnmcliに移行するのもおすすめ
  • 本記事の#(参考) nmtuiでも軽く紹介する
nmstatectl CLI
(Command Line Interface)

他にも、GNOME Desktopなどに付属するnm-connection-editorなどのGUI (Graphical User Interface) 形式のツールもあります。

DeviceとConnection

Network Managerの仕組みのなかで、少々ややこしいのが、このDeviceConnectionの概念です。
この仕組みを一言で言うと、「物理インターフェース (Device) とネットワーク設定 (Connection) を別々に管理することで柔軟性を高めている」 ということです。

Deviceの説明

Deviceは、enp0s3eth0といった物理インターフェース名がついています。
物理インターフェースがLinux Kernelに認識されると、自動的にDeviceとして認識されます。

現在認識されているDeviceを一覧表示するには、以下のコマンドを実行します。

nmcli device
# DEVICE           TYPE      STATE      CONNECTION
# enp0s3           ethernet  connected  enp0s3
# enp0s8           ethernet  connected  enp0s8
# enp0s9           ethernet  connected  enp0s9

Connection の説明

Connectionは、Deviceに対して紐づく論理インターフェースです。
「設定オブジェクト」と言い換えても問題ありません。

IPアドレスやVLAN-IDなどのネットワーク設定は、全てConnectionに対して行います。
そしてConnectionをDeviceに対して紐づけると、ネットワーク設定が物理インターフェースに対して適用されることになります。

現在設定されている Connection を一覧表示するには、以下のコマンドを実行します。

nmcli connection 
# NAME    UUID                                  TYPE      DEVICE      
# enp0s3  8e8b4ff2-9e28-3017-b1a6-52eb65e0e49c  ethernet  enp0s3      
# enp0s8  3ad9f029-8fd4-3511-a9b1-5943620708eb  ethernet  enp0s8      
# enp0s9  5eaed3b4-7a97-3179-8a8e-b6b99890e16e  ethernet  enp0s9

Device と Connection のまとめ

Deviceは、物理インターフェースのことです。
Linuxカーネル (OS) が物理インターフェースを認識した時点で自動生成します。

Connectionとは、論理インターフェース、または設定オブジェクトのことです。
Connectionはユーザーが明示的に作成し、Deviceに紐づけて設定反映することで効果を発揮します。

全体像を図で表すと、以下のようになります。

nmcli_devices_and_connections

nmcli コマンドの基本的な使い方

コマンドのヘルプ

コマンドのヘルプの参照の仕方は2通りあります。

helpサブコマンドを利用する方法

helpサブコマンドは、各階層で実行できます。
下の階層で実行することで、より具体的な情報を得ることができます。

nmcli help
nmcli device help
nmcli connection help
nmcli connection add help
...

nmcli connection add helpのCOMMON_OPTIONSの部分が簡潔で、慣れていない方にはおすすめできます。

bash-completionを利用する方法

nmcliの扱いに慣れてきたら、こちらの確認方法が手軽でオススメです。
bash-completion の機能を利用して、サブコマンドの一覧を手軽に確認できます。

nmcli connection add ipv4.  ## ここでTABキーを2回押す
# ipv4.addresses           ipv4.dns                 ipv4.may-fail
# ipv4.dad-timeout         ipv4.dns-options         ipv4.method
# ipv4.dhcp-client-id      ipv4.dns-priority        ipv4.never-default
# ipv4.dhcp-fqdn           ipv4.dns-search          ipv4.route-metric
# ipv4.dhcp-hostname       ipv4.gateway             ipv4.routes
# ipv4.dhcp-send-hostname  ipv4.ignore-auto-dns     ipv4.route-table
# ipv4.dhcp-timeout        ipv4.ignore-auto-routes

bash-completionとは、TABキーを押下することでサブコマンドの補完や、候補の列挙をしてくれるお助けツールです。
nmcliコマンド以外にも、system-ctlやyum/apt、manコマンドなど、さまざまなコマンド入力を助けてくれます。

RHEL8以降であれば、bash-completion-extrasは存在せず、bash-completionに統合されていると思います。
また、bash-completionは初めからインストールされています。
したがって、RHEL8以降であれば以下のコマンドの実行は不要です。

# RHEL7/CentOS7以前の場合 (epelリポジトリが必要です)
sudo yum install epel
sudo yum install bash-completion bash-completion-extras

# Ubuntu系の場合
sudo apt install bash-completion

manを参照する方法

man nm-settingsnmcliの最も詳細な説明です。
manが長くて読むのが大変ですが、慣れれば/によるキーワード検索を駆使して効率よく情報を調べることができるようになります。

特にconnection settingipv4 settingのセクションがおすすめです。

man nm-settings

設定確認

設定確認には、以下のコマンドが役に立ちます。

コマンド 説明
nmcli IPアドレスDNSサーバ、ルーティングなど要点をわかりやすく表示する
nmcli connection <connection_name> 特定connectionの設定を全て表示する

以下にコマンド実行サンプルを示します。

nmcli
# enp0s3: connected to enp0s3
#         "Red Hat Virtio network device"
#         ethernet (virtio_net), 08:00:27:39:51:3B, hw, mtu 1500
#         ip4 default
#         inet4 10.0.2.15/24
#         route4 0.0.0.0/0
#         route4 10.0.2.0/24
#         inet6 fe80::a6eb:bf5a:d727:ac6a/64
#         route6 ff00::/8
#         route6 fe80::/64
#         route6 fe80::/64
# 
# enp0s8: connected to enp0s8
# (後略)

nmcli connection show enp0s3
# connection.id:                          enp0s3
# (中略)
# IP4.ADDRESS[1]:                         10.0.2.15/24
# IP4.GATEWAY:                            10.0.2.2
# IP4.ROUTE[1]:                           dst = 0.0.0.0/0, nh = 10.0.2.2, mt = 100
# IP4.ROUTE[2]:                           dst = 10.0.2.0/24, nh = 0.0.0.0, mt = 10
# IP4.DNS[1]:                             8.8.8.8
# IP4.DNS[2]:                             8.8.4.4
# (後略)

設定の変更/反映

nmcliによるconnectionの設定変更は、設定変更→設定反映の流れが基本です。
connectionを作成した場合も反映が必要となります。

以下に例を示します。

ifnameなどのパラメータの意味は次の記事で説明します。
今の時点ではあまり気にしなくて結構です。

# nmcli add でConnectionの作成
nmcli connection add ifname enp0s3 con-name enp0s3 type ethernet autoconnect yes ipv4.method auto

# nmcli connection delete でConnectionの削除
nmcli connection delete enp0s3 

# nmcli connection modify で、作成済みConnectionの設定変更
nmcli connection add ifname enp0s3 con-name enp0s3 type ethernet
nmcli connection modify enp0s3 autoconnect yes
nmcli connection modify enp0s3 ipv4.method auto

# nmcli connection up で、設定反映 (Connectionの手動Upの意味もある)
nmcli connection up enp0s3

パラメータ単位で設定削除をする方法は、パラメータごとに書き方が若干異なります。
オプションによって表現方法が異なるのでややこしいですが、これも次の記事でカバーします。

# デフォルトゲートウェイの設定 / 削除コマンド
nmcli connection modify enp0s3 ipv4.gateway 10.0.0.1
nmcli connection modify enp0s3 ipv4.gateway 0.0.0.0

# DNS設定の設定 / 削除コマンド
nmcli connection modify enp0s3 ipv4.dns 8.8.8.8
nmcli connection modify enp0s3 +ipv4.dns 8.8.4.4
nmcli connection modify enp0s3 -ipv4.dns 8.8.8.8 -ipv4.dns 8.8.4.4

Connection をDeviceから紐付け解除する

メンテナンス時にConnection を一時的にDownさせることで、通信を遮断することも可能です。

# nmcli connection down で、Connection を Device から紐づけ解除する
nmcli connection down enp0s3

# nmcli connection up で、Connection を Device から再度紐付ける
nmcli connection up enp0s3

Connectionの設定を複製する

Connectionは、Deviceとは独立して存在できる設定オブジェクトであると冒頭で説明しました。
実はこの方式にはメリットがあります。

それは、Connectionをクローン機能で複製し、手軽にバックアップを取得できることです。

Connectionの複製は以下のように行います。

# nmcli connection clone <connection> <new_connection_name>
nmcli connection clone enp0s3 enp0s3_backup

上記コマンドでConnectionを複製したら、enp0s3で強気に設定変更を試せます。
もし設定がうまく行かなければ、以下の要領で設定復旧できます。

# バックアップしたConnectionをUpし、通信を復旧させる
nmcli connection up enp0s3_backup

# 不要設定を一旦削除し、cloneで作り直す
nmcli connection delete enp0s3
nmcli connection clone enp0s3_backup enp0s3
nmcli connection up enp0s3
nmcli connection delete enp0s3_backup

なお、nmcliにConnection名を後から変える機能はありません。
名前を変えたい場合は、nmcli connection cloneで新しい名前のConnectionを作ってから、古い名前のConnectionを削除する流れになると思います。

(参考) nmcli device modify

実は、nmcli device modifyでも設定変更が可能です。
しかし、あまり使いみちはありません。

nmcli device modifyで設定変更した場合は、設定が即時反映されます。
nmcli connection upで設定反映する必要はありません。

しかし、OSを再起動すると変更した設定は削除され、元に戻ってしまいます。
OS再起動後も設定が削除されないnmcli connectionとは挙動が異なります。

nmcli device modifyは一時的に設定変更を試すときに役に立ちそうなものです。
...が、nmcli connection cloneコマンドがあるのでやはり必要性を感じません。

(参考) Connection名は被っても良い?

混乱するのであまり推奨はしませんが、同じ名前のConnectionを複数作成することは可能です。
ConnectionはUUID (Universally Unique IDentifier) という絶対に被らない一意の文字列が自動で割り振られる仕組みになっており、UUIDで識別できます。
なので、名前が被っても問題ないのです。

ここで、tmpというconnectionを2つ作ってみます。
nmcli connection addで作っても良いのですが、ものぐさなのでcloneで作ります。

最後にnmcli connection showを実行していますが、これはnmcli connectionと同じ意味です。

nmcli connection clone enp0s3 tmp
# enp0s3 (5eae6951-aae0-4475-baaa-6e5222bf7e45) cloned as tmp (3bb117d7-df76-4945-87ce-26d9a38d29fd).

nmcli connection clone enp0s3 tmp
# enp0s3 (5eae6951-aae0-4475-baaa-6e5222bf7e45) cloned as tmp (a33fa9be-45e9-41a4-bad2-1334002f957e).

nmcli connection clone enp0s3 tmp
# enp0s3 (5eae6951-aae0-4475-baaa-6e5222bf7e45) cloned as tmp (323e22c1-1256-488e-abd6-88aa6827c3c5).

nmcli connection show

# NAME          UUID                                  TYPE      DEVICE 
# enp0s3        5eae6951-aae0-4475-baaa-6e5222bf7e45  ethernet  enp0s3
# tmp           3bb117d7-df76-4945-87ce-26d9a38d29fd  ethernet  --  
# tmp           a33fa9be-45e9-41a4-bad2-1334002f957e  ethernet  --  
# tmp           323e22c1-1256-488e-abd6-88aa6827c3c5  ethernet  --  

nmcliにおいては、Connection名の代わりにUUIDを指定することでも対象を指定できます。
同じ名前のConnectionが複数ある場合には、基本的にはこのUUIDを使うことになります。

ためしにtmpを1つ削除します。

nmcli connection delete 323e22c1-1256-488e-abd6-88aa6827c3c5
# Connection 'tmp' (323e22c1-1256-488e-abd6-88aa6827c3c5) successfully deleted.

nmcli connection
# NAME          UUID                                  TYPE      DEVICE 
# enp0s3        5eae6951-aae0-4475-baaa-6e5222bf7e45  ethernet  enp0s3
# tmp           3bb117d7-df76-4945-87ce-26d9a38d29fd  ethernet  --  
# tmp           a33fa9be-45e9-41a4-bad2-1334002f957e  ethernet  --  

ここで更に、tmpという名前を指定して削除してみます。
Connectionを特定できないのでエラーになると思いきや、両方のConnectionが削除されます。
怖いですね。

nmcli connection delete tmp
# Connection 'tmp' (3bb117d7-df76-4945-87ce-26d9a38d29fd) successfully deleted.
# Connection 'tmp' (a33fa9be-45e9-41a4-bad2-1334002f957e) successfully deleted.

nmcli connection
# NAME          UUID                                  TYPE      DEVICE 
# enp0s3        5eae6951-aae0-4475-baaa-6e5222bf7e45  ethernet  enp0s3

Connection名を被らせることは技術的には可能ですが、運用上の事故に繋がりかねないので可能な限り避けるようにしましょう。

最後に余談ですが、LANG=ja_JP.UTF-8のような日本語環境でConnection名が2バイト文字表記になってしまった時、nmcli connection delete <UUID>で削除する時にもUUIDは活躍します。

省略表現

nmcliは、ネットワーク機器のCLIのように省略表現が可能です。

サブコマンドの文字列を途中まで打ち、後は一意に補完できるような状況になったらそのまま実行できます。

Cisco機器で言えば、show running-config の代わりに show run でも良いのと同じことです。

以下にサンプルを示します。

# nmcli device
nmcli d

# nmcli connection
nmcli c

# nmcli connection modify enp0s3 autoconnect yes
# autoconnectのような Connection のオプションは省略表記できませんでした。TAB補完しましょう。
nmcli con mod enp0s3 autoconnect y

覚えておきたいコマンド

最後に、よく使うコマンドを列挙します。

これらのコマンドをひたすら何度も打っていれば、nmcliの使い方などすぐに慣れてしまうでしょう。

  • nmcli
    • ネットワークステータス、設定をざっくり確認
  • nmcli connection show インターフェース名
    • Connection単位で、ネットワーク設定を詳細に確認
  • nmcli device
    • Deviceの一覧表示
  • nmcli connection
    • Connectionの一覧表示
  • nmcli connection add <connection> <options...>
    • Connectionの作成
  • nmcli connection delete <connection>
    • Connectionの削除
  • nmcli connection modify <connection> <options...>
    • Connectionの設定変更
  • nmcli connection up <connection>
    • Connectionの設定反映
    • Deviceとの手動紐づけ
  • nmcli connection down <connection>
    • Connectionの手動紐づけ解除 (インターフェース無効化として使える)
    • autoconnect yes設定でも、NetworkManager再起動か手動upさせるまで上がってこない
  • nmcli connection clone <connection> <new_connection_name>

(参考) nmtui

概要

nmcliと等価な機能を持つコマンドです。
Network Managerサービスを介して、Linuxのネットワーク設定を変更します。

予備知識が一切なくても直感的に操作できることが唯一の長所ですが、基本的にはnmtuiではなくnmcliを使うことをおすすめします。
理由は以下のとおりです。

  • 慣れればnmcliの方が早いし楽
  • nmcliはシェルスクリプト化できる
  • nmtuiは設定反映の操作が少し怖い (次のセクションで触れます)

nmtuiの使い方

nmtuiと1行でコマンドを実行すると、TUI (Text User Interface) の対話画面が現れます。
CLI環境でも実行可能です。
十字キーで項目を選択し、Enterキーで決定、Escキーでメニューを抜けるという、直観的な操作が可能です。
設定の選択肢が見えているので、Network Managerの設定変更に慣れていない方には良いかもしれません。

nmtui_connection_settings

nmtuiの設定変更も、nmcli connection modifyと同様に即時反映ではありません。
コネクションのactivationを手動で行う必要があります。

nmtui上でもこの操作は可能ですが、コネクションがアクティブな状態では「Deactivate」ボタンしか表れません。
下記の画面で、Enterキーを「タタン」と素早く2回押せば、Deactivate > Activateされます。
nmcli connection upを実行するよりも通信影響が大きくなりそうなので、実運用で使えないと思います。

nmtui_connection_activation

もしnmtuiを実運用で使うなら、設定反映だけはnmcli connection up <connection> で実施するのが良いかと思います。

(参考) ipコマンド

nmcliとほぼ同等の役割を持つコマンドとして、ipコマンドもあります。

ipコマンドもIPアドレスやルーティングの設定を実装できます。
nmcli との違いは、私の知る限り主に以下の2点です。

  • 設定ファイルに反映されないためOS再起動後に設定が消える
  • nmcli では実装できない機能を一部持っている
    • bridgeやmacvlanなど、nmcliに対応していない論理インターフェースを作成する (man ip-link)
    • Linux kernelの機能であるnetwork namespaceにアクセスし、ネットワークスタック (NICARPキャッシュ、ルーティングテーブル、firewalld、Network関連のカーネルパラメータ、他) を論理分割する (man ip-netns)

上記の namespacemacvlan のような特殊な要件でもない限り、ipコマンドの設定変更のやり方を覚える必要性は薄いと思います。
しかし、ip routeコマンドだけは、覚えておいて損はないでしょう。
ip routeコマンドにより、nmcliよりもわかりやすくルーティングテーブルを表示できます。

ip route
# 172.16.0.0/24 dev enp0s8 proto kernel scope link src 172.16.0.10
# 172.16.2.0/24 dev enp0s9 proto kernel scope link src 172.16.2.10

まとめ

本記事では、nmcliの基本的な使い方について紹介しました。

次の記事

nmcliの基本的なオプション、IPアドレスデフォルトゲートウェイの追加/削除など、nmcliの具体的なコマンドサンプルを紹介します。

endy-tech.hatenablog.jp

Linux のブラウザ初期設定方法

firefox-browser-logo

お伝えしたいこと

Linux のブラウザには、残念ながら結構癖があります。
それが仮におなじみのFirefoxGoogle Chrome であってもです。

本記事では、私のわかる範囲で 具体的な癖の内容とその解決策 を紹介したいと思います。

なお、紹介している内容は以下の環境での内容となります。

  • 2020年9月時点の情報
  • Fedora 32 Server + Cinnamon Desktop 4.6.7-1
  • Firefox 80.0.1 (64-bit)
  • Chrome 85.0.4183.102 (64-bit)

Firefoxの癖と解決策

マウススクロールが遅い

実際にやってみればわかると思います。
Firefox で適当なページを開いてマウスホイールを回すと、スクロールが非常に遅いことに気づきます。

解決策は、以下の手順で about:config を弄る方法になります。

  • ロケーションバー (URLを書くところ) に about:config と入力してEnter
  • 警告が出るが、 Accept the Risk and Continue から先に進む
  • mousewheel.default.delta_multiplier_y で検索する
  • デフォルトでは 100 に設定されているので、ダブルクリックして値を編集する。私の環境では、250 に設定

YouTube Live など一部の動画が再生できない

通常のYouTube動画は何もしなくても再生できます。
でも、YouTube Live は再生に失敗します。

これは、H.264 と呼ばれるコーデックがFirefoxに同梱されていないことが原因のようです。
対策は2つあります。

1つ目の対策であるGoogle Chrome については、本記事の後半で紹介します。

2つ目の対策ですが、以下の2ステップで対応可能です。

(ステップ1) RPMFusion のFree版のrpmリポジトリを追加します。
Fedora のバージョン (31, 32, 33, ...) によってリポジトリが変わるので、将来的にFedora をバージョンアップする際には意識が必要かもしれません。。

RPMFusion公式サイトに記載されているとおり、以下のコマンドでインストールできました。

sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

(ステップ2) ffmpeg をインストールします。

sudo dnf install ffmpeg

Firefoxを再起動したら、YouTube Live も再生できるようになっているはずです。

(参考) RPM Fusion のセキュリティについて

RPM Fusion を勧めておきながら矛盾するようなのですが、サードパーティーリポジトリを無闇に使うのは危険です。

とはいえ、ライセンスなどの関係で公式のパッケージリポジトリでは配布できないものを導入したいとき、どうしてもサードパーティーに頼らざるを得ないときも多々あります。
そんなときは、リポジトリについてこのあたりを知っておくと良いのではないかと思います (私の主観です)。

RPM Fusion について言えば、私は以下のように判断しました。

  • Fedora の Documentation で言及されているので、怪しくはない
  • ただし、企業がrpm全てを綿密に品質管理しているわけではなさそうなので、過信は禁物...かもしれない
  • 既存パッケージへの影響については、保証があるわけではないが配慮されてそう
  • RPM Fusion のリポジトリを有効化して、RPM Fusion のパッケージを1つもインストールしていない状態で sudo dnf upgrade を実行したところ、RPM Fusion からパッケージを更新しようとする動きはなかった

「それでも既存パッケージの上書きのリスクが気になる」という方は、例えば以下のコマンドでリポジトリをデフォルトで無効化するのも良いと思います。
※私は無効化したことを忘れそうなので、有効化したままです

# rpmfusion-free と rpmfusion-free-updates が有効であることを確認する
dnf repolist --enabled rpmfusion*
grep enabled=1 /etc/yum.repos.d/rpmfusion-free*

# リポジトリを無効化する
sudo dnf config-manager --set-disabled rpmfusion-free rpmfusion-free-updates

# 実際のステータスと設定ファイル両方が更新され、無効化されたことを確認する
dnf repolist --enabled rpmfusion*
grep enabled=1 /etc/yum.repos.d/rpmfusion-free*

上記手順で無効化した場合、次回以降は --enable-repo オプションでRPM Fusion を有効化したいときのみ有効化します。
例えばffmpeg をインストールしたい場合は、以下のようなコマンドになります。

sudo dnf install --enablerepo='rpmfusion-free,rpmfusion-free-updates' ffmpeg

無効化した設定を元に戻したいときは、以下のコマンドを実行します。

sudo dnf config-manager --set-enabled rpmfusion-free rpmfusion-free-updates

Google Chrome の癖と解決策

Google Chrome のインストール方法は後述します。

マウススクロールが遅い

Linux 版のChrome もマウススクロールが遅いです。
Chrome の場合は、シンプルに拡張機能で対応します。

Chrome WebstoreScroll Speed といったキーワードで検索すれば良いアドオンが見つかります。

どれでも良いのですが、私は Linux Scroll Speed にしました。
同じアイコンの拡張機能がもう一つありましたが、更新日が新しい方にしました。

Chrome 拡張機能なので、Chrome の設定画面やWebstore では効果がありません。
残念ですが、そこは我慢してください。

ちなみにググるimwheel というパッケージを使った解決方法も出てきます。
これは特定のアプリのウィンドウがアクティブな場合にマウスホイールの挙動 (今回の場合はスクロール速度) を調整するといった使い方です。
残念ながら、こちらのやり方はChrome のウィンドウが非アクティブな状態では効果がなく、使い勝手があまり良くなかったので不採用としました。

(参考) Google Chrome のインストール方法

Cinnamon デスクトップ環境の場合、Firefoxはデフォルトでインストールされていますが、Chrome は別途インストールが必要です。
Fedora Wiki を参考に、Chrome のインストール手順を紹介します。

  • 公式のGoogle Chrome配布サイトにアクセスする
  • Download Chrome のリンクから、パッケージをダウンロードする
  • sudo dnf install google-chrome-stable_current_x86_64.rpm のように、rpm ファイルを指定してインストールする
  • google-chrome リポジトリが追加され、Google Chrome 本体もインストールされる

まとめ

Linux版の FirefoxGoogle Chrome の癖と解決策を紹介しました。
似たような事象で困っている方、ぜひ参考にしてください。

Linux PC構築関連リンク集

endy-tech.hatenablog.jp

Linux の日本語入力設定手順

20200912150711

お伝えしたいこと

Linux では、デスクトップ環境をインストールした後もデフォルトでは日本語入力ができません。
入力できるのはアルファベットのみです。

本記事では、Linuxデスクトップ環境で日本語入力を設定する方法をお伝えします。
筆者環境の都合で、 FedoraiBus + Mozc を導入するケースを紹介します。
ただ、基本的な考えはディストリビューションに依らず、共通していると思います。

Input Method やMozcといった用語を知りたい方は、先に(参考) Input Method とはを参照してください。
Fedora以外のディストリビューションを使っていて、ibus-mozc以外のIMEも検討したい方は、先に(参考) その他の日本語入力の選択肢をご覧ください。

日本語入力の設定手順

Input Method のインストール

今回は、デフォルトのibus-anthy (iBus + anthy) ではなく、ibus-mozc (iBus + Mozc) を使用します。
理由は以下の通りです。

Mozcを使う場合は、ibus-mozc以外にもfcitx-mozcという選択肢もあります。
fcitxの方が慣れていて好ましいという方は、そちらもご検討ください。
特にこだわりがなければ、本記事に合わせてibus-mozcを選択する方が調査の手間を省けると思います。

さて、必要パッケージをインストールします。
以下のコマンドを実行してください。

sudo dnf install ibus-mozc langpacks-ja

langpacks-ja は、日本語入力という意味では本来必要ではありません。
実際、このパッケージがなくても日本語入力の設定は問題なくできます (従ってディスクリソースが非常に限られた使い捨てサーバなどの環境では省略しても問題ありません)。
ただ、このパッケージに依存関係でついてくる langpacks-core-font-jagoogle-noto-serif-cjk-ttc-fonts といったフォントが環境次第では日本語環境の文字化けを解消することもあるので、ついでに入れてしまうのが推奨です。

langpacks-ja は、本来 localectl コマンドで日本語環境を設定するために必要なメニュー日本語翻訳情報などを含むメタ情報パッケージです。
依存関係でmanの翻訳情報も一緒についてきます (man-pages-ja)。
langpacks に関する詳細情報が知りたい方は、RedHat社のマニュアルを参考にしてみてください。

Input Method の選択

Input Method Framework として iBus を使うように設定します。
Cinnamon デスクトップ環境をモデルに説明しますが、他のデスクトップ環境でもほぼ同様の手順で対応できると思います。

Menu から input method で検索し、Input Method Selector を起動します。
im-chooser コマンドを実行することでも同じ画面を起動できます。

im-chooser1

im-chooser2

iBus を選択します。
必要に応じて再ログインして設定反映します。

iBus の隣にある Preferences から iBus の設定画面に移動します。
ibus-setup コマンドを実行することでも同じ画面を起動できます。

ibus-setup-general

iBusの設定

iBus の設定では、基本的にIMEの選択を行います。

先程のiBus の設定画面で、 Input Method のタブを開きます。
既存のMozc 以外のInput Method が登録されていた場合は、 Remove で除外します。
そして Add > Japanese > Mozc と選択し、Mozc をIMEとして追加します。

ibus-setup-mozc

Preferences を選択し、Mozc の設定画面を開きます。
/usr/libexec/mozc/mozc_tool --mode=config_dialog コマンドを実行することでも同じ画面を起動できます。

mozc-general

(任意) キー配置のカスタマイズ (Mozc の設定変更)

基本的には変更不要ですが、私の好みで一部キー配置をカスタマイズします。
Windows でも同様のことを行っていたのですが、以下のように設定します。

  • 未入力の状態で変換を押すと、IMEオンにする (デフォルトは再変換)
  • 未入力の状態で無変換を押すと、IMEオフにする (デフォルトは入力形式を ひらがな全角カタカナ半角カタカナ の順に切り替える)

半角/全角キーで切り替えていると、今IMEオンなのかオフなのかわからなくなることが多いのですよね。
なので、上記のようにMac風なカスタマイズを入れることで、日本語入力の前は変換、英語入力の前は無変換 を押してからタイプすれば問題ない状態を作っています。

上記のようにカスタマイズしたい方は、以下のように設定変更してください。

下記Mozcの設定画面で、Keymap (キー設定) > Keymap Style (キー設定の選択) > Customize (編集) を選択します。

mozc-general2

すると、 Mozc keymap editor が開きます。

mozc-keymap-editor2

ここで上図赤枠のような設定となるように、以下の設定を入れます。
※設定箇所を見つけやすくするため、一番上の Key の部分をクリックしてソートしておくと良いです

Mode (モード) Key (入力キー) Command (コマンド)
Direct input (直接入力) Henkan (変換) Activate IME (IMEを有効化)
Precomposition (入力文字なし) Henkan (変換) Activate IME (IMEを有効化)
Precomposition (入力文字なし) Muhenkan (無変換) Deactivate IME (IMEを無効化)

入力キーの設定は、下記サイトを参考にさせていただきました。
こちらのサイトには、変換中に変換キーや無変換キーを押した場合もIMEオン/オフを切り替えるような設定になっていました (更にMac寄り?)。

magidropack.hatenablog.com

こちらでiBus、Mozc の設定は完了です。
関連するウィンドウは OK などで設定を反映しつつ閉じて大丈夫です。

キーボードレイアウトの不具合回避

ibus-mozc の不具合と思われるのですが、2020/9 現在、iBusにMozc を追加した直後はGUIのキーボードアプリで日本語キー配置を選択しているのに英語キー配置になってしまう という事象があります。
以下に、この事象の回避方法を記載します。

3パターン紹介しますが、回避方法1 が一番お勧めです。
他の方法は、回避方法1 でうまく行かなかった場合のために念のため記載しています。

英語キーボードレイアウトを使っている方はそもそも問題ないので、スキップで問題ありません

回避方法1. ibus-mozc の設定ファイルからキーボードレイアウトの指定を変更する (推奨)

こちらは根本原因に対するアプローチです。
私もこの方法を使っています。
システム全体に影響を与えることになりますが、回避方法2 と組み合わせることでユーザーごとにキーボードレイアウトを指定できます。

以下サイトを参考にさせていただきました。
ありがとうございます。

qiita.com

以下のコマンドで mozc.xml を開き、ファイルに直書きされたキーボードレイアウトの値を書き換えます。
以下のコマンドで設定ファイルを開きます。

sudo vi /usr/share/ibus/component/mozc.xml

<layout>default</layout> と書かれている部分を以下のように書き換えます。

  <layout>jp</layout>

設定反映のためにデスクトップ環境への再ログイン、またはOS再起動します。

回避方法2. キーボードレイアウトの再登録 (非推奨)

Cinnamon デスクトップ環境の場合、キーボード設定から日本語キーボードレイアウトの再追加を行うことでも不具合を回避できました。
恐らく、他のデスクトップ環境でもできると思います。

英語キーボードと日本語キーボードを使うユーザーが混在しているときには役に立つかなと思います。

ただ、この方法を使った場合はiBusの設定画面からMozcをIMEとして追加するたびに不具合が再発するので、都度同じ手順で回避する必要が出てきます。
IMEの追加・削除を実施する頻度は低いので、それほど困らないとは思いますが...。

具体的には以下の手順です。

  • Menu から Keyboard で検索し、キーボードの設定画面を開く
  • Layout タブを開き、以下の設定を行う
    • + アイコンから English (US) を追加
    • アイコンから Japanese を削除
    • + アイコンから Japanese を再追加
    • アイコンからEnglish (US) を削除

回避方法3. iBus 設定において、「システムのキーボードレイアウトを使う」に設定する (非推奨)

回避方法1 と比較してあまり綺麗なやり方ではないのでオススメはしませんが、参考までに書いておきます。
iBus単体の機能でキーボードレイアウトを指定する方法です。
こちらの方法も回避方法1 と同様、システム全体に影響します。

具体的な手順は、以下の2ステップです。

  • ibus-setup コマンドなどでiBusの設定画面を開き、Advanced タブに移動する
  • Use system default keyboad layout にチェックを入れる

回避方法3の前提として、localeの設定で使いたいキーボードレイアウト (今回は日本語) になっている必要があります。

localectl コマンドを実行し、 X11 Layout がjpになっていれば、デスクトップ環境におけるキーボードレイアウトがjpとシステムレベルで設定されていることになります。

[stopendy@pc ~]$ localectl
   System Locale: LANG=en_US.UTF-8
       VC Keymap: jp
      X11 Layout: jp
[stopendy@pc ~]$ 

X11 Layout を変更したい場合は、sudo localectl set-x11-keymap jp といったコマンドを実行します。

(参考) Input Method とは

iBusとかMozc といった用語が複数出てきてもやもやしている方向けに、補足説明を用意しました。
気になる方のみ読んでください。

Input Method とは、キーボードから入力されたアルファベットから各言語の文字 (平仮名など) に置き換えたり、変換機能を与えるソフトウェア群のことです。

Linux における Input Method は、Input Method Framework と Input Method Editor (IME) の2つで構成されています。

Input Method Framework

Input Method Framework とは、IME (後述) を動作させるための共通フレームワークです。
IMEの切り替えなどの機能を持ちます (直接入力、IME1、IME2、...)。

日本語入力をサポートするフレームワークとして、以下があるようです。
これら4つには目立った機能差分はないようです。

日本語のブログを調べると、iBusかfcitxのどちらかを使っているという話をよく聞きます。
Fedoraにおいても、ibus-mozcfcitx-mozcのいずれかを選択できます (※)。

(※) dnf list *-mozc と実行すると、 ibus-mozcfcitx-mozcが表示されるため。
以前はibus-mozcしか存在しなかったが、いつからかfcitx-mozcも追加されていた

Input Method Editor (IME)

IME を Input Method Framework と組み合わせることで、本来英字しか入力できないキーボードで多言語の入力をサポートできるようになります。

日本語のIMEは主に以下の機能を提供します。

  • ローマ字入力、かな入力
  • 変換
  • キーのカスタマイズ (例えば 半角/全角 キーでIMEのオン/オフを切り替える機能の割当など)

具体的なIMEソフトを挙げると、例えば以下のようなものがあります。

Mozc と kkc を実際に使ってみたので比較します。

Mozc

kkc

  • kkc公式GitHub
  • 設定画面を見たところ、基本機能は揃っている印象
  • Fedora にはデフォルトでibus-kkc がインストールされている
  • Microsoft IMEGoogle日本語入力に慣れていると、少し癖を感じるかも
    • 日本語入力でスペースキーを押すと、全角スペースではなく半角スペースになる
    • System Tray (≒通知領域) に表示されたアイコンが常に「あ」。英語入力でも日本語入力でもアイコンが切り替わらない
    • WindowsIMEに慣れていると、デフォルトのキーボード設定に癖があると感じるかも (無変換がカタカナ変換ではなく変換解除など)

(参考) その他の日本語入力の選択肢

下記ページにまとまっているので、興味のある方はご覧ください。

地域化 - ArchWiki

あくまでArch Linux 向けの情報なので、実際にFedora が対応しているかどうかは以下のコマンドなどで確認します。

dnf list *-anthy *-kkc *-mozc *-skk
# Installed Packages
# ibus-kkc.x86_64            1.5.22-13.fc32                        @fedora
# ibus-mozc.x86_64           2.23.2815.102-9.fc32                  @fedora
# Available Packages
# fcitx-anthy.x86_64         0.2.3-1.fc32                          updates
# fcitx-kkc.x86_64           0.1.0-17.fc32                         fedora 
# fcitx-skk.x86_64           0.1.0-15.fc32                         fedora 
# fcitx5-skk.x86_64          0-0.2.20200822git02fb41d.fc32         updates
# gcin-anthy.x86_64          2.8.9-4.fc32                          updates
# ibus-anthy.i686            1.5.11-6.fc32                         fedora 
# ibus-anthy.x86_64          1.5.11-6.fc32                         fedora 
# ibus-skk.x86_64            1.4.3-6.fc32                          fedora 
# m17n-lib-anthy.x86_64      1.8.0-7.fc32                          fedora 
# scim-anthy.x86_64          1.2.7-26.fc32                         fedora 
# uim-anthy.x86_64           1.8.8-6.20200828git0c2fbfa6.fc32      updates
# uim-skk.x86_64             1.8.8-6.20200828git0c2fbfa6.fc32      updates

(参考) Mozcがクラッシュしたときは

時折Mozcがクラッシュして日本語入力できなくなることがあります。
その際は、iBusごと再起動することで復旧できます。

以下の画像はCinnamon デスクトップのサンプルですが、隅っこの通知領域にiBusのアイコンがあります。
このアイコンを右クリックし (1)、Restart を選択することでiBusを再起動できます (2)。

ibus-restart

(参考) デフォルトIMEの変遷

以下のように変遷してきました。

時期 デフォルトIME 補足
〜Fedora18 ibus-anthy ※最初からずっとibus-anthyなのか、途中からなのかは不明
Fedora19〜33 ibus-kkc anthyのメンテが滞り、kkcの方が活発だったので乗り換え
Fedora34〜 ibus-anthy kkcのメンテが滞り、anthyの開発が再開されたので乗り換え

ibus-mozcもデフォルトIMEの候補として意識はされているようです1

まとめ

Linux (特にFedora) のための日本語入力の設定方法を書きました。
fcitx, iBus, Mozc, kkc など様々な用語が飛び交ってわかりづらい部分もありますが、本記事でもやもやが解消されて正しく設定する手助けになれば幸いです。

もし指摘・補足・質問などあればコメントお願いします。

Linux PC構築関連リンク集

endy-tech.hatenablog.jp

Cinnamon Desktop のインストール手順 (Fedora)

cinnamon_logo

お伝えしたいこと

Linux Fedora に Cinnamon Desktop Environment を導入する手順をお伝えします。
Cinnamon Desktop の初期設定手順は別記事にて記載します。

記事の末尾におまけとして、 Cinnamon を選んだ理由 も書いてみました。
どのDesktop Environment を選ぶか悩んでいる方は、ぜひ参考にしてみてください。

Cinnamon のインストール手順

dnf group install でまとめてパッケージをダウンロードします。

# sudo dnf install @cinnamon-desktop-environment も同じ意味
sudo dnf group install 'Cinnamon Desktop'

systemd 起動時のデフォルトの target (runlevel) を変更し、再起動で反映します。

systemctl set-default graphical.target
reboot

これでデスクトップのインストールが完了です。
(デスクトップ背景はカスタマイズ後)

cinnamon-desktop

GUI環境の起動だけであれば startx コマンドでも可能ですが、デフォルトのtarget が正しく変更されたことを確認する意味でも reboot がお勧めです。

(参考) 確認系コマンド

dnf group list --ids

dnf group install で指定可能なパッケージ名の一覧表示。

余談ですが、 dnf help group list で出せるヘルプが man dnf よりも見やすいです。
--id というオプションもそこで調べました。

dnf group list --ids
# Last metadata expiration check: 0:20:14 ago on Mon 07 Sep 2020 11:09:08 PM JST.
# Available Environment Groups:
#    Fedora Custom Operating System (custom-environment)
#    Minimal Install (minimal-environment)
#    Fedora Workstation (workstation-product-environment)
#    Fedora Cloud Server (cloud-server-environment)
#    KDE Plasma Workspaces (kde-desktop-environment)
#    Xfce Desktop (xfce-desktop-environment)
#    LXDE Desktop (lxde-desktop-environment)
#    LXQt Desktop (lxqt-desktop-environment)
#    MATE Desktop (mate-desktop-environment)
#    Sugar Desktop Environment (sugar-desktop-environment)
#    Deepin Desktop (deepin-desktop-environment)
#    Development and Creative Workstation (developer-workstation-environment)
#    Web Server (web-server-environment)
#    Infrastructure Server (infrastructure-server-environment)
#    Basic Desktop (basic-desktop-environment)
# Installed Environment Groups:
#    Fedora Server Edition (server-product-environment)
#    Cinnamon Desktop (cinnamon-desktop-environment)
# Installed Groups:
#    Headless Management (headless-management)
#    Hardware Support (hardware-support)
# Available Groups:
#    3D Printing (3d-printing)
#    Administration Tools (admin-tools)
#    Audio Production (audio)
#    Authoring and Publishing (authoring-and-publishing)
#    Books and Guides (books)
#    C Development Tools and Libraries (c-development)
#    Cloud Infrastructure (cloud-infrastructure)
#    Cloud Management Tools (cloud-management)
#    Compiz (compiz)
#    Container Management (container-management)
#    D Development Tools and Libraries (d-development)
#    Design Suite (design-suite)
#    Development Tools (development-tools)
#    Domain Membership (domain-client)
#    Fedora Eclipse (eclipse)
#    Editors (editors)
#    Educational Software (education)
#    Electronic Lab (electronic-lab)
#    Engineering and Scientific (engineering-and-scientific)
#    FreeIPA Server (freeipa-server)
#    LibreOffice (libreoffice)
#    MATE Applications (mate-applications)
#    Medical Applications (medical)
#    Milkymist (milkymist)
#    Network Servers (network-server)
#    Neuron Modelling Simulators (neuron-modelling-simulators)
#    Office/Productivity (office)
#    Python Classroom (python-classroom)
#    Python Science (python-science)
#    Robotics (robotics-suite)
#    RPM Development Tools (rpm-development-tools)
#    Security Lab (security-lab)
#    System Tools (system-tools)
#    Text-based Internet (text-internet)
#    Window Managers (window-managers)
#    Deepin Desktop Environment (deepin-desktop)
#    Games and Entertainment (games)
#    GNOME Desktop Environment (gnome-desktop)
#    Graphical Internet (graphical-internet)
#    KDE (K Desktop Environment) (kde-desktop)
#    Sound and Video (sound-and-video)

systemctl get-default

現在のデフォルトターゲットの表示。

systemctl get-default
# graphical.target

参考リンク

Cinnamon インストール手順の調査は、下記サイトを参考にしました。

(参考) Cinnamon を選んだ理由

以下の3点です。

  • ショートカットキーが使いやすい
    • Windows ライクなショートカットキーがほぼ使える
    • Keyboard の設定画面からカスタマイズも可能
  • 見た目が好み
    • アイコンがシンプル
    • デフォルトのUIがWindows ライクで変更不要
    • 大半のコンポーネントがCinnamon用に作られているため、統一感がある
  • カスタマイズしなくても使いやすい
    • レイアウトをWindows 風にカスタマイズできるDesktop Environment (DE) は他にもたくさんあるが、レイアウトを大幅に変更するとバグや機能不足に苦しむことが多い

デスクトップの選び方について以下の記事が参考になりました。
最も共感できる内容でした。
デスクトップ環境の選び方と特徴 - Mimir Yokohama

Cinnamon と KDE

Cinnamon, KDE 共にカスタマイズ前からWindows ライクなUIとショートカットキーを持ち、どちらも安定していて使いやすいです。
正直、どちらを使うか最後まで悩みました。

実際に使ってみても似ている部分が多いのですが、私として目立ったのは以下の差分です。

  • KDEはあらゆる部分を細かくカスタマイズでき、凝り性な方に向いてそう。でも、どこでどの設定をしたらよいか少し迷う。Cinnamon は必要十分な設定画面で、とてもわかりやすい
  • デスクトップやパネルのウィジェット機能は、KDEの方が充実している。KDEのが歴史が長いので、サポーターも多いのかもしれない。Cinnamon は今後に期待
  • ユーザーインターフェースの直感性 (わかりやすさ)、統一感、基本的な操作性はCinnamon に軍配が上がる

結局、最後は見た目、操作性、わかりやすさを重視してCinnamonを選びました。

この辺は好みだと思います。

関連記事

Linux PC構築関連リンクをまとめてあります。

endy-tech.hatenablog.jp

Fedora 32 Server のインストール手順|NUC10構築(3)

fedora-logo

前の記事

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

endy-tech.hatenablog.jp

お伝えしたいこと

パソコン用途に着目した Fedora 32 Server のインストール手順を記載します。

この記事を書いた当時はFedora 32が最新版でしたが、現時点で試すなら最新版のFedoraをインストールすることをおすすめします。
最新版のFedoraの画面構成は若干異なりますが、インストール時に指定する各種パラメータの決め方は十分参考になると思います。

特に重要なポイント

Fedora32 のインストール手順はCentOSRHELと同様です。

今回紹介する手順も基本に忠実ではありますが、パソコン用途という意味では以下3つのポイントが特に重要だと考えています。
こちらだけでもぜひ見ていただければと思います。

  • LVMを使う
    • LVMを使うことでパーティション縮小や拡張が容易になります
    • 性能劣化も特にないので、理由がなければLVMを使うのがオススメです
    • 詳細は、後半の (参考) LVMについて を参照してください
  • ファイルシステムext4を使う
  • /boot, /, /home でファイルシステムを分けた
    • パーティションを分ける理由として、特に重要なのは以下と考えています
      • 障害ドメインを限定する (万が一 /home の空き容量が枯渇しても、 / の容量が空いていればrootユーザでログインしてメンテナンスできるはず)
      • システム領域とデータ領域で分けておくと、空き容量の確認や管理がしやすくなる (例えば、 df -h の出力が見やすい)
      • (重要度は落ちるが) fsck や dump の処理単位を分けることで効率が向上する
    • サーバ用途ではシステム領域の / と ログ出力などによって容量が溢れやすい /var でファイルシステムを分けることがあります
    • 同様の考え方で、PC用途では /home の容量溢れが懸念されるためファイルシステムを分けています

Fedora 32 Server インストール手順の詳細

ISO起動直後

  • Install Fedora 32 から先へ進みます

1

インストール中の言語設定

  • English (United States) を選択します
  • 後に Language Support という設定画面が出てきますが、ここで指定した言語がデフォルトとしてセットされて外せなくなる罠が潜んでいます
  • ここでの日本語選択はオススメしません...

2

メイン画面

こちらの画面から順不同で色々設定していきます。
順不同とは書いたものの、 キーボードレイアウトとネットワーク設定は先に対応することを推奨 します。

  • キーボードレイアウト:パスワード文字列で "@" を打ったつもりが、実は英字キー配列だったので別の文字列になっており、後からログインできないという悲劇が起こりうる
  • ネットワーク設定:NTPサーバなどネットワーク接続が関連する設定を後に行う場合、事前にネットワーク接続性があった方が都合が良い

以降の手順では各メニューに入った後の詳細な設定方法を紹介していきます。

3

キーボードレイアウト (Keyboard)

ここではコンソールログイン時のキーボードレイアウトを変更します。
英語キーボード (USキーボード) のままで良い方は、何も変更する必要はありません。

4

日本語キーボード (JISキーボード) に変更したい方は、以下のように操作してください。

  • English (US) を選択した状態で のアイコンを選択
  • Japanese を選択

最終的には下記画像のような状態になります。

5

ネットワーク設定 (Network & Hostname)

まずはホスト名を設定します。

  • 左下のホスト名を変更します
  • apply ボタンを選択して確定します。右下のホスト名が変わることを確認して下さい
  • 本来であればFQDNを記載するのでしょうが、家のパソコン用途では不要でしょうし、個人的には pcfedora-pc で良いと思っています
  • 後からでも hostnamectl set-hostname xxx コマンドで変更できます

次に各NIC (ネットワークインターフェース) を変更します。
ここでは有線の設定 (eno1など) を例にしています。
NUCユーザーの方は無線インターフェース (wlp0s20f3など) も出てくると思いますが、その場合は有線と無線でどちらかメインで使う方のみ以下のように設定してください。

  • 該当のインターフェース (Ethernet (eno1) など) を左上のメニューから選択し、右下の Configure ボタンを選択します

6

General タブは特に変更しません。

  • RHEL7系では Connect automatically with priority のチェックがデフォルトで外れていたのでチェックを入れていましたが、今回ははじめからチェックされていました
  • この項目はNetwork Manager の autoconnect に相当します
  • チェックが入っていると、Network Manager 起動時に自動的にNICを起動してくれます
  • チェックが外れていると、毎回手動でNICを起動する必要が出てきます (nmcli connection up <connection-name>|<connection-UUID>)

7

IPv4 Settings タブは、DHCP利用の方は特に変更不要です。
静的にIPを設定したい方は、以下のように変更します。

8

IPv6 Settings タブは、特別な要件がない限りは設定不要です。
私個人の趣味ですが、 Method: Ignore を設定してしばしばIPv6を無効化しています。

一通りの設定が完了したら、右下の Save から変更を反映します。

9

私は普段有線を使うので、eno0について上記設定を入れています。
一方で無線は使わないので、無線のインターフェース (wlp0s20f3など) については General タブから Connect automatically with priority をオフにしています。
これにより、OS起動時に有線のインターフェースのみUPし、無線のインターフェースはDOWNのままとなります。
そして、必要なときには手動でUP/DOWN を切り替えることで対応できます。

タイムゾーンと時刻の設定 (TIME & DATE)

ここではタイムゾーンとNTPサーバを設定します。 私の環境では、デフォルトの設定から特に変更していません。

画像の通り、以下の設定になっています。

  • タイムゾーンAsia/Tokyo です
  • 右上のNetwork Time のスイッチがONになっているので、NTPサービスが起動しています

10

上記画像の右上の歯車のアイコンから時刻参照先のNTPサーバを指定できます。
デフォルトのFedora用のNTPサーバプールを参照しています。

10_2

パーティションファイルシステムの設定 (INSTALLATION DESTINATION)

画面下部にある Storage ConfigurationCustom にします。
左上の Done を選択することで次の画面に進みます。

11

左のドロップダウンリストから LVM を選択します。
Click here to create them automatically. をクリックし、ある程度の設定を自動生成させます。

12

まずは、 /boot/efi パーティションから設定します。
こちらのパーティションは、マザーボードファームウェアとしてBIOSではなくUEFIを利用している方のみ 設定が必要です。
少なくとも NUC10はUEFIベースです
パーティション構成を自動生成した場合、UEFIを使っていれば /boot/efi も自動生成されるので、それが一つの目安になると思います。
こちらの設定は特にいじりません。以下の構成です。

  • 容量:600 MiB
    • RedHat社のマニュアルによると、200MiBから600MiBの間にあれば良いとのことです
    • Arch Wiki からリンクされているこちらのサイトによると、520MiB を下回るサイズにすると環境次第で不具合の原因となるようです。そこまで気にする必要はない気もしますが、念のため大きめのサイズにしておきました
  • ファイルシステムEFI System Partition

13

次に、 /boot を設定します。

14

次に swap を設定します。 ただし、swap ファイルを後から作成する方は、ここのパーティションを削除しても大丈夫です。
swapパーティションとswap ファイルでは特に性能の違いはないようです。
 ※情報ソースは各種掲示板やYouTube解説動画です

  • サイズ:2 GiB
    • swap領域はファイルシステムのキャッシュや、ディスク書き出しによるメモリ領域確保などに利用される
    • 安定性確保のため、最低限 2GiB ぐらいは割り当てる
    • LVMに含めてあるため、後々のサイズ変更は容易
  • ファイルシステムswap

15

次にLVMの設定を変更します。
上画像の右側にある Volume Group 配下の Modify を選択し、以下のように変更します。

  • Size Policy: As large as possible
    • この設定により、ディスクの容量のある限りLVMの Volume Group (VG) に割り当てる
    • デフォルトの automatic の場合、ディスクサイズに余裕を持たせて小さめのVGを作ろうとするが、Dual Boot など特殊な事情でもない限りは使い切って良い
    • 設定の詳細な意味は RedHat社 のマニュアルを参照

16

次に / の設定を変更します。

  • 容量:50 GiB
    • ArchWiki掲示板で議論されていたが、パッケージを大量にインストールしても 15 GiB 〜 25 GiB 程度で足りる
    • ファイルシステムの性能や安全性の観点で一定割合の空き容量を保つことも見込んで50 GiBとした
    • LVMとext4 を利用しているので、万が一容量が足りなくなった場合も低リスクで拡張できる (詳細は後述)
  • ファイルシステムext4

17

最後に /home を追加します。
画面左下の + ボタンを選択し、下記画像のように容量やファイルシステムを指定します。

  • 容量:空き容量全て。ただし小数点以下切り捨て
    • 筆者環境では1TB のSSDを利用しているが、 /home の容量は879 GiB になった
    • ここは意見が分かれそうだが、小数点以下の端数は切り捨てた値を指定した。ディスクのアラインメント関連のトラブルを踏みたくなかったため
  • ファイルシステムext4

18

作成後、ファイルシステムをデフォルトの XFS から ext4 に変更します。
すると、以下の画像のようになります。

左下の Available Size が少ない値になっていれば、LVMのVGによって物理ディスクの容量が予約された状態になっています。
もし左下の容量がギガバイト単位で余っている場合は、右側の Volume Group 配下の Modify から、 Sizing PolicyAs large as possible となっていることを確認してください。

また画面右側の Volume Group が画像では 424 MB free となっていますが、こちらもギガバイト単位で表示されている場合にはVGの容量が余っています。
/home に割り当てている容量を見直してみてください。

設定内容に問題ないことが確認できたら、左上の Done を選択して変更を確定してください。

19

Accept Changes を選択し、変更を確定します。

19_2

一般ユーザーの作成 (CREATE USER)

一般ユーザー作成の意義

特にPC用途の場合、普段はroot以外のユーザを使うことをお勧めします。

一般ユーザーをsudoer に加えておけばrootと同様の操作が可能なので、通常作業時は特に困りません (sudoを打つのは面倒ですが、すぐに慣れます)。
また、GUIで何気なく操作しているとき、権限の必要な操作 (つまりリスクのある操作) をするときはシステムがパスワードを求めてくれます。

セキュリティだけでなく事故防止の観点でも、一般ユーザーの利用は100%お勧めできます。

設定手順

まず、ユーザー名とパスワードを入力します。
参考ですが、Kaspersky社のPassword Checker でパスワード強度をチェックできます。

続いて、Make this user administrator にチェックを入れます。
これにより、作成したユーザーが wheel グループに登録され、sudo 権限を持ちます。

画面下部の Advanced を選択し、詳細なオプションを指定します。

20

こちらの画面での設定は必須ではありません。

私の場合は、ユーザーグループに wheel に加えて shared も追加しています。
後からでも sudo usermod -aG shared <username> で変更可能です。

shared は複数ユーザー間のファイル共有に利用する予定です (例えばisoファイルなど)。
Linuxインストール後、以下のように実装します。

  • 共有先のユーザーを shared グループに所属させる
    • sudo usermod -aG shared <username>
  • 共有ディレクトリを作成し、権限を設定する
    • sudo mkdir /home/shared/
    • sudo chown root:shared /home/shared/
    • sudo chmod 770 /home/shared/
  • 以降、他ユーザと共有したいファイルを /home/shared に保管する

21

root ユーザーの設定 (ROOT PASSWORD)

ここではroot ユーザーのパスワードを設定します。

「sudo できるならrootユーザは不要じゃないか」と思ってrootユーザーを無効化したこともあったのですが、
usermod コマンドを間違えて実行して管理者不在になったことがありまして...。
結局 Rescue Mode から復旧する ハメになりました。

こんなことがあったので、今のところはrootユーザーを有効化しています。
レスキューモードからの復旧は慣れていればすぐできますので、上記を踏まえてrootユーザーを無効化するのもアリだとは思います。

結局はPCに物理アクセスできた段階でrootログインは容易にできてしまうので、効果は限定的ですし、利便性を優先してrootを有効化しても良いと思いますが...。

22

インストール完了

以上で初期設定は完了です。

右下のBegin Installation から Fedora インストールを開始します。

23

しばらく待ったら再起動を促されるので、画面に従って再起動します。
電源が落ちたタイミングでLinuxインストール用USBをPC本体から抜いたほうが良いかもしれません。
次はUSBではなく、SSDから起動してほしいからです。

24

これでFedora のインストール作業は完了です。

(参考) LVMについて

LVMの利点

LVMは物理ディスクを仮想化することで様々な構成を可能としますが、パソコン用途での一番の利点は ファイルシステムの容量拡張が容易になること だと思います。

ディスクのパーティションは、ディスクの不連続なセクターにまたがって作成することはできません。
従って、 もしも/, /home の順にパーティションを連続するセクターに作ったとして、後から/を拡張したくなったら...とても大変なのです。

以下のスライドのように技術的には対応可能なのですが、結構複雑な手順です。
LVMを使って回避できるのであれば、絶対回避すべきです。

not_using_LVM

LVMを利用していれば、セクター位置を気にすることなく容量を拡張可能です。
/homeをアンマウントした後、lvreduce, lvextend コマンドをそれぞれ1回ずつ実行するだけで簡単に完了します (後日検証します)。

こういった柔軟さから、パソコン用途の場合はLVMを使うのが良いと考えています。

using_LVM

LVMは遅くない

LVMは物理ディスクとファイルシステムの間に抽象化レイヤーを増やす...ように想像できますが、実際はそうでもないようです。
Linux Kernelからデバイス (物理ディスク) のセクタ上にデータを送受信する際、元々デバイスドライバを介してデータを送受信しています。
以下の記事によると、LVMを介した場合も、LVMを介さない場合と同じぐらい直接的に物理ディスクにアクセスしているとの情報がありました。

Does LVM impact performance?

別の記事にも、LVMはただのDevice Mapperである。ある抽象化されたデバイスXへのアクセスを別のデバイスYに

非公式情報ではありますが、その他複数の情報ソースを当たってみても「LVMは遅くない」という主張が見られることから、恐らく事実なのだと思います。

もちろん、LVMを使っていることで性能劣化が起こるケースはいくつかあるようです。
以下にいくつかの例を挙げます。

  • 単一ディスクの複数パーティションに対してそれぞれPVを作成し、単一VGでまとめる構成
    • 上記構成は、多くの場合性能劣化に繋がるとの情報あり
    • 複数ディスクにPVを作成して単一VGでまとめる構成は、ディスク容量拡張やRAID0のような観点でのI/O性能向上を狙える一般的なアプローチ
  • LVMのスナップショット機能を使う
  • Linux Kernelの不具合によってLVM固有の問題に該当する
    • 2.6.20など古いバージョンのLinux Kernelを使用すると、LVM有効化時に性能が50%程度になるとの報告があった
    • 新しいバージョンのKernelを使うことを推奨する (最新版のFedoraなら気にする必要なし)
  • ディスクのアラインメントの構成を間違える

例えばパーティションとPhysical VolumeとVolume Groupが1:1:1になるように構成し、Volume GroupをLogical Volume で論理分割するような使い方をする分には、LVM起因で性能劣化をすることはほぼありえない想定です。

LVMの参考資料

LVMの概要を知りたい方は、下記リンクがオススメです。

(参考) ext4 ファイルシステムを選択した理由

デフォルトのXFSはファイルシステムの縮小に対応していないが、ext4ファイルシステムの縮小に対応しているからです。

今回の構成では基本的にはありえないことですが、「/ の容量が50GiBでは足りず拡張したい場合」や「急に気が変わって/varのパーティションを分けたくなった場合」なども LVM + ext4 の構成であれば柔軟に対応できます。

他にも以下の観点で調べましたが、PC用途としては全く問題なしでした。
産業用途の場合は、最大ボリュームサイズのみ要注意かもしれません。

(参考) Linuxインストール画面のスクリーンショットの撮り方

今回はKVM上に立てた仮想マシンのコンソール画面をスクリーンショットすることで記事用の画像を撮りました。
別の方法として、 (Linux インストーラである) Anacondaの機能でもスクリーンショットを撮れるようです。

まとめ

長文になってしまいましたが、Fedora のインストール手順を紹介しました。
Linux のインストールは考えることが地味に多く (特にパーティション周り)、時間を奪われる工程だと思っています。
そういった方の時間節約に少しでも貢献できていたら嬉しいです。

NUC10構築シリーズの記事としてはこちらで一旦区切らせていただきます。
次からはLinux PC構築をFedora + Cinnamon で取り組んでみます。
詳細は以下のリンク集からチェックお願いします!

Linux PC構築関連リンク集

endy-tech.hatenablog.jp

NUC10組立から起動までの手順|NUC10構築(2)

nuc_assembly_beginning

前の記事

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

endy-tech.hatenablog.jp

お伝えしたいこと

NUCを組み立て、BIOS (UEFI) を更新し、OSインストーラを起動するまでの手順をお伝えします。

組み立てについては説明書や解説ブログが多くあるため、概要のみとさせていただきます。

NUC組み立て

公式マニュアル

わかりやすいサイト

こちらのサイトが写真付きで大変わかりやすく、オススメです。
少なくともNUC第10世代については公式と同様の手順でした。

www.pizaman.com

簡単な説明

  • NUCの下面のネジを回して蓋を開ける
    • 内部の基盤と蓋の間でコードが繋がっているので、強く引っ張らないように注意
  • SSDとメモリスロットにそれぞれ挿す。順不同
    • 45度の角度で金色の端子がほぼ見えなくなるぐらいまで押し込む。多少強めに押し込む
    • シーソーみたいに指で押してSSD/メモリモジュールを水平にする
      • メモリは両脇の爪がしっかりハマるまで押し込んで水平にする。うまくいかなければ爪の部分を指で広げて元の45度に戻し、リトライする
      • SSDは水平状態を保ったままネジを締めて固定する

私は上述のUser Guideのみを頼りにやりましたが、なんとかなりました。
上述のわかりやすいサイト を見つつやれば、きっとうまくいくと思います。

BIOS更新

メモリとSSDの装着が完了し、キーボード、マウス、ディスプレイ、コンセントなどを繋いだら次の工程です。

前の記事で用意した「BIOSアップデート用USB」をNUCに挿しておいてください。

公式マニュアル

NUC10i7FN、NUC10i5FN、NUC10i3FN のGetting Started Guide

上記リンクからBios > ダウンロード BIOS アップデート > bios アップデート手順 と進んでください。
このページ自体は、先程紹介したUser Guideと同様の階層にあります。

手順

第10世代のNUCと第7世代以前のNUCは異なるBIOSを使っており、アップデート手順も異なります。
今後またBIOSアップデート手順が変わる可能性もあるので、こちらに記載した内容は「参考」ということでお願いします。

アップデートの手順は4種類あるようです。

  • Express BIOS Update (exeファイル利用)
    • Windows OS上でexeファイルを実行する方法
    • Linuxなどは対象外
  • F7 Update (capファイル利用)
    • NUC起動後、OS起動前の段階でF7ボタンを連打してBIOSアップデートのメニューに入る
    • OS非依存の手順
  • Power Button Menu Update (capファイル利用)
    • 電源長押しするところ以外は、F7 Update と基本同じ
    • 電源を3秒以上長押ししてNUCを起動する
    • メニューが出てくるので、F7 からBIOS アップデート用メニューを開いて作業を続行する
    • 赤外線キーボードの場合、メニューでキーが効かないことがあった。その場合、F7 Updateを試すこと
  • UEFI Shell Update (zipファイル利用)
    • 恐らくOS非依存
    • 手順が長かったので、理由がなければ使わなさそう

私は赤外線キーボードを使い、F7 Update で実施しました。
有線キーボードをお持ちならPower Button Menu Update が良いと思います。
連打しなくて良いですからね。

スクリーンショットなどは特にないのですが、F7メニューは「BIOSアップデート専用画面」ですので、特に操作に迷うことはないはずです。

アップデートは、少なくとも5分はかかりました。
BIOSアップデート中は電源オフ厳禁 ですので気をつけてください。

ここで注意なのですが、 F7などを押す際、キーボードは赤外線か有線を使ってください。
OS起動前はBluetoothのペアリングができず、使えないので注意してください。

OSインストーラ起動

公式マニュアル

手順

  • NUCの電源がオフの状態で、前回の記事で用意した「OSインストール用USB」をNUCに挿しておく
  • NUC電源を投入してF10を連打する (またはNUCの電源ボタンを3秒以上長押しして電源を投入し、メニューからF10を選択する)
  • ブートデバイスを聞かれるので、OSインストール用のUSBを指定する

後は画面の指示にしたがってOSをインストールします。
Fedoraのインストールについては、次の記事で手順を紹介予定です (RHELCentOSの方も参考になるかも)。

参考情報

(参考) Windowsの方は各種ドライバの導入も必要

こちらからダウンロードします。
Downloads for Intel® NUC Kits

左側のドロップダウンリストから製品を絞り込んでいくと、「ドライバーバンドルのダウンロード」というリンクが出現します。
こちらからまとめてダウンロードするのが楽そうです。

NUCi5FNHの場合、ドライバーバンドルダウンロード用のリンクはこちらにあります。
インテル® NUC 10 パフォーマンス・キット - NUC10i5FNH 用のダウンロード

やったことないので推測にはなるのですが、こちらの工程はWindowsインストール後の実施になると思います。

(参考) Linuxの方は、ドライバのダウンロードは基本不要

Linux の場合、ドライバーはデフォルトで付属していたり、Desktop Environment に付属していたりするので、少なくともIntel公式からダウンロードするものはありません。
基本Fedoraの話になってしまいますが、細かい調整は次回以降の記事で紹介します。

Linuxの場合ドライバーダウンロードは不要 なのは、以下のURLが根拠です。

インテル NUC に対応した Linux のサポート

通常、Linux ディストリビューションには、必要なドライバーがすべて含まれています。Linux ベンダーに問い合わせて、ドライバーのダウンロードおよびサポートには配布リソースを使用してください。

まとめ

NUCの組立、BIOSアップデート、起動デバイスを指定してOSインストーラを走らせるところまで紹介しました。
NUCの紹介としては一旦こちらで終わりになります。

次回からは、Fedora、Cinnamon Desktop Environment のセットアップに移ります。

Linux PC構築関連リンク集

endy-tech.hatenablog.jp

次の記事

NUCにFedora 32 Server をインストールしたときの手順と設計思想を紹介しています。
NUCやFedoraにかかわらず、CentOSRHEL にも同様に参考にできると思います。

endy-tech.hatenablog.jp