業務用エアコン関連の技術情報、エラーコード、環境問題対策に関する別サイト「エアコンの安全な修理・適切なフロン回収」

Debian12.14 : OSインストールと初期設定

1.Debian12

今回はユーザーフレンドリーなLinuxディストリビューションのUBUNTUの基になっているDebianでサーバー構築する方法を説明します。最新はDebian 12(コードネーム「bookworm」) (2023年 6 月 10 日 にリリース)のバグ修正とセキュリティーアップデートされたポイントリリース版 Debian12.14(2026年 5月 16 日 にリリース)です。
Miscellaneous BugfixesおよびSecurity Updatesについては下記を参照してください。
https://www.debian.org/News/2026/2026051602

1.1 Debian12.14 インストールイメージのダウンロード

Debianのarchiveサイトにアクセスし、"debian-12.14.0-amd64-DVD-1.iso"ファイルをダウンロードする

上記で保存したisoイメージをお好きなライティングソフトでCD、USBに起動ディスクとして書き込む。

1.2 Debian12.14 インストー

以降のインストール方法についてはDebian12.1と同様ですので割愛します。下記ページを参照してください。

2. 初期設定

2.1 vimエディターのインストールと設定

Debianではデフォルトのエディターとして「nano」が設定されています。nanoはやや使いにくいことや、利用されている環境が少ないためエディタを「vim」に変更する手順を紹介します。

vimパッケージの確認
Debian にはデフォルトでvimがインストールされていますが「vim-tiny」というパッケージになり、機能が少ないバージョンになります。インストールされ ているvimパッケージを確認してみます。Debianではパッケージの確認に"dpkg"コマンドを利用します。"-l"オプションを付けるとパッケー ジリストが表示されます。

"dpkg"コマンドをそのまま実行するとシステムにインストールされている全てのパッケージが表示されるため、文字列「vim」を含むパッケージのみを"grep"コマンドで抽出します。以下のように実行します。

# dpkg -l | grep vim

ii  vim-common                   2:9.0.1378-2+deb12u2           all          Vi IMproved - Common files
ii  vim-tiny                     2:9.0.1378-2+deb12u2           amd64        Vi IMproved - enhanced vi editor - compact version

上記のように「vim-tiny」パッケージのみがインストールされていることが確認できます。

①vimパッケージのインストール
ルートユーザーで作業する

# apt -y install vim

インストール後に再度、dpkgコマンドでvimパッケージを確認してみます
# dpkg -l | grep vim
ii  vim                          2:9.0.1378-2+deb12u2           amd64        Vi IMproved - enhanced vi editor
ii  vim-common                   2:9.0.1378-2+deb12u2           all          Vi IMproved - Common files
ii  vim-runtime                  2:9.0.1378-2+deb12u2           all          Vi IMproved - Runtime files     
ii  vim-tiny                     2:9.0.1378-2+deb12u2           amd64        Vi IMproved - enhanced vi editor - compact version

上記のようにVimがインストールされています。

➁デフォルトで利用されるエディタの変更
デフォルトのエディタをnanoからインストールした「vim」に変更します。デフォルトエディタの変更には"update-alternatives --set editor"コマンドを実行します。vimに変更する場合には以下のように実行します。

# update-alternatives --set editor /usr/bin/vim.basic
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in manual mode

上記のように出力されれば、エディタは変更されています。

➂vimの設定変更
全てのユーザーに許可する場合は"/root/"に「.vimrc」ファイルを作成
各ユーザーごとにvimの環境を作る場合は「.vimrc」ファイルをユーザーのホームディレクトリに作成することでvimの環境を設定できます。
今回はrootユーザーのホームディレクトリ"/root/"に「.vimrc」ファイルを作成します。

# vi ~/.vimrc
[.vimrc]の内容

