知識:antiXデスクトップの技術的構成

2025/10/29

GUIログインとCUIログイン

GUIは、windows.macに代表される Graphical User Interface、CUIは無骨な文字だけの、Charactor User Interfaceです。
linuxは、CUIが基本ですが、使いやすさを追求するため、最近は多くのディストリビューションがGUIをサポートしています。

そして、antiXの場合、下記のようにGUIとCUIの両方で同時にログインセッションが成り立ちます(他のディストリビューションは知りません)。

antiX_gui_login.jpg


我々はGUIにしろ、CUIにしろ、ログインマネージャー(slimski又はgetty)で認証してもらって初めて、カーネルの機能、その他のアプリ等の機能を使うことができるようになります。

antiXのデスクトップ構造

最近の潮流である GNOME、KDE、xfceなどの統合環境*1と異なり、antiXむしろ分散環境(分散処理)となっています。
ここがantiXの特徴です。分散によって処理を軽くしている反面、この構造を知らないと、設定を間違うリスクがあります。

antix_desktop_structure3.png

  • デスクトップ画面のタスクバーとアプリのウィンドウ、背景は、WM(Window Manager)が担当します。
  • 画面に配置しているアイコンの配置は、FM(File-Manager)が担当します。ファイルマネージャーは、WindowsのエクスプローラーやMacのFinderに相当します。
ようは、グラフィックな画面はWMが担当し、そこにFM(ファイルマネージャー)アプリが重なっているイメージです。
ファイルマネージャはPinboardというファイルの中に、アイコンの種類、位置などが書き込まれていて、これをもって制御します。
※アプリとしてのFMのウィンドウは、WMが担当します。

こうして担当を分散することで、CPUへの負荷を軽くして、非力なPCでもグラフィカルなGUIを提供しています。

しかし問題点もあって、タスクバー(WM)から起動する場合と、画面アイコンクリックで起動する場合(FM)とで、アプリに受け渡される環境変数が異なるので、どこから起動するかによってアプリの挙動が変化することがあります。antiXは、環境変数の受渡は古い方式(sysVinit)でやっているので、子プロセスが起動されるときに親プロセスからコピーされる方式です。最近の潮流のsystemdは、環境変数は別ファイルで設定、受け渡しされるので、明示的ですが、antiXは黙示的に渡されます。黙示的に渡された場合、子プロセスが、他の親プロセスに移動したときに、その子プロセスがどの親から環境変数を受け継いだかが特定しずらくなり、不具合の調査に時間がかかったりします。
一方で、この不具合を解消させる過程が、linuxの基本を学ぶことにもなるので、学習用としてはいいように思います。

もちろんこの欠点は、antiXも認識しているようで、リポジトリできちんと管理されているアプリについては、この分散による不具合がないように検証されているようです。
不具合がでがちなのは、レポジトリに入っていないアプリを直接導入したような時です。例えば、非オープンソースのChromeなどです。

また、GUI分散処理といっても、アイコンはWMが管理し、その置き場所はFMがpinbordという仕組みで管理するので、完全な分散でもありません(インストールする機種によっては、WMとFMの立ち上げ処理時に不具合がでることも報告されています)。

上図をみてご理解いただけるように、File-Managerがないと、デスクトップはただの飾りです。ROX、zzz はFile-Managerなので、ROXかzzzが頭についているエディションは、デスクトップにアイコンを置くことができます。
一方、minimalや無印は、デスクトップにアイコンが置けず、ただの背景のみの、中途半端なGUIとなります(minimalは別のソフトと組み合わせれば置くことが出来ます)。minimalや無印でもタスクバーからはGUIで起動はできます。
よほどのミニマリストでなければ、ROXかzzzを選択したほうがよいかと思います。

*1 : といっても詳しくはないのですが

概念図

structure.jpg

X11(X Window System)の役割

X11は実際の絵描きです。
アプリ(クライアント)は「描いて」と頼み、
Xサーバは「ディスプレイに描く」という仕事をします。

仕組み

Xorg が Xサーバの実体です。
アプリは /tmp/.X11-unix/X0 というUNIXソケットを通して通信します。
その通信経路を定義する環境変数が:
$ echo $DISPLAY
:0
 →意味:「ローカルのXサーバの0番ディスプレイに接続中」

プロセスの流れを観察してみる

antiX 環境(Rox-IceWM)では、
ログイン後のプロセス構成はおおよそ次のようになっています。

$ ps -e | grep -E 'X|icewm|rox'

想定出力:

835 ? 00:00:01 Xorg
980 ? 00:00:00 slim
1150 ? 00:00:00 icewm-session
1151 ? 00:00:00 icewm
1153 ? 00:00:00 rox

