Ubuntu 16.04 Desktop (Xenial Xerus)の初期設定メモ。

§1 インストール

以下はubuntu-ja-16.04-desktop-amd64.isoを使用した場合の手順。

USBの場合、Dashより「ブータブルUSBの作成」(usb-creator-gtk)を起動することでISOイメージからブータブルUSBを作成することができる。

§1.1 下準備

CD-ROMあるいはUSBにインストールしたディスクイメージを使ってブートする。

§1.1.1 【ようこそ】

  1. 左の言語一覧から[日本語]を選択
  2. 右上のネットワーク設定のアイコンをクリックし、[接続を編集する...]でネットワーク接続の設定を済ませておく
    1. [接続情報]をクリックすると現在有効になっている接続が確認できる
  3. [Ubuntuを試す]をクリック

§1.1.2 パーティショニング

  1. Dash homeから"gparted"等と入力してGPartedを起動する
  2. LVMパーティションを扱う場合はsystem-config-lvm、RAIDディスクを扱う場合はmdadmなどをインストールする
  3. インストールに必要なパーティショニングを行う
    1. UEFIモードでインストールする場合、かつ手動でパーティショニングを行う場合は、EFIブートパティションを作成しておく

§1.1.3 構成の確認

  1. LVM・キーボード等その他構成の確認を行っておく
  2. バックアップ等の確認を行っておく
  3. [システム設定]→[画面の明るさとロック]→画面をオフにしない・ロックしないようにしておく
  4. 事前にgnome-system-monitorindicator-multiloadなどをインストール・起動しておくとインストール時のシステム状態を把握しやすい

§1.2 インストール

デスクトップの[Ubuntu 16.04 LTSのインストール]のアイコンからインストールを開始する。

§1.2.1 【ようこそ】

  1. 左の言語一覧から[日本語]を選択
  2. [続ける]

§1.2.2 【Ubuntuのインストール準備】

  1. [インストール中にアップデートをダウンロードする]にチェックを入れる
  2. 必要に応じて[サードパーティーのソフトウェアをインストールする]にチェックを入れる
  3. [続ける]

§1.2.3 【インストールの種類】

  1. [それ以外]を選択 (パーティション設定を行う場合)
  2. [続ける]

§1.2.3.1 【パーティション設定】

  1. 使用するデバイス・マウントポイント等を設定する
  2. [インストール]をクリック

インストールが開始される。

§1.2.4 【どこに住んでいますか?】

  1. 適切なタイムゾーンを選択
  2. [続ける]

§1.2.5 【キーボードレイアウト】

  1. 適切なキーボードレイアウトを選択
  2. [続ける]

§1.2.6 【あなたの情報を入力してください】

  1. ユーザー名、コンピューター名、パスワード等を入力
  2. [続ける]

以降、インストールが終了するまで待つ。

§1.2.7 【インストールが完了しました】

  1. [今すぐ再起動する]

ディスクが排出されたら取り出して[ENTER]を押して再起動させる

§2 設定ファイルの編集

§2.1 ターミナル・シェル周りの設定

§2.1.1 デフォルトエディタを変更する

デフォルトのエディタをvimにする。

sudo update-alternatives --config editor
update-alternativesを使ってデフォルトエディタを変更する例
alternative editor (/usr/bin/editor を提供) には 3 個の選択肢があります。

  選択肢    パス             優先度  状態