"テキストの貼り付けやコピーを有効
set clipboard+=autoselect
" vim の独自拡張機能を使う(viとの互換性無し)
set nocompatible
" 文字コードを指定する
set encoding=utf-8
" ファイルエンコードを指定する
set fileencodings=utf-8,iso-2022-jp,sjis,euc-jp
" 自動認識させる改行コードを指定する
set fileformats=unix,dos
" バックアップを取得する
set backup
" バックアップを取得するディレクトリを指定する
set backupdir=~/backup
" 検索履歴を残す世代数
set history=50
" 検索時に大文字小文字を区別しない
set ignorecase
" 検索語に大文字を混ぜると検索時に大文字を区別する
set smartcase
" 検索語にマッチした単語をハイライトする
set hlsearch
" インクリメンタルサーチを使用する(検索語の入力最中から随時マッチする文字列の検索を開始)
set incsearch
" 行番号を表示する
set number
" 改行 ( $ ) やタブ ( ^I ) を可視化する
set list
" 括弧入力時に対応する括弧を強調する
set showmatch
" ファイルの末尾に改行を入れない
set binary noeol
" 自動インデントを有効にする
set autoindent
" 構文ごとに色分け表示する
syntax on
" [ syntax on ] の場合のコメント文の色を変更する
highlight Comment ctermfg=LightCyan
" ウィンドウ幅で行を折り返す
set wrap

上記の中で不必要なものはコメントアウトして下さい

④vimの設定変更内容の有効化
設定した内容を有効にするために、システムからログアウトして下さい。再度、システムへログインすると上記内容が反映されます。

2.2 ネットワークの設定

①ホスト名の設定
Debian のインストール時にホスト名を設定していますが、何らかの理由でホスト名を変更する場合について説明します。
ホスト名の設定には"hostnamectl set-hostname"コマンドを利用します。以下のように実行します。ここではホスト名として「Lepard」を設定します。

# hostnamectl set-hostname Lepard

設定の結果は "/etc/hostname"ファイルを参照することで確認できます。
"cat"コマンドで"/etc/hostname"ファイルを参照して、以下のように設定値の「Lepard」が表示されればホスト名の確認は完了です。

# cat /etc/hostname
Lepard

➁ネットワークインターフェイスへのIPアドレス設定
Debian 12インストール時のIPアドレスはDHCP(動的IPアドレス)に設定されていますので、固定のIPアドレスを設定します。IPアドレスの設定には"/etc/network/interfaces"ファイルを変更してから、ネットワークインターフェース(今回はens33)を再起動します。
ネットワークインターフェース名はセットアップを行った環境によって変わりますので、まずはインターフェイス名を確認します。
ネットワーク情報を確認するためのコマンドは"ip addr(もしくはip a)"になります。実行することでネットワークインターフェース名やIPアドレスの情報が表示されます。

# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:77:dd:30 brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    inet 192.168.11.26/24 brd 192.168.11.255 scope global dynamic ens33
       valid_lft 171502sec preferred_lft 171502sec
    inet6 fe80::20c:29ff:fe77:dd30/64 scope link
       valid_lft forever preferred_lft forever

連番の次に表示されているものが「ネットワークインターフェース名」になります。「lo」は「ローカルループバックインターフェイス」になりますので、通常は利用されません。上記の場合は「ens33」がネットワークインターフェース名です。

➂固定IPアドレスの設定
ネットワークインターフェース名が分かったところで、ネットワークの設定を行います。ネットワークの設定に必要な情報と、今回設定を行うパラメータを以下のように仮定して進めます。

・IPアドレス       192.168.11.83
・サブネットマスク    255.255.255.0(24ビット)
・デフォルトゲートウェイ 192.168.11.1
・DNSサーバー      192.168.11.1

IPアドレスの設定は"/etc/network/interfaces"ファイルを変更することで行います。viコマンドでinterfacesファイルを開きます。

# vi /etc/network/interfaces

初期値は以下のようになっています
# The primary network interface
allow-hotplug ens33
iface ens33 inet dhcp

次のように変更します
# The primary network interface
allow-hotplug ens33
#iface ens33 inet dhcp  ←コメントアウト
# network interface settings
iface ens33 inet static   ←追加
address 192.168.11.83  ←追加
netmask 255.255.255.0  ←追加
gateway 192.168.11.1   ←追加
dns-nameservers 192.168.11.1 ←追加

④固定IPアドレスの有効化

# systemctl restart networking ifup@ens33

2.3 サーバーの時刻同期を設定

サーバーの時刻を自動的に合わせるサービスである「timesyncd」を設定していきます。

①timesyncdサービスの設定
timesyncdサービスの設定は"/etc/systemd/timesyncd.conf"ファイルで行います。ファイルの変更前に、元のファイルをバックアップとしてコピーしておきます。

# cp -p /etc/systemd/timesyncd.conf /etc/systemd/timesyncd.conf.org

設定ファイルを編集していきます