説明:
プロセス役割
Xorg画面描画サーバ(X11)
slimログインマネージャ
icewm-sessionIceWM本体+補助起動管理
icewmウィンドウ枠・パネル制御
roxデスクトップ描画(Pinboard)

ウィンドウマネージャ(WM)の役割

X11だけでは「枠線・タイトルバー・移動」などは一切できません。
それを実現するのが WM(Window Manager) です。

IceWM の例

アプリをウィンドウに包み、マウスで動かせるようにする。
タスクバー(パネル)やAlt+Tabの切替を提供。
テーマ、フォーカス動作、ショートカットを管理。

WMがやっていること

機能具体的な処理
ウィンドウ装飾枠・影・閉じるボタンを描く
配置新しいウィンドウの位置を決定
フォーカスどのウィンドウがアクティブかを管理
最小化・最大化状態変更をX11に伝える
Alt+Tab制御ウィンドウ一覧を追跡
パネル表示ウィンドウリスト・時計などを描画

設定ファイル WM関連(IceWM)

ユーザー単位設定はここにあります:

~/.icewm/
├── preferences ← ウィンドウ挙動・テーマ・パネル等
├── keys ← ショートカットキー設定
├── toolbar ← タスクバーのアイコン定義
├── menu ← メニュー構成
└── startup ← ログイン時に自動起動するコマンド


設定反映方法:

icewm --replace &


またはログアウト→再ログイン。

ファイルマネージャ(Rox-Filer)

~/.config/rox.sourceforge.net/
├── ROX-Filer/
│ ├── Options ← 設定
│ └── menus2.xml ← 右クリックメニュー
└── ROX-Filer/Pinboard/ ← デスクトップ配置情報


Roxがデスクトップを描画していることを確認:

$ ps -ef | grep rox
rox -p=antiX

まとめ:X11とWMの関係整理図

[アプリ] ─┐
↓(Xプロトコル)
[Xorg(X11)]

[ウィンドウマネージャ:IceWM]

[デスクトップ描画:Rox-Filer]


Xorg が描画面を提供

IceWM がウィンドウ操作を管理

Rox-Filer が壁紙・アイコンを描画
→ この三者が連携して「デスクトップ体験」を作っています。

antiX23をレッツノート&リモートデスクトップ

2025/10/28

antiX 23 を使って、Let’s Note LX5をリモートデスクトップ端末にした記録

概要

Windows 11 非対応となった Let’s Note LX5 に、軽量 Linux「antiX 23」を導入し、日本語化・RDP クライアント設定・VPN接続までを基本とし、そこから順次、いろんな環境を整えています。自分の覚書だったのですが、せっかくなので公開することとしました。

Windows10のアップデートが終了したのですが、自宅・事務所にはそれなりスペックのノートパソコンが多数あります。
このまま捨てるのは惜しいのと、技術的関心があったので、いろいろやってみました。

事務所ではwindowsをメインに使い、外出的からリモートで繋ぐので、シンクライアント(リモート専用端末)でもいいのですが、インターネット環境がない場合や、WEB会議などでローカルでファイル共有しないといけないときなどのために、実務に耐えるだけの、一通りの構築はしたいと思っています。

これまでのところ、日本語入力が一番の鬼門でした。しかし、それの解決の目処がたったので、公開に踏み切ります。

本件で大事なことは、まず、メインPC(Windows)へ安全に接続できる環境を作ること。これで日本語環境構築に失敗しても、RDPでwindowsに繋げれば、構築中のトラブルはなんとかなるからです。
RDPには、remminaというRDPクライアント。VPNはhamachi(有料版)を使っています。→無料のWireGuardに乗り換えました。使えるVPN-WireGuard

インストール前に知っておくこと

aintiX23は、2種類のアーキテクチャと12種類のデスクトップがありまる。
デスクトップの種類はあとから簡単に変更できますが、アーキテクチャ(sysVint 、runit)は、インストールファイルも異なりますので、まず決めておく必要があります。
詳細はこちら
antiX-デスクトップのオススメと設定留意点

1. 準備(runit)

以下 runit 前提です。

ISOイメージ

公式サイト:https://antixlinux.com/download/
取得ファイル例:antiX-23.2-runit_x64-full.iso
今回は、runit versions を利用

USB作成

Windows上で Rufus を使用。
設定:
  • パーティション構成:GPT
  • ターゲットシステム:UEFI(非CSM)
  • ファイルシステム:FAT32

BIOS設定(LX5)

  • Secure Boot → Disabled
  • USB Boot → Enabled
  • Boot Mode → UEFI
  • F9キーでUSBから起動