------------------------------------------------------------
* 0            /bin/nano           40        自動モード [#p4122406]
  1            /bin/ed            -100       手動モード
  2            /bin/nano           40        手動モード
  3            /usr/bin/vim.tiny   10        手動モード

現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 3
update-alternatives: /usr/bin/editor (editor) を提供するためにマニュアルモードで /usr/bin/vim.tiny を使います

§2.1.2 ~/.vimrc

以下の内容で作成。

~/.vimrc
set encoding=utf-8
set fileencoding=utf-8
set fileencodings=utf-8,utf-16,japan

set backspace=2
set tabstop=2
set shiftwidth=4
set expandtab

highlight tabs ctermbg=green guibg=green

set list
set number
set ruler
set smartindent

§2.1.3 ~/.bash_aliases, ~/.bashrc

~/.bash_aliasesを作成して以下のエイリアスを書き込む。

~/.bash_aliases
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias sl='ls'

if [[ -x `which colordiff` ]]; then
  alias diff='colordiff -u'
else
  alias diff='diff -u'
fi

~/.bashrcを編集して、"$color_prompt" = yesのif節内でプロンプトの内容を変更する。

~/.bashrc
# コメントアウトされているので解除する
force_color_prompt=yes

  :
  :

# 以下のPS1を編集して表示したいプロンプトに変更する
if [ "$color_prompt" = yes ]; then
    PS1='[`if [ $? = 0 ]; then echo -n "\[\033[1;32m\]✔" ; else echo -n "\[\033[1;31m\]✘"; fi;` \t\[\033[m\] <\[\033[1;33m\]${debian_chroot:+($debian_chroot)}\u\[\033[m\]@\[\033[1;36m\]\h\[\033[m\]%\[\033[1;35m\]${ENV_NAME}\[\033[m\]> \w]\$ '
else

  :
  :

以降、bashを起動すると上記の内容が読み込まれる。 変更した内容をすぐに反映させたい場合はsource .bashrcで再読み込みすることができる。

§2.2 ネットワークの設定

NetworkManagerによるネットワーク管理を行わず、/etc/network/interfacesを直接編集して固定IPアドレスでのネットワークを設定する手順。

§2.2.1 NetworkManagerを削除する

NetworkManagerによる管理を無効にするため削除する。

sudo apt-get purge network-manager

§2.2.2 ネットワークインターフェイスを設定する

ネットワークインターフェイスとデバイス名を確認する。

$ sudo lshw -short | grep network
/0/100/1d.3/0   enp0s10        network        RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller

以下の例では上記のように表示されたデバイスenp0s10を設定の対象とする。

/etc/network/interfacesの内容を編集する。

/etc/network/interfaces
auto lo
iface lo inet loopback

auto enp0s10
iface enp0s10 inet static
address 192.168.0.190
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 192.168.0.1

変更した設定でネットワークインターフェイスを起動する。

sudo ifup enp0s10

コマンドip addressで、すべてのネットワークインターフェイスとアドレスの情報を確認することができる。

ip addressの出力例
$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    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
2: enp0s10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.10/24 brd 192.168.0.255 scope global enp0s10
       valid_lft forever preferred_lft forever

§2.2.3 ネームサーバーを設定する

/etc/resolvconf/resolv.conf.d/baseにネームサーバーの設定を追加する。

/etc/resolvconf/resolv.conf.d/base
nameserver 192.168.0.1

変更した設定を反映させる。

sudo resolvconf -u

§2.2.4 IPv6を無効化する

無効化するために以下の内容を追記。

/etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

sysctl -pで変更を反映させる。 また、無効になったかを確認。

$ cat /proc/net/if_inet6 
00000000000000000000000000000001 01 80 10 80       lo
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 02 40 20 80  enp0s10

$ sudo sysctl -p
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

$ cat /proc/net/if_inet6 

sysctl -pを実行すると変更した内容が表示され、またcat /proc/net/if_inet6で何も表示されなければ無効になっている。

§2.2.5 ブリッジ接続を設定する

仮想マシンのネットワークで使用するブリッジを設定する。 まずはbridge-utilsをインストール。

sudo apt-get install bridge-utils

/etc/network/interfacesにブリッジ設定を記述する。

/etc/network/interfaces
auto lo
iface lo inet loopback

auto enp0s10
iface enp0s10 inet manual
up /sbin/ifconfig enp0s10 promisc

auto br0
iface br0 inet static
address 192.168.0.10
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 192.168.0.1
bridge_ports enp0s10
bridge_stp off
bridge_maxwait 1

設定を反映させるためにネットワークインターフェイスを再起動する。

sudo ifdown enp0s10
sudo ifup br0

再起動したらip addressbr0が追加されていることを確認しておく。

$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    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
2: enp0s10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.10/24 brd 192.168.0.255 scope global br0
       valid_lft forever preferred_lft forever

§2.3 システムの設定

§2.3.1 スワップ頻度を変更する

スワップ頻度をデフォルトの60から10に下げるために、以下の内容を追記。

/etc/sysctl.conf
vm.swappiness = 10

sysctl -pで変更を反映させる。 また、正しく変更されたかを確認。

$ cat /proc/sys/vm/swappiness 
60

$ sudo sysctl -p
vm.swappiness = 10

$ cat /proc/sys/vm/swappiness 
10

sysctl -pを実行すると変更した内容が表示される。 また、現在の設定値はcat /proc/sys/vm/swappinessで確認できる。

§2.3.2 フロッピーディスクデバイス(/dev/fd0)を無効化する

/etc/modprobe.d/blacklist-floppy.confを作成し、以下の内容を書き込む。

/etc/modprobe.d/blacklist-floppy.conf
blacklist floppy

モジュールをアンロードし、update-initramfsを実行しておく。

sudo rmmod floppy
sudo update-initramfs -u

不要なら下記のマウント用ディレクトリも削除する。

sudo unlink /media/floppy
sudo rmdir /media/floppy0

lsmodfloppyが表示されなければ無効化されている。 (再起動後も永続的に無効化される)

$ lsmod | grep -i floppy

§2.4 その他設定ファイル等の編集

§2.4.1 /etc/hosts

必要に応じてホストを追記。

§2.4.2 /etc/fstab

マウントポイントを作成し、必要に応じてパーティションを追記。

§2.4.3 グループ・ユーザーを追加する

必要に応じて追加。

# 一般ユーザーのグループ・ユーザーの作成
sudo groupadd -g 1001 user2
sudo adduser --uid 1001 --gid 1001 user2

# 管理者ユーザーにする場合(sudoグループ・admグループに追加)
sudo gpasswd -a user2 sudo
sudo gpasswd -a user2 adm

# ホームディレクトリ・ログインシェルを持たないユーザーを作成する場合
sudo adduser --uid 5000 --gid 5000 --disabled-login --disabled-password --no-create-home user3

§3 ソフトウェアの追加と削除

アップグレードする場合や、他の環境から移行する場合は、事前に必要になるソフトウェア・不要なソフトウェアの一覧を作成しておくとよい。 /var/log/apt/history.logにはaptでの操作の履歴が記録されているので、それを元に要・不要の判断およびリストアップをすることができる。

# aptコマンドでの操作の履歴を表示
grep "Commandline:" /var/log/apt/history.log

# 実際にインストールしたパッケージを表示
# (自動的にインストールされた関連パッケージも含まれる)
grep "Install:" /var/log/apt/history.log

§3.1 パッケージの削除・インストール

§3.1.1 不要なパッケージを削除する

以下のコマンドで削除。 削除するパッケージの詳細は後述。

sudo apt-get purge \
  bluez-cups \
  cheese \
  cups cups-bsd cups-client cups-common cups-browsed cups-core-drivers cups-daemon cups-server-common \
  deja-dup \
  'empathy(-.*)?' \
  enchant \
  'espeak(-.*)?' \
  evolution-data-server evolution-data-server-online-accounts \
  example-content \
  'friends(-.*)?' \
  gnome-accessibility-themes \
  gnome-contacts gnome-mahjongg gnome-mines gnome-sudoku \
  gnome-online-accounts \
  'gwibber-service(-.*)?' \
  hpijs hplip hplip hplip-data \
  indicator-messages indicator-printers \
  modemmanager \
  ntfs-3g libntfs-3g.* libntfs.* \
  nano \
  ppp pppconfig pppoeconf \
  'remmina(-.*)?' \
  'rhythmbox(-.*)?' \
  sane-utils libsane.* \
  signon-ui signon-plugin-.* account-plugin-.* signon-.* signond \
  'shotwel(-.*)?' \
  'telepathy(-.*)?' libtelepathy.* \
  toshset \
  unity-lens-.* \
  unity-scope-colourlovers unity-scope-gdrive unity-scope-gmusicbrowser unity-scope-gourmet unity-scope-musicstores  unity-scope-musique unity-scope-openclipart unity-scope-virtualbox unity-scope-zotero \
  'telepathy(-.*)?' \
  wamerican wbritish \
  zeitgeist zeitgeist-core zeitgeist-datahub python-zeitgeist
削除するパッケージと概要
パッケージ名 概要
bluez-cups Bluetooth printer driver for CUPS
cheese tool to take pictures and videos from your webcam
cups Common UNIX Printing System(tm) - PPD/driver support, web interface
cups-bsd Common UNIX Printing System(tm) - BSD commands
cups-client Common UNIX Printing System(tm) - client programs (SysV)
cups-common Common UNIX Printing System(tm) - common files
cups-browsed OpenPrinting CUPS Filters - cups-browsed
cups-core-drivers Common UNIX Printing System(tm) - PPD-less printing
cups-daemon Common UNIX Printing System(tm) - daemon
cups-server-common Common UNIX Printing System(tm) - server common files
deja-dup Back up your files
'empathy(-.*)?' GNOME multi-protocol chat and call client
enchant Wrapper for various spell checker engines (binary programs)
'espeak(-.*)?' Multi-lingual software speech synthesizer
evolution-data-server evolution database backend server
evolution-data-server-online-accounts evolution data server integration with Ubuntu Online Accounts
example-content Ubuntu example content
gnome-accessibility-themes Accessibility themes for the GNOME desktop
gnome-contacts Contacts manager for GNOME
gnome-mahjongg classic Eastern tile game for GNOME
gnome-mines popular minesweeper puzzle game for GNOME
gnome-sudoku Sudoku puzzle game for GNOME
gnome-online-accounts service to manage online accounts for the GNOME desktop
hplip HP Linux Printing and Imaging System (HPLIP)
hplip HP Linux Printing and Imaging System (HPLIP)
hplip-data HP Linux Printing and Imaging - data files
indicator-messages indicator that collects messages that need a response
indicator-printers indicator showing active print jobs
modemmanager D-Bus service for managing modems
ntfs-3g read/write NTFS driver for FUSE
nano small, friendly text editor inspired by Pico
ppp Point-to-Point Protocol (PPP) - daemon
pppconfig Text menu based utility for configuring ppp
pppoeconf configures PPPoE/ADSL connections
'remmina(-.*)?' remote desktop client for GNOME desktop environment
'rhythmbox(-.*)?' support library for the rhythmbox music player
sane-utils API library for scanners -- utilities
libsane.* API library for scanners
signon-ui Dummy transitional package for signon-ui
signon-plugin-.* Plain Password plugin for Single Sign On
account-plugin-.* GNOME Control Center account plugin for single signon - facebook
signon-.* library for signond
signond Single Sign On framework
'shotwel(-.*)?' digital photo organizer
'telepathy(-.*)?' GLib Telepathy connection manager library (GObject-Introspection)
libtelepathy.* Telepathy framework - GLib library
toshset Access much of the Toshiba laptop hardware interface
unity-lens-.* Application lens for unity
unity-scope-colourlovers COLOURlovers scope for Unity
unity-scope-gdrive Google Drive scope for Unity
unity-scope-gmusicbrowser gmusicbrowser scope for Unity
unity-scope-gourmet Gourmet Recipe Manager scope for Unity
unity-scope-musique Musique scope for Unity
unity-scope-openclipart OpenClipArt scope for Unity
unity-scope-virtualbox VirtualBox scope for Unity
unity-scope-zotero Zotero scope for Unity
'telepathy(-.*)?' GLib Telepathy connection manager library (GObject-Introspection)
wamerican American English dictionary words for /usr/share/dict
wbritish British English dictionary words for /usr/share/dict
zeitgeist event logging framework
zeitgeist-core event logging framework - engine
zeitgeist-datahub event logging framework - passive logging daemon
python-zeitgeist event logging framework - Python bindings
パッケージ名 概要

ここで削除されるunity-lens-filesなどパッケージの一部は、次の節で改めてインストールする。

§3.1.2 使用するパッケージをインストールする

以下のコマンドでインストール。 インストールするパッケージの詳細は後述。

sudo apt-get install \
  autoconf automake autotools-dev build-essential gettext libtool bison \
  cmake \
  colordiff \
  chromium-browser \
  flashplugin-installer \
  gedit-plugins \
  git \
  gsmartcontrol \
  gimp \
  gparted \
  hddtemp \
  ibus-mozc \
  indicator-multiload \
  icedax \
  lighttpd lighttpd-mod-magnet lighttpd-mod-webdav \
  logwatch \
  lm-sensors \
  mdadm \
  mono-mcs mono-csharp-shell libmono-simd.*-cil \
  monodevelop monodevelop-nunit monodevelop-versioncontrol nunit-console \
  munin munin-node \
  nasm \
  nethogs \
  nfs-kernel-server \
  nkf \
  ntp \
  php7.0-cgi \
  samba \
  smartmontools \
  swig \
  subversion subversion-tools \
  system-config-lvm \
  synaptic \
  tree \
  fonts-vlgothic fonts-ipafont.* fonts-monapo fonts-takao.* fonts-mikachan \
  unity-scope-home unity-scopes-master-default unity-scopes-runner \
  unity-lens-applications unity-lens-files \
  virt-manager qemu-kvm \
  vlc \
  xinetd \
  yasm \
  w3m

インストールするソフトウェアの概要は次のとおり。

インストールするパッケージと概要
パッケージ名 概要
autoconf automatic configure script builder
automake Tool for generating GNU Standards-compliant Makefiles
autotools-dev Update infrastructure for config.{guess,sub} files
build-essential Informational list of build-essential packages
gettext GNU Internationalization utilities
libtool Generic library support script
bison YACC-compatible parser generator
cmake cross-platform, open-source make system
colordiff tool to colorize 'diff' output
chromium-browser Chromium web browser, open-source version of Chrome
flashplugin-installer Adobe Flash Player plugin installer
gedit-plugins set of plugins for gedit
git fast, scalable, distributed revision control system
gsmartcontrol graphical user interface for smartctl
gimp The GNU Image Manipulation Program
gparted GNOME partition editor
hddtemp hard drive temperature monitoring utility
ibus-mozc Mozc engine for IBus - Client of the Mozc input method
indicator-multiload Graphical system load indicator for CPU, ram, etc.
icedax Creates WAV files from audio CDs
lighttpd fast webserver with minimal memory footprint
lighttpd-mod-magnet control the request handling module for lighttpd
lighttpd-mod-webdav WebDAV module for lighttpd
logwatch log analyser with nice output written in Perl
lm-sensors utilities to read temperature/voltage/fan sensors
mdadm tool to administer Linux MD arrays (software RAID)
mono-mcs Mono C# 2.0 / 3.0 / 4.0 / 5.0 compiler for CLI 2.0 / 4.0 / 4.5
mono-csharp-shell interactive C# shell
libmono-simd.*-cil Mono SIMD (for CLI 4.0)
monodevelop Development Environment for GNOME
monodevelop-nunit NUnit plugin for MonoDevelop
monodevelop-versioncontrol VersionControl plugin for MonoDevelop
nunit-console Unit test framework for CLI - Console test runner
munin network-wide graphing framework (grapher/gatherer)
munin-node network-wide graphing framework (node)
nasm General-purpose x86 assembler
nethogs Net top tool grouping bandwidth per process
nfs-kernel-server support for NFS kernel server
nkf Network Kanji code conversion Filter
ntp Network Time Protocol daemon and utility programs
php7.0-cgi server-side, HTML-embedded scripting language (CGI binary)
samba SMB/CIFS file, print, and login server for Unix
smartmontools control and monitor storage systems using S.M.A.R.T.
swig Generate scripting interfaces to C/C++ code
subversion Advanced version control system
subversion-tools Assorted tools related to Apache Subversion
system-config-lvm utility for graphically configuring Logical Volumes
synaptic Graphical package manager
tree displays an indented directory tree, in color
fonts-vlgothic Japanese TrueType font from Vine Linux
fonts-ipafont.* Japanese OpenType font set, IPA Gothic font
fonts-monapo Japanese TrueType font, Monapo
fonts-takao.* Japanese TrueType font set, Takao Gothic Fonts
fonts-mikachan handwritten Japanese Truetype font
unity-scope-home Home scope that aggregates results from multiple scopes
unity-scopes-master-default Home scope that aggregates results from multiple scopes
unity-scopes-runner desktop runner for misceallenous scopes
unity-lens-applications Application lens for unity
unity-lens-files File lens for unity
virt-manager desktop application for managing virtual machines
qemu-kvm QEMU Full virtualization
vlc multimedia player and streamer
xinetd replacement for inetd with many enhancements
yasm modular assembler with multiple syntaxes support
w3m WWW browsable pager with excellent tables/frames support
パッケージ名 概要

§3.2 ドライバ類をインストールする

  1. Dash homeより"driver"等と入力して[追加のドライバー]を検索・クリック
    1. Dash homeで表示されない場合は、[システム設定]→[システム]セクションの[ソフトウェアとアップデート]→開いたウィンドウの[追加のドライバー]タブから設定することができる
  2. 有効にできるドライバを有効にする

§3.3 不要なサービスを停止する

sysv-rc-conf(chkconfigの代替)をインストール。

sudo apt-get install sysv-rc-conf

起動されるサービスの一覧を表示。

sudo sysv-rc-conf --list | grep :on

表示されたもののうち不要なものがあれば以下のようにして停止する。

sudo sysv-rc-conf avahi-daemon off
sudo sysv-rc-conf bluetooth off
sudo sysv-rc-conf rsync off

§3.4 必要とされていないパッケージを削除する

sudo apt-get autoremove

§3.5 パッケージ情報を更新してアップデートする

sudo apt-get update && sudo apt-get dist-upgrade

§3.6 GRUBを設定する

/etc/default/grubを編集する。 変更内容は次のとおり。

GRUB_HIDDEN_TIMEOUTをコメントアウト
メニュー画面を表示する
GRUB_TIMEOUTを5に変更
タイムアウト時間を5秒にする
GRUB_CMDLINE_LINUX_DEFAULTを"quiet splash"から"noquiet nosplash intel_iommu=on"に変更
noquiet nosplash: ブート中に表示される内容をスプラッシュ画面からテキスト表示にする
intel_iommu=on: KVMでPCIパススルーを行うために、IOMMUを有効にする (Intel CPU/VT-dの場合。 AMD CPU/AMD-Viの場合はamd_iommu=on。 関連:§.PCIパススルーでUSBデバイスを使用できるようにする)
/etc/default/grub
GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="noquiet nosplash intel_iommu=on"
GRUB_CMDLINE_LINUX=""

編集が終わったら、update-grub2で設定を反映させる。

sudo update-grub2
update-grub2の実行例
$ sudo update-grub2 
Generating grub configuration file ...
Linux イメージを見つけました: /boot/vmlinuz-4.4.0-18-generic
Found initrd image: /boot/initrd.img-4.4.0-18-generic
Linux イメージを見つけました: /boot/vmlinuz-4.4.0-15-generic
Found initrd image: /boot/initrd.img-4.4.0-15-generic
Found memtest86+ image: /memtest86+.elf
Found memtest86+ image: /memtest86+.bin

§3.7 root宛て・一般ユーザ宛てメールの送信先を変更する

/etc/aliasesに追記。

/etc/aliases
# Added by installer for initial user
root: root@mail.example.com
user: user@mail.example.com

追記した内容を反映させる。

sudo newaliases

§3.8 再起動

ここまででいったん再起動。 再起動後にps, pstree, topで必要なさそうなプロセスが動いてないかチェックする。

§4 デスクトップ環境の設定とカスタマイズ

§4.1 システム設定

[電源ボタン]→[システム設定]でシステム設定を開く。

§4.1.1 Launcher

ユーザー向け欄の[外観]を開く。

  1. [外観]タブ
    1. Launcherアイコンのサイズ→好みのサイズに変更する
  2. [挙動]タブ
    1. 「Launcherを自動的に隠す」→オフに変更
    2. 「ワークスペースを有効にする」→チェックする
    3. 「Launcherにデスクトップの表示アイコンを追加」→チェックする

§4.1.2 ロック

ユーザー向け欄の[画面の明るさとロック]を開く。

  1. (希望の動作に設定する)

§4.1.3 テキスト入力

ユーザー向け欄の[テキスト入力]を開く。

  1. 「使用する入力ソース」で「Mozc (Fcitx)」を選択し、ツールボタンをクリックして設定画面を開く
  2. [全体の設定]タブ
    1. ホットキー
      1. 「入力メソッドのオンオフ」を[Zenkakuhankaku]だけにする
      2. 「入力メソッド起動のその他のキー」を[無効]にする
    2. 出力
      1. 「候補の単語数」を10にする

§4.1.3.1 Mozcの設定

  1. Dash homeで"mozc"等と入力して「Mozcの設定」を検索・クリック
  2. [一般タブ]
    1. 「キー設定の選択」を[ATOK]に変更
  3. [辞書タブ]
    1. [ユーザー辞書の編集]をクリック
      1. [Mozc辞書ツール]でユーザー辞書をインポートする

§4.1.4 キーボード

ハードウェア欄の[キーボード]を開く。

  1. [タイピング]タブ
    1. (希望の動作に設定する)
  2. [ショートカット]タブ
    1. (希望のショートカットを設定する)

§4.1.5 パワーマネージメント

ハードウェア欄の[電源]を開く。

  1. (希望の動作に設定する)

§4.1.6 NTP

システム欄の[時刻と日付]を開く。

  1. [時刻と日付]タブ
    1. 「時刻設定」→「インターネット経由で自動的に時刻を合わせる」になっていることを確認する
  2. [時計]タブ
    1. 「時計の表示設定」をカスタマイズ
    2. 「他の場所の時刻を表示」をチェックし、「場所の選択」で場所を入力する

§4.2 Firefox

  1. [編集]メニュー→[設定]
    1. [一般]タブ
      1. 「Firefoxを起動するとき」を[空白ページを表示する]に変更
      2. 「ホームページ」をabout:blankに変更
    2. [検索]タブ
      1. 「ワンクリック検索エンジン」から不要な検索エンジンを削除
    3. [コンテンツ]タブ
      1. [言語設定]をクリックして[en-us]を削除
    4. [セキュリティー]タブ
      1. 「サイトのログイン情報を保存する」のチェックを外す
    5. [詳細]タブ
      1. 「ページ中の移動にカーソルを使用する(キャレットブラウズモード)」にチェックを入れる
      2. 「スムーズスクロール機能を使用する」のチェックを外す
  2. アドレスバーからabout:configを開く
    1. network.dns.disableIPv6の値をtrueにしてIPv6を無効にする

§4.3 Thunderbird

  1. [編集]メニュー→[設定]
    1. [詳細]タブ
      1. [一般]タブ
        1. [開封確認]をクリック
          1. 「開封確認は一切返送しない」に変更
        2. 「スムーズスクロール機能を使用する」のチェックを外す
        3. [設定エディタ]をクリック
          1. mail.server.default.check_all_folders_for_newの値をtrueにしてすべてのIMAPフォルダの新着メールをチェックする

§4.3.1 「メッセージの同期」機能を無効にする

  1. [編集]メニュー→[アカウント設定]
  2. 各アカウントの[同期とディスク領域]→「このアカウントのメッセージをこのコンピュータに保存する」のチェックを外す

§4.4 Nautilus

  1. [編集]メニュー→[設定]
    1. [表示]タブ
      1. 「新しいフォルダーの表示形式」→「一覧表示」にする
      2. 「一覧表示の規定値」の「デフォルトのズームレベル」→「50%」にする
    2. [アイテム]タブ
      1. 「一覧表示」の「ツリー形式でフォルダーを表示する」→チェックする
    3. [プレビュー]タブ
      1. 「サムネイルの表示」と「アイテム数のカウント」を「ローカルファイルのみ」にする

§4.4.1 ロケーションバーを常に表示するようにする

gsettings set org.gnome.nautilus.preferences always-use-location-entry true

§4.4.2 不要なディレクトリをサイドバーに表示しないようにする

~/.config/user-dirs.dirsを編集し、表示したくないディレクトリをコメントアウトする。

~/.config/user-dirs.dirs
XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOWNLOAD_DIR="$HOME/Downloads"

# 以下のディレクトリはNautilusのサイドバーに表示させない
#XDG_TEMPLATES_DIR="$HOME/Templates"
#XDG_PUBLICSHARE_DIR="$HOME/Public"
#XDG_DOCUMENTS_DIR="$HOME/Documents"
#XDG_MUSIC_DIR="$HOME/Music"
#XDG_PICTURES_DIR="$HOME/Pictures"
#XDG_VIDEOS_DIR="$HOME/Videos"

再度ログインした際にも有効にするため、~/.config/user-dirs.confを作成して以下の内容を書き込む。

~/.config/user-dirs.conf
enabled=False

関連: §./home/のディレクトリ表記を英語にする・不要なディレクトリを削除する (干渉する操作のため同時に行う必要がある)

§4.5 Gedit

  1. [編集]メニュー→[設定]
    1. [表示]タブ
      1. 「行番号を表示する」→チェックする
      2. 「対応するカッコを強調表示する」→チェックする
    2. [エディター]タブ
      1. 「タブの幅」→2にする
      2. 「タブの代わりにスペースを挿入する」→チェックする
      3. 「自動インデントを有効にする」→チェックする
    3. [フォントと色]タブ
      1. 「システムの固定幅フォントを使う」→チェックを外す
      2. 「エディターのフォント」→適当に設定する
      3. 「カラースキーム」→適当に設定する
    4. [プラグイン]
      1. 「空白の表示」→チェックする
        1. 改行以外の空白文字を表示する

§4.6 その他のシステム設定・環境設定

§4.6.1 メニュー項目からの再起動・シャットダウン・サスペンド等を無効にする

/etc/polkit-1/localauthority/90-mandatory.d/disable-power.pklaを編集して、以下の内容を追記する。

/etc/polkit-1/localauthority/90-mandatory.d/disable-power.pkla
[Disable power management]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot;org.freedesktop.login1.reboot-multiple-sessions;org.freedesktop.login1.power-off;org.freedesktop.login1.power-off-multiple-sessions;org.freedesktop.login1.suspend;org.freedesktop.login1.suspend-multiple-sessions;org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no

この変更はマシンを再起動するか、LightDMを再起動した後に有効になる。

LightDMの再起動
sudo service lightdm restart

再起動やシャットダウンのメニュー項目は残ったままとなるが、確認のダイアログが表示されるだけで実際に再起動・シャットダウンを行うことはできなくなる。

以降、再起動・電源オフは以下のコマンドで行う。

sudo reboot # 再起動
sudo shutdown -h # 電源オフ

§4.6.2 Ctrl+Alt+BackspaceでXサーバーを強制終了できるようにする

以下のコマンドでキーボード設定のダイアログを起動する。

sudo dpkg-reconfigure keyboard-configuration

以下ダイアログに従って以下の手順で設定する。

  1. 【キーボードモデル】→変更せずそのまま[ENTER]
  2. 【キーボードが由来する国】→変更せずそのまま[ENTER]
  3. 【キーボードのレイアウト】→変更せずそのまま[ENTER]
  4. 【AltGr として機能させるキー】→変更せずそのまま[ENTER]
  5. 【コンポーズキー】→変更せずそのまま[ENTER]
  6. 【X サーバを強制終了するのに Control+Alt+Backspace を使いますか?】→ここで<はい>を選択して[ENTER]

§4.6.3 ゲストによるログインを無効にする

/usr/share/lightdm/lightdm.conf.d/50-ubuntu.confを編集して、allow-guest=falseを追記する。

/usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
[Seat:*]
user-session=ubuntu
allow-guest=false

この変更はマシンを再起動するか、LightDMを再起動した後に有効になる。

LightDMの再起動
sudo service lightdm restart

§4.6.4 /home/のディレクトリ表記を英語にする・不要なディレクトリを削除する

「デスクトップ」など、デフォルトで作成されるディレクトリの表記を英語にする。

cd ~
LANG=C xdg-user-dirs-gtk-update

表示されるダイアログにしたがって変更すればOK。 ディレクトリを削除する前に、以下の内容を記述した~/.config/user-dirs.confを作成し、ディレクトリを削除しても二度と作成させないようにする。

~/.config/user-dirs.conf
enabled=False

その後、不要なディレクトリを削除する。

rmdir Documents/ Public/ Templates/

関連: §.不要なディレクトリをサイドバーに表示しないようにする (干渉する操作のため同時に行う必要がある)

§4.6.5 iPhone/iPodのマウント

USBでの接続で「iPhone(またはiPod)をマウントできません」というエラーが出る場合は、/var/lib/lockdownのディレクトリの存在とパーミッションを確認する。

sudo mkdir /var/lib/lockdown
sudo chmod 777 /var/lib/lockdown

§5 開発環境の設定

§5.1 Logwatch

動作テストした結果をroot宛にメールで送信する。

sudo logwatch --detail high --mailto root

§5.2 Munin

/etc/munin/munin.conf
# 収集したデータ、HTMLの出力先などを設定
dbdir	/var/lib/munin
htmldir	/srv/www/munin
logdir	/var/log/munin
rundir  /var/run/munin

# a simple host tree
[localhost.example.com]
    address 127.0.0.1
    use_node_name yes

# 以下、監視するノードをここに追記
[server1.example.com]
    address server1
    use_node_name yes

localhostからのアクセスのみを許可するように変更する。

/etc/munin/munin-node.conf
allow ^127\.0\.0\.1$

/etc/munin/pluginsに必要なプラグインを追加・不要なプラグインを削除する。

cd /etc/munin/plugins/
sudo unlink xxx
sudo ln -s /usr/share/munin/plugins/xxx

munin-nodeを再起動。

sudo service munin-node restart

別途HTTPサーバーの設定を変更して/etc/munin/munin.confhtmldirで設定したHTMLの出力先を表示できるようにする。

§5.3 xinetd

/etc/hosts.allow, /etc/hosts.denyを編集。

/etc/hosts.allow
svnserve : 127.0.0.1 192.168.0.0/24
git-daemon : 127.0.0.1 192.168.0.0/24
portmap rpcbind mountd nfsd statd lockd rquotad : 192.168.0.0/24
/etc/hosts.deny
ALL: PARANOID

/etc/xinetd.d/以下の設定ファイルを編集した後、再起動。

sudo service xinetd restart

§5.3.1 svnserve

/etc/xinetd.d/svnを作成。

/etc/xinetd.d/svn
service svn
{
        disable         = no
        socket_type     = stream
        user            = svn
        wait            = no
        server          = /usr/bin/svnserve
        server_args     = -i -r /srv/repos/svn
        only_from       = 192.168.0.0/24 127.0.0.1
        log_on_failure  += USERID
}

ユーザ・グループを追加。 (ここではそれぞれIDに601番を用いる)

sudo groupadd -g 601 svn
sudo adduser --uid 601 --gid 601 --disabled-login --disabled-password --no-create-home svn

ディレクトリを作成。

sudo mkdir -p /srv/repos/svn
sudo chown svn:svn /srv/repos/svn/

§5.4 Subversionクライアント

適当なsvnコマンドを実行することで~/.subversion/configのテンプレートを作成する。

svn help

作成された~/.subversion/configを編集。

~/.subversion/config
[auth]
# 認証情報を保存しない (毎回ユーザ名とパスワードを入力する)
store-passwords = no
store-auth-creds = no
password-stores =

[helpers]
# diffの代わりにcolordiffを使う
diff-cmd = colordiff

[tunnels]
# ssh = $SVN_SSH ssh
# rsh = rsh
# rsh = /path/to/rsh -l myusername

[miscellany]
# log-encoding = latin1
use-commit-times = yes
# no-unlock = yes
enable-auto-props = yes
global-ignores = *.o *.lo *.obj *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store *.suo *.pidb *.mdb *.userprefs *.usertasks

[auto-props]
(省略)

~/.colordiffrcをコピーする。

cp /etc/colordiffrc ~/.colordiffrc

~/.colordiffrcを編集。 (git diffと同じカラースキームにする)

~/.colordiffrc
banner=no
color_patches=no

plain=off
newtext=green
oldtext=red
diffstuff=cyan
cvsstuff=darkwhite

§5.5 NFS

/etc/exportsを編集。

/etc/exports
# エクスポートするディレクトリを追記

NFSサーバを再起動。

sudo service nfs-kernel-server restart

§5.6 libvirt

Intel VTが有効になっているか、KVMが利用できるか確認する。

$ egrep -c '(vmx|svm)' /proc/cpuinfo
2

$ kvm-ok 
INFO: /dev/kvm exists
KVM acceleration can be used

§5.6.1 PCIパススルーでUSBデバイスを使用できるようにする

GRUBの設定を変更してIOMMUを有効にしておく(§.GRUBを設定する)。 IOMMUが有効な場合はdmesgで以下のようなメッセージが表示される。

$ dmesg | grep IOMMU
[    0.000000] DMAR: IOMMU enabled

AppArmorによりアクセス制御がされている場合、USBデバイスへのアクセスが拒絶され、仮想マシンを起動する際に以下のようなメッセージが表示される場合がある。

$ dmesg | grep libvirt

[  585.002227] audit: type=1400 audit(1486069534.271:84): apparmor="DENIED" operation="open" profile="libvirt-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" name="/run/udev/data/c189:1" pid=5275 comm="qemu-system-x86" requested_mask="r" denied_mask="r" fsuid=121 ouid=0
[  585.002277] audit: type=1400 audit(1486069534.271:85): apparmor="DENIED" operation="open" profile="libvirt-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" name="/run/udev/data/c189:2" pid=5275 comm="qemu-system-x86" requested_mask="r" denied_mask="r" fsuid=121 ouid=0
[  585.002322] audit: type=1400 audit(1486069534.271:86): apparmor="DENIED" operation="open" profile="libvirt-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" name="/run/udev/data/c189:3" pid=5275 comm="qemu-system-x86" requested_mask="r" denied_mask="r" fsuid=121 ouid=0
  :
  :

この場合は、以下の2つのAppArmorプロファイルを編集してアクセスを許可する。 まずlibvirt共通のプロファイル/etc/apparmor.d/abstractions/libvirt-qemuを編集して以下の箇所を変更する。

/etc/apparmor.d/abstractions/libvirt-qemu
  # for usb access
  /dev/bus/usb/ rw,
  /etc/udev/udev.conf r,
  /sys/bus/ r,
  /sys/class/ r,

次に、USBデバイスを使用する仮想マシンのプロファイル/etc/apparmor.d/libvirt/libvirt-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxを編集して以下の二行を追記する。

/etc/apparmor.d/libvirt/libvirt-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
profile libvirt-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx {
  #include <abstractions/libvirt-qemu>
  #include <libvirt/libvirt-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.files>

  /dev/bus/usb/*/[0-9]* rw,
  /run/udev/** rw,
}

仮想マシンに対応するプロファイルのUUIDは、virsh dominfo <name>で確認することができるほか、上記のdmesgでもprofile="libvirt-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"と出力されている部分で確認できる。

以下のコマンドで編集したプロファイルを更新・反映させる。

sudo apparmor_parser -r /etc/apparmor.d/libvirt/libvirt-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

その後、再度仮想マシンを起動するとUSBデバイスへのアクセスが許可されるようになる。

§6 その他

§6.1 ソフトウェアのビルド・インストール