# vi /etc/systemd/timesyncd.conf

初期値は以下のようになっています
[Time]
#NTP=
#FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org     
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048
#ConnectionRetrySec=30
#SaveIntervalSec=60

これを次のように日本国内のタイムサーバーを追記します。
[Time]
NTP=ntp.jst.mfeed.ad.jp
FallbackNTP=ntp.nict.jp
#NTP=
#FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org     
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048
#ConnectionRetrySec=30
#SaveIntervalSec=60

➁timesyncdサービスの設定の反映

# systemctl restart systemd-timesyncd

エラーが出力されなければ、サービスは再起動しています。時刻同期の確認をおこないます。時刻同期の確認は"timedatectl status"コマンドで行います。以下のように実行します。

# timedatectl status

               Local time: Tue 2026-05-26 11:28:58 JST
           Universal time: Tue 2026-05-26 02:28:58 UTC
                 RTC time: Tue 2026-05-26 02:28:58
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

「System clock synchronized: yes」と表示されていれば時刻同期は行われています。

2.4 suできるユーザーを制限する

Debianではデフォルト設定の場合"su"コマンドでどのユーザーでもrootユーザーに移行することができます。
複数のユーザーがサーバーに作成されている場合、どれか一つでもユーザーのログイン情報が分かってしまうと不正アクセス後にsuコマンドでrootユーザー権限を奪取されてしまうため、できる限りsuコマンドを実行できるユーザーを制限します。
wheelグループに属するユーザーのみにsuを実行できる権限を与えることができるようにします。

①wheelグループへのユーザー追加
まず、次のコマンドでwheelグループを作成する

# groupadd wheel

usermodコマンドを実行してwheelグループへユーザーを追加します。例として追加したいユーザーを「lan」とします。

# useradd lan
# usermod -g wheel lan

idコマンドを利用してwheelグループへ追加されていることを確認。

# id lan
uid=1001(lan) gid=1001(wheel) groups=1001(wheel)

➁suコマンドの設定ファイルを編集
suコマンドの設定ファイルは/etc/pam.d/suになります。(15行目あたり)

# vi /etc/pam.d/su

# Uncomment this to force users to be a member of group wheel
# before they can use `su'. You can also add "group=foo"
# to the end of this line if you want to use a group other
# than the default "wheel" (but this may have side effect of
# denying "root" user, unless she's a member of "foo" or explicitly
# permitted earlier by e.g. "sufficient pam_rootok.so").
# (Replaces the `SU_WHEEL_ONLY' option from login.defs)
auth required pam_wheel.so  ← コメントを外す

これで、ユーザー"lan"は「su -」コマンドを利用してroot権限に移行できます。

2.5 Debian リポジトリ ミラー設定編集

リポジトリ ミラー 設定ファイルは/etc/apt/sources.listです、コピーをとってから編集します。

# cd /etc/apt/
# cp sources.list sources.list_back
# vi sources.list

ファイル内容は

#deb cdrom:[Debian GNU/Linux 12.14.0 _Bookworm_ - Official amd64 DVD Binary-1 with firmware 20260516-14:43]/ bookworm contrib main non-free-firmware

deb http://deb.debian.org/debian/ bookworm main non-free-firmware
deb-src http://deb.debian.org/debian/ bookworm main non-free-firmware

deb http://security.debian.org/debian-security bookworm-security main non-free-firmware
deb-src http://security.debian.org/debian-security bookworm-security main non-free-firmware

# bookworm-updates, to get updates before a point release is made;
# see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
deb http://deb.debian.org/debian/ bookworm-updates main non-free-firmware
deb-src http://deb.debian.org/debian/ bookworm-updates main non-free-firmware

一番上のは、インストール時に使ったメディアです。もう使わないので、コメントアウトします。
Backports リポジトリを追加(最終行に下記を追記)

deb http://deb.debian.org/debian/ bookworm-backports main non-free-firmware

ソースリストをアップデート

# apt update

2.6 locateコマンドを利用できるようにする

Linuxシステム全体を対象として、特定のファイルを検索するにはfindコマンドを利用しますが、findはオプションの指定がやや分かりにくいところがあります。
locateコマンドは指定したファイル名をもつファイルを全て抽出することが可能です。
事前にファイルとフォルダ名のデータベースを作成しなければなりませんが、高速にファイルが検索出来て、使い勝手が良いというメリットがあります。ここでは"locate"コマンドを利用できるようにします。

