Mac mini (Late 2009)にCentOS6.9をクリーンインストール

# はじめに
Mac miniにrEFItでCentOS6.2を入れてホームサーバとして使っていたが、
MacOSを全然使っていないのでバージョンアップを機にCentOSのみで
クリーンインストールすることにした。  
体裁は随時直していきます。

## 本体：Mac mini (Late 2009)  
- Core2 Duo 2.26GHz
- 2GBメモリ(1GB 1067MHz DDR3×2枚)  
    → 4GBメモリ(2GB 1333MHz DDR3×2枚)に挿し替え
- NVIDIA GeForce 9400 256MB
- 160GB SATA HDD
- DVD-RW AD-5680H

## ディスプレイ：iiyama ProLite E2483HS-B1
- 画面サイズ：24型
- 解像度：1920x1080 (FullHD)
- 入力端子：HDMI, DVI-D, D-sub　※本構成ではDVI-D接続
- ふるさと納税品！

# CentOS6.9のインストール

[別投稿](http://qiita.com/kido-akira/items/698023fb29087fdde957)に詳細を記した。

# 初期設定

まずはとにかくSELinuxを無効化

```sh:/etc/selinux/config
SELINUX=disabled
```

IPv6無効化

```sh:/etc/netconfig
#udp6       tpi_clts      v     inet6    udp     -       -
#tcp6       tpi_cots_ord  v     inet6    tcp     -       -
```

```sh:/etc/sysconfig/network
NETWORKING_IPV6=no
```

```sh:/etc/modprobe.d/disable_ipv6.conf
options ipv6 disable=1
```

wtmp、btmpのログローテーション延長

```sh:/etc/logrotate.conf
/var/log/wtmp {
    monthly
    create 0664 root utmp
    rotate 100
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 100
}

```

ホームフォルダ構成変更

```sh:/etc/xdg/user-dirs.conf
enabled=False
filename_encoding=C
```

```sh:/etc/xdg/user-dirs.defaults
DESKTOP=Folders/Desktop
DOWNLOAD=Folders/Downloads
TEMPLATES=Folders/Templates
PUBLICSHARE=Folders/Public
DOCUMENTS=Folders/Documents
MUSIC=Folders/Music
PICTURES=Folders/Pictures
VIDEOS=Folders/Videos
```

不要サービス停止

```sh:root作業
# chkconfig --list | grep ":on"
acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
autofs          0:off   1:off   2:off   3:on    4:on    5:on    6:off
cpuspeed        0:off   1:on    2:on    3:on    4:on    5:on    6:off
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
haldaemon       0:off   1:off   2:off   3:on    4:on    5:on    6:off
ibacm           0:off   1:off   2:on    3:on    4:on    5:on    6:off
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
irqbalance      0:off   1:off   2:off   3:on    4:on    5:on    6:off
kdump           0:off   1:off   2:on    3:on    4:on    5:on    6:off
messagebus      0:off   1:off   2:on    3:on    4:on    5:on    6:off
netfs           0:off   1:off   2:off   3:on    4:on    5:on    6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
nfslock         0:off   1:off   2:off   3:on    4:on    5:on    6:off
ntpd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
portreserve     0:off   1:off   2:on    3:on    4:on    5:on    6:off
rpcbind         0:off   1:off   2:on    3:on    4:on    5:on    6:off
rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off
udev-post       0:off   1:on    2:on    3:on    4:on    5:on    6:off
```


# ストレージ回り

```sh:root作業
# tune2fs -L /     /dev/sda3
# tune2fs -L /boot /dev/sda2
# tune2fs -L /home /dev/sda4
# swapoff -a
# mkswap -L SWAP-sda5 /dev/sda5
# parted /dev/sda mkpart primary ext4 38.5GB 100%
# mkfs.ext4 -L /work /dev/sda6
```

```sh:/etc/fstab
LABEL=/         /               ext4    defaults        1 1
LABEL=/boot     /boot           ext4    defaults        1 2
UUID=D706-C7AC  /boot/efi       vfat    umask=0077,shortname=winnt 0 0
LABEL=/home     /home           ext4    defaults        1 2
LABEL=/work     /work           ext4    defaults        1 2
LABEL=SWAP-sda5 swap            swap    defaults        0 0
tmpfs           /dev/shm        tmpfs   defaults        0 0
devpts          /dev/pts        devpts  gid=5,mode=620  0 0
sysfs           /sys            sysfs   defaults        0 0
proc            /proc           proc    defaults        0 0
#
/root/CentOS.iso        /media/CentOS   iso9660 ro,loop,noauto  0 0
/root/CentOS2.iso       /media/CentOS2  iso9660 ro,loop,noauto  0 0
```

```sh:/etc/yum.repos.d/CentOS-Media.repo
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
        file:///media/CentOS2/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
```

rootパーティションをボリュームラベルで指定(`root=LABEL=/`)。
NVIDIAのドライバを使うためnouveauドライバを無効化(`rdblacklist=nouveau nomodeset`)。

```sh:/boot/efi/EFI/redhat/grub.conf
device (hd0) HD(1,800,64000,d8222d56-a097-404d-a61d-9470361da8ac)
default=0
timeout=5
splashimage=(hd0,1)/grub/splash.xpm.gz
#hiddenmenu
title CentOS 6.9 (2.6.32-696.el6.x86_64)
        root (hd0,1)
        kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=LABEL=/ rd_NO_LUKS rd_NO_MD crashkernel=128M  KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=ja_JP.UTF-8 rd_NO_LVM rd_NO_DM rdblacklist=nouveau nomodeset
        initrd /initramfs-2.6.32-696.el6.x86_64.img
```

```sh:root作業
# ln -s CentOS-6.9-x86_64-bin-DVD1.iso /root/CentOS.iso
# ln -s CentOS-6.9-x86_64-bin-DVD2.iso /root/CentOS2.iso
# mkdir /media/CentOS
# mkdir /media/CentOS2
#
```

# Xの設定
GeForce9400の対応ドライバは340.xまで。したがってCUDAは6.5まで。

```sh:rootで作業(Xは停止)
# telinit 3
# sh NVIDIA-Linux-x86_64-340.102.run --silent
# telinit 5
```

自分の環境では文字が巨大化している(\*_\*)。

```sh:/var/log/Xorg.0.log
[  3724.938] (--) NVIDIA(0): DPI set to (304, 304); computed from "UseEdidDpi" X config
```

Xのログを確認すると、304DPIになっていたので、強制的に96DPIに変更。

```sh:/etc/X11/xorg.conf
Section "Monitor"
     :              :
    Option         "UseEdidDpi" "FALSE"
    Option         "DPI"        "96 x 96"
EndSection
```

直った。

```sh:/var/log/Xorg.0.log
[  4160.964] (**) NVIDIA(0): DPI set to (96, 96); computed from "DPI" X config option
```

# 空冷ファンの制御
頻繁に突然電源が落ちてしまうので熱暴走が怪しいとみて調査開始。

_1. 温度センサーのインストール_

```sh:root作業
# mount /media/CentOS
# mount /media/CentOS2
# yum --disablerepo=\* --enablerepo=c6-media install lm_sensors lm_sensors-libs lm_sensors-devel lm_sensors-sensord
# sensors-detect
(すべてリターン)
# chkconfig --add lm_sensors
# service lm_sensors start
# sensors
applesmc-isa-0300
Adapter: ISA adapter
Master :       0 RPM  (min = 2000 RPM)
temp1:       +47.5°C                                    
temp2:       +46.2°C                                    

coretemp-isa-0000
Adapter: ISA adapter
Core 0:      +46.0°C  (high = +105.0°C, crit = +105.0°C)  
Core 1:      +45.0°C  (high = +105.0°C, crit = +105.0°C)  
```

_2. ファン制御ツールのインストール_

負荷をかけているとファンが回ったり回らなかったりで、ついには100℃を超えてもファンが回らない状況が発生して電源が落ちていた。ファンを強制的に回したいが、そういうツールはなさそうなので温度に応じて制御するソフトをインストールする。

[macfanctld](https://github.com/MikaelStrom/macfanctld)をzipファイルでダウンロードしてビルド。

```sh:root作業
# unzip macfanctld-master.zip
# cd macfanctld
# make
# cp -p macfanctld /usr/sbin/
# cp -p macfanctl.conf /etc/
# chown root:root /usr/sbin/macfanctld
# chown root:root /etc/macfanctld.conf
```

サービスとして自動起動を設定しておく。

```sh:/etc/rc.d/init.d/macfanctld
#!/bin/bash
#
# macfanctld     Startup script for macfanctld.
#
# chkconfig: 12345 95 05
# description: Macfanctld is a fan controller for Mac mini.
NAME=macfanctld

# Source function library.
. /etc/init.d/functions

RETVAL=0
PIDFILE=/var/run/$NAME.pid

prog=$NAME
exec=/usr/sbin/$NAME
lockfile=/var/lock/subsys/$prog

# Source config
if [ -f /etc/sysconfig/$prog ] ; then
    . /etc/sysconfig/$prog
fi

start() {
	[ -x $exec ] || exit 5

	umask 077

        echo -n $"Starting $NAME: "
        daemon --pidfile="$PIDFILE" $exec $MACFANCTLD_OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch $lockfile
        return $RETVAL
}
stop() {
        echo -n $"Shutting down $NAME: "
        killproc -p "$PIDFILE" $exec
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f $lockfile
        return $RETVAL
}
rhstatus() {
        status -p "$PIDFILE" -l $prog $exec
}
restart() {
        stop
        start
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        restart
        ;;
  status)
        rhstatus
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|status}"
        exit 3
esac

exit $?
```

```sh:root作業
# chkconfig --add macfanctld
# service macfanctld start
```

サービスは起動しているが、何故か静かに温度が上がっていき、100度を超えたところで本体を「バン」と叩くとファンが回り始めて急速に温度が下がった．．．


以上