2. antiX インストール

Live起動

USBを挿入し、「antiX......... UEFI Boot」を選択。

以下を設定
  • 言語:English(後で日本語化)
  • キーボード:Japanese
  • 時刻:tokyo
一番上のantiX-23.2-runit......を選択すると、USBからantiXが立ち上がり、デスクトップ画面がでてきます。

インストール手順

まだUSBから立ち上がっただけなので、内蔵ハードディスクにインストールする必要があります。
※wifi設定が立ち上がるかもですが、設定してもよいし、後からの設定もできます。インストールだけなら、インターネット接続は必要ありません。

ここから先は、windowsを完全消去しますので、そのおつもりで。

デスクトップの「Installer」をクリック(ワンクリック)して実行。
  • パーティション:Regular install using the entire disk を選択。システム用(root用)として60GB程度を確保(スライダーにて)。
  • Hostname:antix-lx5(コンピュータ名なのでなんでもよいし、後から変更もできる)
  • Domain:example.dom(デフォルトのままで可。独立運用であればこのパラメータが使われることはあまりない。メール系を設定するときには自分のドメインを設定しましょう。)

パーティション構成(256GB SSD例)

マウントサイズ備考
/60GBOS本体
/home残り約180GBユーザーデータ
swap2〜4GB仮想メモリ
/boot/efi512MBEFI領域
※ locale は この時点ではUSのまま(timezoneは東京でOK)

インストールの途中で、ユーザーログイン情報(ID,pass)の入力画面がありますので入力。
rootも設定してもいいですが、どのみちrootログインは許さない運用となると思いますので、任意です。

インストールが完了したら、リブートします。

最初のID,パスワード入力画面で、Window Manager(デスクトップ)を選択しておきましょう(F1キー)。後から簡単に変更もできますが、ここで変更できることを知っておきましょう。
ここでは、rox-icewm を選択します。

ログインできたら、USBをはずしておきましょう(panasonicの表示がでたところで外してもOK)。

wifi設定

wifi設定画面が開きますで、を設定しておきましょう。
有線LANの方は設定不要。

3. 日本語化

日本語化については、①インストール時に指定、②インストール後、設定パネルから設定、③ターミナルのコマンドラインから設定があります。
①については、推奨しない(あとで不具合?)という報告もあったので、③の方式としますが、今では改善されているかもしれません。