①locateパッケージのインストール

# apt -y install locate
# dpkg -l | grep locate
ii  locate                       4.9.0-4                        amd64        maintain and query an index of a directory tree

上記のように実行結果にlocateパッケージ名が表示されれば、インストールの確認は完了です

➁データベースを作成

# updatedb

➂locateコマンドの実行
例として「sshd」という名前のファイルを全て検索します。

# locate sshd

/etc/pam.d/sshd
/etc/ssh/sshd_config
/etc/ssh/sshd_config.d
/etc/systemd/system/sshd.service
/run/sshd
/run/sshd.pid
/usr/sbin/sshd
/usr/share/man/man5/sshd_config.5.gz
/usr/share/man/man8/sshd.8.gz
/usr/share/openssh/sshd_config
/usr/share/openssh/sshd_config.md5sum
/usr/share/vim/vim90/syntax/sshdconfig.vim
/var/lib/systemd/deb-systemd-helper-enabled/sshd.service
/var/lib/ucf/cache/:etc:ssh:sshd_config

sshdを含むファイル名のリストが表示されました。

2.7 ロケールの設定

Linuxシステムの言語設定です。Debianのインストール時にロケールとして英語を選択しています。
もし日本語ロケールの方が良いという場合には実施してください。

①現在のロケール確認
システムで設定されているロケールを確認します。ロケールを確認するには"localectl status"コマンドを利用します。
現在はLANG=en_US.UTF-8で英語になっています

# localectl status
System Locale: LANG=en_US.UTF-8
               LANGUAGE=en_US:en
    VC Keymap: (unset)
   X11 Layout: jp
    X11 Model: pc105

➁日本語ロケールへ変更
dpkg-reconfigureコマンドで、ロケールを設定します

# dpkg-reconfigure locales

"en_US.UTF-8 UTF-8" のチェックを外す

"ja_JP.UTF-8 UTF-8 "を選択し、チェックを入れる

"ja_JP,UTF-8"を選択し、OK クリック

下記のように表示される

Generating locales (this might take a while)…
ja_JP.UTF-8… done
Generation complete.
*** update-locale: Warning: LANGUAGE ("en_US:en") is not compatible with LANG (ja_JP.UTF-8). Disabling it.

再度確認する

# localectl status
System Locale: LANG=ja_JP.UTF-8
    VC Keymap: (unset)
   X11 Layout: jp
    X11 Model: pc105

上記のように「ja_JP.UTF-8」ロケールが設定されていることが確認できました。

2.8 タイムゾーンの設定

Debian のタイムゾーンはインストール時に設定されている場合がほとんどですが、もし日本のタイムゾーンである「JST」が指定されていない場合には"timedatectl"コマンドで変更できます。

①現在のタイムゾーンの表示
サーバーに設定されているタイムゾーンを確認するには"timedatectl status"コマンドを実行します

# timedatectl status
               Local time: Tue 2026-05-26 11:41:17 JST
           Universal time: Tue 2026-05-26 02:41:17 UTC
                 RTC time: Tue 2026-05-26 02:41:18
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

上記のようにタイムゾーンが「Asia/Tokyo (JST)」に設定されています。

➁タイムゾーンを日本に変更
もし、「Asia/Tokyo (JST)」になっていない場合は、"timedatectl set-timezone"コマンドでタイムゾーンを変更できます。

# timedatectl set-timezone Asia/Tokyo

2.9 システムパッケージのアップデート

メディアからインストールされたDebianシステムは含まれているパッケージが古いことがあります。基本的な設定が完了した時点でシステムに含まれている パッケージを全て、新しいものに更新します。Debianでは全てのパッケージを更新するためにも"apt"を利用します。
パッケージの更新を実行しないで、更新されるパッケージのリストだけを確認するには"apt update"コマンドを実行します。以下のように実行します。

# apt update
Hit:1 http://deb.debian.org/debian bookworm InRelease
Hit:2 http://deb.debian.org/debian bookworm-updates InRelease
Hit:3 http://deb.debian.org/debian bookworm-backports InRelease
Hit:4 http://security.debian.org/debian-security bookworm-security InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.

今回はすべてアップデート済みですが、もしアップデートするパッケージあれば"apt upgrade"コマンドを実行します。

# apt upgrade -y