FreeBSD から Ubuntu Server へ移行したときのメモ


# 概要

FreeBSD のBase を誤ってぶっ壊してしまい，FreeBSD を再構築するのが面倒と感じたので，Ubuntu Server へ移行したときのメモ．


# FreeBSD のバックアップ

FreeBSD の Base がぶっ壊してしまい，make も portsnap もまともにできないという泣ける状況だったので以下の手順でデータをバックアップ．

1. lubuntu[^1] を USBメモリからブート[^2]．
2. ufs をマウントコマンドは以下の通り
    * `sudo mount -t ufs -r -o ufstype=ufs2 <device> <mount point>`
    * e.g: `sudo mount -t ufs -r -o ufstype=ufs2 /dev/sda10 /mnt/home` # /usr/home/ をマウント
3. usb hdd を接続(ntfs) → 自動認識
4. usb hdd へバックアップ
    * `cp -rfv /mnt/home/* /media/ubuntu/backup_disk/freebsd.backup.d/home/`
    * 以下をバックアップ
        * home
        * git レポジトリ
        * www: web 系
        * etc 系(/etc/, /usr/local/etc)

/usr/home, /etc, /usr/local/etc あたりをバックアップしておけばほぼ問題ないはず．余裕があれば，/usr 以下全て．

# ubuntu server のインストール
以外に手間取った．LinuxLive USB Creator でうまくいなかったのが痛かった．

1. ubuntu server ISO のダウンロード
2. USB メモリへ ubuntu server をコピー
    *  このとき，Universal USB Installer[^3] を使用．他の USB メモリ起動を作成するツールじゃうまくいかなかった．その辺の理由は，http://www.postcard.st/nosuz/tech/2013/12/19-75 を参考．
3. USB メモリから ubuntu server をインストール

## ubuntu server の初期設定
以下以外は，初期設定を採用

- RAID: 有効
- ネットワーク系: 手動設定(DHCP を導入するため)
- パーティション時のアンマウント(ディスクのパーティショニング): はい(アンマウントさせる)
- パーティションは手動で設定する(ガイドは使わない方が良い，私は使って失敗した)

| マウントポイント   |   GB     | 基本/論理 | フォーマット | 起動フラグ |
|:-------------------| --------:|:----------|:-------------|:-----------|
| /                  |  256     | 基本      | ext4         | OFF        |
| swap               |   16     | 論理      | swap         | OFF        |
| /home              | 残り全て | 論理      | ext4         | OFF        |


** 特に /home ** は切り離すこと．理由は，再インストール時楽になるため(分離していると再インストール時，フォーマットする必要がない)

- サーバ: 何もインストールしない，後に調べ，必要最小限インストールする

# インストール後のソフトウェアのインストール
## デーモン以外
### X 関連
X は，LXDEを使用する．lubuntu が印象良かったので，lubuntu-desktop をインストール．それに伴い以下パッケージをインストール．

```bash
$ sudo apt-get install lubuntu-desktop
$ sudo reboot
```

### lightdm の抑止
このままでは，グラフィックログインなる．
それを抑止するため，`/etc/init/lightgm.overrid` を作成し中身を `manual` のみとする．
つまり，以下を実行する．

```bash
$ echo manual | sudo tee /etc/init/lightdm.override    # $ echo manual >> /etc/init/lightdm.override はダメ．管理者権限がないため．
$ cat /etc/init/ligthdm.override
manual
```

これで抑止できたが，起動時がグラフィカルなためサーバー感がない．そこで，起動時のグラフィック(スプラッシュ画面)を抑止する．

```bash
$ sudo cp /etc/default/grub /etc/default/grub.orig
$ sudo /etc/defalut/grub

#### 以下を編集 ####
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
## を
GRUB_CMDLINE_LINUX_DEFAULT="text" 
## にする(= の左右に空白があるとダメ)．
#### 編集終わり ####

$ sudo update-grub    # エラーがないことを確認
$ reboot
```
上記は，[[ubuntu 日本語フォーラム] テキストログインする方法は？](https://forums.ubuntulinux.jp/viewtopic.php?id=13040) を参考にしました．


ligthgm を起動するときは，service lightgm start とコマンドを打ち込む．終了するときは，ターミナルから service lightgm stop と打ち込む

```bash
$ sudo service lightgm start    # 起動
$ sudo service lightgm stop     # 終了
```

終了したとき，ブラックアウトのまま何も更新されないが，ALT + F1 ~ F6 まで順繰りに巡ると元のコンソール画面に戻るはず．ほとんどの人は，ALT+F1 で戻れる．



### その他

- vim
- nkf


## デーモン
### sshd
リモートログインするため ssh  を設定する．

```bash
$ sudo apt-get install sshd
$ /etc/init.d/ssh start
```

このままでは危険なので以下を設定する．*/etc/ssh/sshd_config* を編集する．特に以下の項目を変更する

| 項目名                 | 値                | 意味                                               |
|:-----------------------|:------------------|:---------------------------------------------------|
| Port                   | 49152 以上の数値  | sshd のポート番号                                  |
| PasswordAuthentication | No                | パスワード認証を許可するか(Yes: 許可 / No: 不許可) |
| PermitRootLogin	 | No                | root ログインを許可するか(Yes: 許可 / No: 不許可)  |

基本的に Port はデフォルト値をさけ，パスワード認証，ルートログインは無視するとよりセキュアになる．

### iptables
sshd で Port 22 以外を指定したため，iptables で変更したポートを解放する．まず，iptables-persistent パッケージをインストールして iptables の永続化を簡便にする．

```lighty:/etc/iptables/rule.v4
# Generated by iptables-save v1.4.21 on -- datetime --
# encode: utf-8

#################################################
#
# 初期設定: 全て拒否
#
#################################################
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

###############################################################################
#
# sshd の許可: port xxxxx
#
###############################################################################
-A INPUT -m state --state NEW -m tcp -p tcp --dport xxxxx -j ACCEPT


COMMIT
# Completed on Fri Dec 25 23:23:08 2015
```

#### 外向けの設定
外向けは最低限のポートのみ開放する

| Allow/Deny | Port | デーモン |  備考          |
|:-------------|------:|:----------|:-----------|
| deny | 22 | ssh | 22 以外にしたので拒否する
| allow | 80 | httpd | web サービス |

#### 内向けの設定
内向けは，指定 ip のみ全て許可する．それ以外は，ssh, httpd, ftpd を許可



## これから導入する予定


| 種類  | ソフトウェア名     |
|:------|:-------------------|
| DNS   | BIND               |
| DHCP  | KEA-DHCP *1          |
| SSH   | OpenSSH            |
| git   | Git                |
| HTTPD | nginx              |
| FTPD  | proftpd            |

*1 KEA-DHCP は，[ISC、dhcpd やめるってよ - 次世代 ISC DHCP サーバー Kea 導入・設定ガイド](http://netbuffalo.doorblog.jp/archives/4953451.html) を参照．




# 脚注

[^1]: lubuntu url: http://lubuntu.net
[^2]: Live CD は，LinuxLive USB Creator(http://www.linuxliveusb.com) で作成．
[^3]: http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/