再起動後、端末を開いて次を実行。
sudo apt update -y
このあと、さまざま設定していくのですが、RDPを先に設定したほうが楽かもしれません(いろんな設定をコピペできるから)。
sudo apt install -y locales task-japanese ibus-mozc fonts-noto-cjk
sudo sed -i 's/^# *ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
sudo locale-gen
sudo update-locale LANG=ja_JP.UTF-8
sudo fc-cache -fv
sudo reboot
再起動後、日本語表示となります。(ここでの設定は、表示のみ。日本語入力はこちら

4. ブラウザとRDPクライアント

Firefox ESR

firefoxはプレインストール済なので省略可
sudo apt install -y firefox-esr

Remmina(RDP用)

Remminaはwindowsでの「リモートデスクトップ接続」クライアントと同じものです。
sudo apt install -y remmina remmina-plugin-rdp freerdp2-x11
起動後、「+」ボタンでプロファイル作成。
  • プロトコル:RDP
  • サーバー:事務所PCのIP(例:192.168.1.100)
  • ユーザー名:Windowsログインユーザー
  • パスワード:同上
  • ドメイン:空欄または「.」
  • 解像度:1920×1080
  • 色深度:16bit
保存後、ダブルクリックで接続。

5. VPN(Hamachi)導入

現在、hamachiは解約して、WireGuardに乗り換えました。WireGuardのほうがお勧めです。使えるVPN-WireGuard

ダウンロードとインストール

cd ~/Downloads
wget https://vpn.net/installers/logmein-hamachi_2.1.0.203-1_amd64.deb
sudo apt install ./logmein-hamachi_2.1.0.203-1_amd64.deb -y

自動起動設定(sysvinit版 antiX)

runit の場合はこの設定は必要ありません!!これまでの設定で再起動時も自動で立ち上がります。
sudo update-rc.d logmein-hamachi defaults

インストール後、rebootします。

sudo reboot

初期設定

sudo hamachi login
sudo hamachi attach <LogMeInアカウントメール>
sudo hamachi set-nick antix-lx5
sudo hamachi join <ネットワークID> <パスワード>
logmein(hamachiネットワーク)の端末確認画面で、antix-lx5がメンバーになっていればOK
承認が必要なモードになっているのであれば、承認してあげましょう。

動作確認

念の為、再起動後、次の確認。
※繋がれるほうのパソコンとは異なるネットワーク(スマホテザリング等)からテストしないと、hamachi経由テストとならないので、注意してください。
sudo hamachi list
自端末が 25.x.x.x で表示され、サーバー側(繋がれるほう)のPCのhamachiアドレスが見えれば成功。

7. remmina(RDPクライアント)の設定

remminaを立ち上げて、左上の + マークをクリックしたら、接続プロファイル設定画面となります。
ここで、繋げられる側のhamachiでのIPアドレスなどをセットしましょう。

名前で接続する

IPアドレスで接続せず、コンピュータ名などで接続したい場合にはhostsファイルに登録します。
sudo nano /etc/hosts
以下を加える
25.X.X.X   <office-pcの名前>

まとめ

これで、Let’s Note LX5(antiX 23)が軽量VPNクライアント兼リモートデスクトップ端末として完成。
出張先・自宅・テザリング環境からでも、VPN経由で事務所PCに安全に接続できる。

補足2

*zzz-IceWMでショートカットを簡単に置く3つの方法

方法①:zzz-Filerでドラッグ&ドロップ

これは最も自然で失敗が少ない手段です。

File-Manager で以下のディレクトリを開きます。

/usr/share/applications


アプリ一覧が .desktop 形式でずらっと出ます。
(org.remmina.Remmina.desktop, firefox-esr.desktop など)

そのアイコンをドラッグしてデスクトップ上にドロップ。

 → File-Manager が自動的に .desktop をコピーしてくれます。
 → 権限や実行属性も自動付与。

8. firewalld 設定

2025/10/27
元記事-Almalinux再構築手順

firewalld 設定の解説

メールサーバー構築の前準備として、最小限のファイアウォール設定を行います。
sudo systemctl enable --now firewalld
firewalldサービスを有効化かつ即座に起動
enable: システム起動時の自動起動を有効化
    • now: enableと同時にstartも実行(2つのコマンドを1つに)
詳細な動作:
# このコマンドは以下の2つと同等
sudo systemctl enable firewalld   # 自動起動を有効化
sudo systemctl start firewalld    # サービスを起動
# 状態確認
sudo systemctl status firewalld
#  firewalld.service - firewalld - dynamic firewall daemon
#  Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
#  Active: active (running) since ...

# 他の確認方法
sudo firewall-cmd --state         # running と表示
sudo firewall-cmd --permanent --add-service=ssh
SSH接続(22番ポート)を恒久的に許可
--permanent: 設定を永続化(再起動後も有効)
--add-service=ssh: SSHサービスの通信を許可
重要な概念:
# firewalldの2つの設定
1. Runtime(実行時): 現在動作中の設定
2. Permanent(永続): 保存された設定(再起動後に適用)

# --permanentなしの場合
sudo firewall-cmd --add-service=ssh # 即座に反映、再起動で消える

# --permanentありの場合
sudo firewall-cmd --permanent --add-service=ssh # 保存のみ、即座には反映されない
sudo firewall-cmd --reload # reloadで反映

# サービス定義の確認
sudo firewall-cmd --info-service=ssh
# ssh
# ports: 22/tcp
# protocols:
# source-ports:
# modules:
# destination:
sudo firewall-cmd --reload
永続設定を実行時設定に反映
既存の接続は維持される(安全なリロード)
permanent設定をruntime設定にコピー
reloadとrestartの違い:
# reload(推奨)
sudo firewall-cmd --reload
# - 既存接続を維持
# - 設定の再読み込みのみ
# - ダウンタイムなし

# restart(非推奨)
sudo systemctl restart firewalld
# - 全接続が一時切断
# - サービス全体を再起動
# - 瞬断が発生
# 設定の同期確認
sudo firewall-cmd --list-all                    # runtime設定
sudo firewall-cmd --permanent --list-all        # permanent設定
sudo firewall-cmd --list-all
現在の全ファイアウォール設定を表示
ゾーン、サービス、ポート、ルールなどを確認

出力例と解説:
public (active) # ゾーン名(デフォルト: public)
target: default # デフォルトアクション
icmp-block-inversion: no # ICMP反転ブロック
interfaces: eth0 # 適用インターフェース
sources: # ソースIP/ネットワーク
services: ssh # 許可サービス ← 重要
ports: # 許可ポート番号
protocols: # 許可プロトコル
forward: yes # 転送設定
masquerade: no # マスカレード(NAT)
forward-ports: # ポート転送
source-ports: # ソースポート
icmp-blocks: # ブロックするICMPタイプ
rich rules: # 詳細ルール

firewalldの基本概念

ゾーン(Zone)の理解
# 利用可能なゾーン一覧
sudo firewall-cmd --get-zones
# block dmz drop external home internal public trusted work

# 各ゾーンの特徴
drop      # 全て拒否(返答なし)
block     # 全て拒否(拒否通知あり)
public    # デフォルト、最小限許可 ← 現在使用中
external  # NAT用
dmz       # DMZ用
work      # 職場用(より多くを信頼)
home      # 自宅用(より多くを信頼)
internal  # 内部ネットワーク
trusted   # 全て許可
# アクティブゾーンの確認
sudo firewall-cmd --get-active-zones
サービスとポートの管理
# 利用可能なサービス一覧
sudo firewall-cmd --get-services | tr ' ' '\n' | grep -E 'mail|smtp|pop|imap'
# smtp
# smtps
# smtp-submission  # 587番ポート
# pop3
# pop3s
# imap
# imaps

# サービス定義ファイルの場所
ls /usr/lib/firewalld/services/
cat /usr/lib/firewalld/services/smtp.xml

# ポート番号で直接指定する方法
sudo firewall-cmd --permanent --add-port=25/tcp
sudo firewall-cmd --permanent --add-port=587/tcp

7.エディタ導入

2025/10/27
元記事-Almalinux再構築手順

エディタ導入の解説

エディタ選びは作業効率に直結する重要な選択ですが、最初はどれを使えばいいかわからないと思います。
3種類のエディタとその設定について解説します。

エディタの特徴比較
エディタ学習曲線操作性機能性適した用途
nano緩やか(初心者向け)Unix標準(Ctrl+X等)シンプル設定ファイル簡易編集
micro緩やか(初心者向け)Windows風(Ctrl+S等)中程度日常的な編集作業
vim急勾配(要習熟)独特(モード型)高機能大規模編集、プログラミング

nano と vim-enhanced の導入

sudo dnf install -y nano vim-enhanced
  • nanoの特徴:
    # 基本操作(画面下部に常時表示)
    nano /etc/hosts
    # Ctrl+X: 終了
    # Ctrl+O: 保存
    # Ctrl+W: 検索
    # Ctrl+K: 行カット
    # Ctrl+U: ペースト
    
    # 便利な起動オプション
    nano -l file.txt    # 行番号表示
    nano -B file.txt    # バックアップ作成
    nano -c file.txt    # カーソル位置表示
    
    # 設定ファイル
    ~/.nanorc           # ユーザー設定
    /etc/nanorc         # システム設定
    
  • vim-enhancedの特徴:
    # vimは3つのモードが基本
    # ノーマルモード(起動時): コマンド実行
    # 挿入モード(i,a,o等): テキスト入力
    # ビジュアルモード(v,V): 選択
    
    # 最小限の操作
    vim file.txt
    i                   # 挿入モード
    Esc                 # ノーマルモードへ
    :wq                 # 保存して終了
    :q!                 # 保存せず終了
    
    # vim-enhancedで追加される機能
    - シンタックスハイライト
    - 複数ファイル編集
    - プラグイン対応
    - マクロ記録
    

microエディタの導入

インストールスクリプトの解説
cd ~
curl https://getmic.ro | bash

# getmic.roスクリプトの動作
# 1. OSとアーキテクチャを自動判定
# 2. 最新版バイナリをダウンロード
# 3. 実行権限を付与
# 4. ~/micro として保存

# 手動でダウンロードする場合

VERSION=$(curl -s https://api.github.com/repos/zyedidia/micro/releases/latest | grep tag_name | cut -d'"' -f4)
curl -L "https://github.com/zyedidia/micro/releases/download/${VERSION}/micro-${VERSION}-linux64.tar.gz" | tar xz
sudo mv ~/micro /usr/local/bin/micro

# /usr/local/bin を選ぶ理由
/usr/bin/        # ディストリビューション管理(dnf/yum)
/usr/local/bin/  # ローカル管理(手動インストール)
~/bin/           # 個人用(他ユーザーは使えない)
# 確認

which micro
ls -l /usr/local/bin/micro
micro --version
sudo secure_path設定の詳細解説
問題の背景

# sudoはセキュリティのため、通常ユーザーよりも、PATHを制限しています。

通常ユーザーとして確保されているPATH
$ echo $PATH
/usr/local/bin:/usr/bin:/bin # 通常ユーザー

SUDOとしての確保されるPATH
$ sudo echo $PATH
/usr/bin:/bin # sudoではlocal/binが消える!

その結果、ユーザーとしては使えても、SUDOでエラーが出てしまう。
$ micro file.txt # OK
$ sudo micro /etc/hosts # command not found

解決策のコード解説
# grep -Rq "/usr/local/bin" /etc/sudoers /etc/sudoers.d 2>/dev/null

# -R: 再帰的検索
# -q: 静かなモード(出力なし)
# 2>/dev/null: エラー出力を破棄

# || { ... }
# 前のコマンドが失敗(見つからない)場合のみ実行

# secure_path設定の作成
echo 'Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin' | \
    sudo tee /etc/sudoers.d/10-secure-path >/dev/null

# ファイル名の意味
# 10-: 読み込み順序(数字が小さいほど先)
# secure-path: 設定内容を示す名前

# chmod 440: r--r----- (rootとwheelグループのみ読み取り可)
# visudo -cf: 構文チェック(-c:check, -f:file)

デフォルトエディタ設定の詳細

環境変数の設定
# EDITORとVISUALの違い
EDITOR # 行エディタ(歴史的、基本)
VISUAL # 画面エディタ(フルスクリーン)

# 多くのプログラムは VISUAL → EDITOR の順で参照
# 例:
crontab -e # $VISUAL or $EDITOR を使用
git commit # $EDITOR を使用
visudo # $VISUAL or $EDITOR を使用

# 冪等性を保つ書き方の解説
grep -q "EDITOR=micro" ~/.bashrc || echo 'export EDITOR=micro' >> ~/.bashrc

# grep -q: 見つかれば0、見つからなければ1を返す
# ||: 見つからない場合のみ追加(重複防止)
より高度な設定例
microの設定ファイル

~/.config/micro/settings.json
mkdir -p ~/.config/micro
cat > ~/.config/micro/settings.json << 'EOF'
{
    "autosu": true,
    "colorscheme": "monokai",
    "cursorline": true,
    "eofnewline": true,
    "keepautoindent": true,
    "mouse": true,
    "ruler": true,
    "savecursor": true,
    "saveundo": true,
    "scrollbar": true,
    "statusline": true,
    "syntax": true,
    "tabsize": 4,
    "tabstospaces": true
}
EOF

nanoの設定強化

~/.nanorc
cat > ~/.nanorc << 'EOF'
# 行番号を常に表示
set linenumbers

# 自動インデント
set autoindent

# タブをスペースに変換
set tabstospaces
set tabsize 4

# バックアップ作成
set backup
set backupdir "~/.nano-backups"

# マウス対応
set mouse

# シンタックスハイライト
include "/usr/share/nano/*.nanorc"
EOF

mkdir -p ~/.nano-backups

vimの基本設定


# ~/.vimrc
cat > ~/.vimrc << 'EOF'
" 基本設定
set number              " 行番号表示
set ruler               " カーソル位置表示
set showmatch          " 対応括弧ハイライト
set hlsearch           " 検索結果ハイライト
set ignorecase         " 検索で大文字小文字無視
set smartcase          " 大文字含む場合は区別
set expandtab          " タブをスペースに
set tabstop=4          " タブ幅
set shiftwidth=4       " インデント幅
set autoindent         " 自動インデント

" シンタックスハイライト
syntax on

" 文字コード
set encoding=utf-8
set fileencodings=utf-8,sjis,euc-jp

" バックアップ
set backup
set backupdir=~/.vim/backup
set directory=~/.vim/swap

" マウス有効化
set mouse=a
EOF

mkdir -p ~/.vim/{backup,swap}

トラブルシューティング

# 問題: microがsudoで使えない
# 確認
sudo which micro
# 解決
sudo visudo -f /etc/sudoers.d/10-secure-path

# 問題: デフォルトエディタが反映されない
# 確認
echo $EDITOR
echo $VISUAL
# 解決
source ~/.bashrc
# または新しいセッション開始

# 問題: microのダウンロードが失敗
# 手動インストール
wget https://github.com/zyedidia/micro/releases/latest/download/micro-linux64.tar.gz
tar xzf micro-linux64.tar.gz
sudo mv micro-*/micro /usr/local/bin/

# 動作確認スクリプト
for editor in nano micro vim; do
    if command -v $editor &>/dev/null; then
        echo "✓ $editor: $(command -v $editor)"
    else
        echo "✗ $editor: not found"
    fi
done

エディタ使い分けの実例

# 簡単な設定変更 → nano/micro
sudo nano /etc/hosts
sudo micro /etc/hosts

# プログラミング → vim
vim script.sh

# 大量の置換作業 → vim
vim file.txt
%s/old/new/g # 全置換
# 緊急時(vimが苦手でも) → nano
sudo nano /etc/fstab
段階的学習のすすめです。

最初: nano か micro でLinuxに慣れる
慣れたら: vim の基本操作を少しずつ学ぶ
最終的に: 用途によって使い分ける

エディタは道具です。「使いやすいものを使う」ということでいいと思います。

6. 基本パッケージ導入

2025/10/26

元記事

1. 基本パッケージ導入の解説

sudo dnf install -y epel-release

EPEL(Extra Packages for Enterprise Linux)リポジトリを有効化する
 Red Hat系の公式リポジトリにない追加パッケージが利用可能になる
 約3000以上の追加パッケージにアクセス可能

EPELの重要性: EPELなしでは入手できない主要パッケージ例

  • htop(高機能プロセスモニター)
  • jq(JSONパーサー)
  • certbot(Let's Encrypt)
  • fail2ban(セキュリティツール)
  • redis, memcached
  • nginx mainline版

確認方法

dnf repolist | grep epel dnf list available --disablerepo="*" --enablerepo="epel" | wc -l

2. 基本パッケージの一括インストール

sudo dnf install -y bash-completion curl wget git tar zip unzip bind-utils firewalld glibc-langpack-ja telnet nc rsync screen htop tree jq

🔧 システム補助ツール

bash-completion
  • 機能: Bashシェルのタブ補完機能を拡張
  • 用途:
    • コマンドやオプション、ファイル名を途中まで入力してTabキーで補完
    • サブコマンドやオプションの補完にも対応
  • メリット: 作業効率が大幅に向上、タイプミスも減少
  • 使用例: systemctl sta[Tab]systemctl status
glibc-langpack-ja
  • 機能: 日本語ロケールのサポートパッケージ
  • 用途:
    • システムメッセージや日付表示を日本語化
    • 文字エンコーディングの適切な処理
  • メリット: 日本語環境での運用に必須
  • 設定: localectl set-locale LANG=ja_JP.UTF-8

🌐 ネットワーク関連ツール

curl
  • 機能: コマンドラインからHTTP/HTTPS/FTPなどのプロトコルでデータ転送
  • 用途:
    • APIのテスト、ファイルダウンロード
    • Webサービスとの通信
    • メールサーバーの動作確認(Web管理画面へのアクセステスト)
  • 使用例:
    curl -I https://example.com  # HTTPヘッダーの確認
    curl -X POST -d "data" https://api.example.com  # POSTリクエスト
    
wget
  • 機能: ファイルのダウンロード専用ツール
  • 用途:
    • ソフトウェアやアーカイブの取得
    • 再帰的ダウンロード、断続ダウンロードのサポート
  • メリット: バックグラウンドダウンロード、リトライ機能
  • 使用例:
    wget -c https://example.com/large-file.tar.gz  # 断続ダウンロード
    
bind-utils
  • 機能: DNS関連のユーティリティ群(dig, nslookup, host等)
  • 用途:
    • メールサーバー設定時のDNSレコード確認に必須
    • MX、SPF、DKIM、DMARCレコードの検証
  • 含まれるツール:
    • dig: 詳細なDNS情報取得
    • nslookup: 簡易DNS問い合わせ
    • host: DNSルックアップ
  • 使用例:
    dig MX example.com  # MXレコード確認
    dig TXT example.com  # SPF/DKIM/DMARCレコード確認
    
telnet
  • 機能: TCP接続テストツール
  • 用途:
    • メールサーバーのポート疎通確認
    • SMTP(25)、POP3(110)、IMAP(143)等のテスト
    • プロトコルレベルでのSMTP通信テスト
  • 使用例:
    telnet mail.example.com 25  # SMTPポート接続テスト
    
nc (netcat)
  • 機能: 汎用的なネットワーク通信ツール
  • 別名: 「ネットワークのスイスアーミーナイフ」
  • 用途:
    • ポートスキャン、ポート開放確認
    • 簡易的なデータ転送
    • メールサーバーのポート監視やデバッグ
  • 使用例:
    nc -zv mail.example.com 25  # ポート疎通確認
    nc -l 8080  # ポート8080でリッスン
    

📁 ファイル管理・開発ツール

git
  • 機能: 分散型バージョン管理システム
  • 用途:
    • 設定ファイルのバージョン管理
    • スクリプトやカスタムツールの管理
    • 変更履歴の追跡
  • メリット: 設定変更の履歴管理、ロールバック可能
  • 使用例:
    git init /etc/postfix-backup  # 設定ファイルのバージョン管理開始
    
tar
  • 機能: アーカイブファイルの作成・展開
  • 対応形式: .tar, .tar.gz, .tar.bz2等
  • 用途:
    • バックアップの作成
    • ソフトウェアの展開
    • メールデータのアーカイブ
  • 使用例:
    tar -czf backup.tar.gz /var/mail  # 圧縮アーカイブ作成
    tar -xzf archive.tar.gz  # アーカイブ展開
    
zip/unzip
  • 機能: ZIP形式の圧縮・展開
  • 用途:
    • Windows環境との互換性確保
    • 添付ファイルの処理
    • ログファイルの圧縮
  • メリット: クロスプラットフォーム対応
  • 使用例:
    zip -r logs.zip /var/log/mail  # ディレクトリを圧縮
    unzip archive.zip  # ZIP展開
    

🛡️ システム管理ツール

firewalld
  • 機能: 動的ファイアウォール管理デーモン
  • 特徴:
    • ゾーンベースのファイアウォール設定
    • 動的なルール変更(再起動不要)
  • 用途: メールサーバーのポート開放管理に必須
  • 使用例:
    firewall-cmd --add-service=smtp --permanent  # SMTP許可
    firewall-cmd --add-port=587/tcp --permanent  # Submission port開放
    firewall-cmd --reload  # 設定反映
    
rsync
  • 機能: 高効率なファイル同期・転送ツール
  • 特徴:
    • 差分転送により帯域を節約
    • 圧縮転送対応
  • 用途:
    • メールデータのバックアップ
    • サーバー間のレプリケーション
  • 使用例:
    rsync -avz /var/mail/ backup-server:/backup/mail/  # リモートバックアップ
    
screen
  • 機能: 端末マルチプレクサ(仮想端末管理)
  • 特徴:
    • SSH切断後もプロセスを継続実行
    • 複数の仮想端末を管理
  • 用途: 長時間実行するメンテナンス作業に必須
  • 使用例:
    screen -S mailserver-setup  # セッション作成
    # Ctrl+A, D でデタッチ
    screen -r mailserver-setup  # セッション再接続
    

📊 監視・分析ツール

htop
  • 機能: 対話的プロセスビューア(topの高機能版)
  • 特徴:
    • カラー表示で視認性が高い
    • マウス操作対応
    • プロセスツリー表示
  • 用途:
    • CPU、メモリ、プロセスのリアルタイム監視
    • メールサーバーのリソース使用状況確認
  • 操作: F1:ヘルプ、F2:設定、F3:検索、F9:kill
tree
  • 機能: ディレクトリ構造をツリー形式で表示
  • 用途:
    • メールディレクトリ構造の確認
    • ドキュメント作成時の構造把握
  • 使用例:
    tree -L 2 /var/mail  # 2階層までのディレクトリ構造表示
    tree -h  # ファイルサイズ付きで表示
    
jq
  • 機能: JSONデータの処理・解析ツール
  • 用途:
    • APIレスポンスの解析
    • ログ分析(JSON形式)
    • Webメール管理インターフェースとの連携
  • 使用例:
    curl -s https://api.example.com/stats | jq '.users[]'  # JSON解析
    

📌 メールサーバー構築における重要度ランキング

🥇 必須パッケージ(最重要)
  1. bind-utils - DNS設定の確認必須
  2. firewalld - セキュリティ設定の要
  3. telnet/nc - サービス動作確認の基本ツール
🥈 重要パッケージ
  1. rsync - バックアップ戦略の中核
  2. screen - 長時間作業の安定実行
  3. curl/wget - ソフトウェア取得、API連携
🥉 便利パッケージ
  1. htop - リソース監視
  2. git - 設定管理
  3. jq - ログ解析
  4. tree - 構造確認

インストール後の確認

パッケージのインストール確認
# インストール済みパッケージの確認
dnf list installed | grep -E "epel-release|bash-completion|curl|wget|git"

# 各ツールのバージョン確認
curl --version
git --version
rsync --version

# EPELリポジトリの有効化確認
dnf repolist | grep epel
基本動作テスト
# DNS動作確認
dig google.com

# ファイアウォール状態確認
systemctl status firewalld
firewall-cmd --list-all

# 日本語ロケール確認
locale | grep LANG

まとめ

これらの基本パッケージは、メールサーバーの:

  • 構築フェーズ: 設定、テスト、デバッグ
  • 運用フェーズ: 監視、バックアップ、メンテナンス
  • トラブルシューティング: 問題調査、ログ解析

全ての段階で活用することになる重要なツール群です。
特にメールサーバー特有のDNS設定確認(bind-utils)、ポート管理(firewalld)、接続テスト(telnet/nc)は日常的に使用することになります。