CentOS 7 設定 Tips

インストール時

リポジトリの場所:

http://ftp.riken.jp/Linux/centos/7/os/x86_64/

その他:

-- GNOME とDevelopment tools くらいは入れといても良いかな。
-- Instalation destination の設定で、デフォルトではルートディレクトリ"/"に50GB、/Homeにswapなどを取った残りの容量が割り当てられるので変えておいた方が個人的には便利。

システム関連

ネットワーク設定:

#NICステータス確認
nmcli -p
ip addr

#NIC詳細情報
nmcli device
nmcli device show enpxxx

#Connection作成
nmcli c add type ethernet ifname enpxxx con-name enpxxx

#ネットワーク接続確認
nmcli networking connectivity

#プロファイル及び接続確認
nmcli connection show

#IPアドレス、サブネットマスク変更
nmcli c mod enpxxx ipv4.method manual ipv4.addresses 192.168.1.2/24 #IP,subnet
nmcli c modify enpxxx ipv4.addresses 192.168.10.100/24

#デフォルトゲートウェイ変更
nmcli c modify enpxxx ipv4.gateway 192.168.0.1

#IP固定 or DHCP
nmcli c m enpxxx ipv4.method auto

#DNS設定
nmcli c modify enpxxx ipv4.dns 8.8.8.8

#インターフェイス自動起動設定
nmcli c m enpxxx connection.autoconnect yes

#インターフェース再起動
nmcli c down enpxxx; nmcli c up enpxxx

#ネットワーク再起動
systemctl restart network

#ルーティングテーブル確認、変更
route
sudo route add -net 192.168.10.16 netmask 255.255.255.0 enpxxx
sudo route del -net 192.168.10.0 netmask 255.255.255.0 enpxxx

#port設定確認
netstat

サービス設定:

systemctl start sshd
systemctl stop sshd
systemctl restart sshd
systemctl status sshd
systemctl list-unit-files

Xilinx Software Installation

Vivado導入:

#Download the installer from Xilinx.
chmod +x Xilinx_Vivado_SDK_Web_2017.4_1216_1_Lin64.bin
sudo chmod 0777 /opt
./Xilinx_Vivado_SDK_Web_2017.4_1216_1_Lin64.bin #Do not be a root user (it's not recommended)!!
#Follow GUI, (install Vivado HL Design Suite if you have a proper licence)

#Installation of cable drivers
cd /opt/Xilinx/Vivado/2017.4/data/xicom/cable_drivers/lin64/install_script/install_drivers/
sudo ./install_drivers

#インストール後
source /opt/Xilinx/Vivado/2017.4/settings64.sh
vivado
で起動。

ISE導入:

#Download the installer from Xilinx.
tar xvf Xilinx_ISE_DS_Lin_14.7_1015_1.tar
cd Xilinx_ISE_DS_Lin_14.7_1015_1/
./xsetup
#Follow GUI, but uncheck "Install cable driver" (it'll fail anyway due to permission denied).
#インストール後
source /opt/Xilinx/14.7/ISE_DS/settings64.sh
ise
#で起動。

Platform Cable USB IIを使うための準備:

#Third partyのドライバを導入
cd /opt/Xilinx/
git clone git://git.zerfleddert.de/usb-driver
cd usb-driver
make
#put below in your .bashrc to use IMPACT
export LD_PRELOAD=/opt/Xilinx/usb-driver/libusb-driver.so
#Platform Cableを認識させるためには以下。
sudo ./setup_pcusb /opt/Xilinx/14.7/ISE_DS/ISE/
#その後、USBケーブルをさしてLEDが光れば成功。

Python 関連

計算の基本:

sudo yum install -y numpy scipy
sudo yum install -y python-matplotlib

画像解析:

sudo yum install -y python-pillow
sudo yum install -y opencv-python

Git 関連

一部ディレクトリのみclone:

git clone -b developping ssh://../../../hogehoge.git .
git config core.sparsecheckout true
echo hogehoge/ >> .git/info/sparse-checkout
git read-tree -m -u HEAD

Gitlab で”Author not in member of team…”のエラーでpushできない場合の対処法。:

git config --global user.name "yourname"
git config --global user.email "yourname@youremail.com"
#でまずユーザ設定。その後、過去のcommitに遡って上のユーザを適応させる。
git commit --amend --reset-author --no-edit
#過去に幾つもcommitしてしまっている場合は、
https://stackoverflow.com/questions/56177751/git-push-failed-with-error-gitlab-author-not-member-of-team
#を参照。

SAMBA 関連

SAMBAのインストールと有効化:

#インストール
sudo yum install samba
sudo systemctl start samba
sudo systemctl enable samba

#クライアントが自動でホストを見つけられるようにする
sudo yum install avahi
sudo systemctl start avahi-daemon
sudo systemctl enable avahi-daemon

SAMBAの設定(TimeCapsule用Volume追加):

#/etc/samba/smb.confに以下を追加
[TimeMachine]
        comment = Backup for Mac Computers
        path = /pass/to/your/directory
        writable = Yes
        browsable = Yes
        guest ok = Yes
        fruit:time machine = yes
        fruit:time machine max size = 2T

SAMBAにユーザを追加:

#登録されているユーザの確認
pdbedit -L
#ユーザの登録
pdbedit -a yourusername
[ユーザはLinuxに登録されたユーザである必要がある]

Tips

キーリピートの速度変更:

#xset r rate (delay) (repeat)
xset r rate 205 65

yumのリポジトリにEPEL/SCLを追加:

#以下の操作をしようと思ったら、枯れた Base Repo.ではキツい。
sudo yum install epel-release
sudo yum install centos-release-scl

GCC7導入:

sudo yum install devtoolset-7
#下記コマンドでgcc7を使えるようにする
scl enable devtoolset-7 bash

ROOT導入:

sudo yum install root
#画面が飛んでこない。MacintoshのXQuartzの設定に問題があるっぽいので、Macintosh上で下記を実行。
defaults write org.macosforge.xquartz.X11 enable_iglx -bool true

gv導入:

sudo yum install gv

mysql導入:

#mysql-community のリポジトリを追加
sudo yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
sudo yum install mysql-community-client

tmux導入:

sudo yum install tmux
#~/.tmux.confに以下を追加。PrefixをCtrl-bからCtrl-oへ変更
set-option -g prefix C-o
unbind-key C-b
bind-key C-o send-prefix

リモートデスクトップ導入:

sudo yum install xrdp
sudo firewall-cmd --permanent --zone=public --add-port=3389/tcp
sudo firewall-cmd --reload
sudo systemctl start xrdp
sudo systemctl enable xrdp

ソフトウェアRAID:

#fdiskを使うのはそろそろやめよう。。。
#Disk確認
grep -H "" /sys/block/*/device/model
parted -l

#パーティションテーブル作成
sudo parted /dev/sdb #partedのプロンプト起動
#使用方法
(parted) help
(parted) help [command]
#現在のパーティションテーブル確認
(parted) print
#パーティション設定
(parted) mklabel gpt
(parted) unit MiB
(parted) mkpart primary xfs 0% 100%

#ソフトウェアRAID構築
sudo mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sdb1 /dev/sdc1
cat /proc/mdstat
#Build終了後にファイルシステム構築
sudo mkfs.xfs /dev/md0

#マウントポイント作成
sudo mkdir /data
sudo chmod 0777 /data
#起動時に自動マウントするには/etc/fstabに下の行を追加
/dev/md0 /data xfs defaults 0 0

#(おまけ)UUIDを使う場合
sudo blkid
/dev/sda1: UUID="872543d7-8f94-4542-8283-a4c70e280ddd" TYPE="xfs" PARTLABEL="primary" PARTUUID="1632dd72-1dfc-475c-a68b-576f88ec5ed3"
#起動時に自動マウントするには/etc/fstabに下の行を追加
UUID=12345abcd.... /data xfs defaults 0 0

#RAIDチェック
#/etc/sysconfig/raid-check を下記のように変更
ENABLED=yes
CHECK=check
NICE=low
CHECK_DEVS="md0"
#/etc/cron.d/raid-check にこう書かれているかチェック
0 1 * * Sun root /usr/sbin/raid-check #毎週日曜1時に自動チェック開始
#自動チェックを手動で止めたいとき
cat /sys/block/md0/md/sync_action #idleではなくcheckになっているはず
echo idle > /sys/block/md0/md/sync_action

#エラー時にメール
#/etc/mdadm.confに以下の行を追加
MAILADDR something@*****.com
#sendmail設定
sudo yum install sendmail sendmail-cf sendmail-devel mailx
mail something@*****.com
Subject: test
hogehoge
.
EOT
#でメールが届けば一段階クリア。
#ダメなら何が起こったか以下のログで確認。
#因みに、champは@localhost.localdomainからのメールを弾く仕様です。gmailは問題なし。
sudo tail /var/log/maillog
#mdmonitorが生きているか確認
systemctl status mdmonitor
#テストメール送信
mdadm --monitor --test --oneshot --scan

#RAID運用コマンド
mdadm --detail /dev/md0
mdadm --detail --scan
mdadm --fail /dev/md0 /dev/sdb #ディスクに障害を発生させる
mdadm --remove /dev/md0 /dev/sdb #アレイからディスクを外す
mdadm --add /dev/md0 /dev/sdb #アレイにディスクを追加

#ディスク交換時はconfig fileに情報保存
mdadm --detail --scan > /etc/mdadm.conf

システムモニタ導入:

sudo yum install gkrellm
sudo yum install lm_sensors
sudo sensors-detect
sensors

ストレステスト:

sudo yum install stress
#CPU
stress --cpu 2 --timeout 2m
#メモリ
stress --vm 2 --vm-bytes 1G --timeout 2m

WOL設定:

#Mother boardでWOLが有効になっているか確認。
#"Power Management"とか"Wake Up Event"とかの項目あたりにあるかも(マザーボードメーカに依る)。

#設定確認
sudo ethtool enp0s31f6
#"Wake-on:" が"g"(マジックパケット)になっているか?
nmcli connection show eth0| grep 802
#"802-3-ethernet.wake-on-lan:" が"64(magic)"になっているか?

#WOL有効化
sudo nmcli connection modify eth0 802-3-ethernet.wake-on-lan magic
sudo ethtool -s net0 wol g #上の設定で勝手に有効化されているかも?
#再起動後に設定が残っているか確認すること。ダメなら下記コマンドで自動設定。
#/etc/udev/rules.d/99-wol.rulesに以下を追加
ACTION=="add", SUBSYSTEM=="net", NAME=="enp*", RUN+="/usr/sbin/ethtool -s $name wol g"

#Pythonを用いたMagic Packetの送り方
#MAC=00:01:02:03:04:05
#IPv4=192.168.1:123 (ルータを中継するとき以外はなんでも良い)
#Port=4567 (ルータを中継するとき以外はなんでも良い)
##以下の内容の実行ファイルを作って実行。
#-----------------------------------------
#!/usr/bin/env python
import socket
s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto('\xff'*6+'\x00\x01\x02\x03\x04\x05'*16, ('192.168.1.255', 7))

#Linux ether-wake を用いたMagic Packetの送り方
ether-wake 00:01:02:03:04:05

#ルータ越えはどうやってやる?
Global IPを持つ機器に向かってmagic packetを投げる。
機器には事前にUDP port=7(magic packetによく使われるポート)をフォワードするように設定。
宛先をbroadcast(255)にするとうまく行かない機器あり。
NetworkHubがMACアドレスを覚えているため、broadcastしないとうまく行かない環境も存在。。。

PCI Passthrough for Virtual Machine:

#Enabling IOMMU on boot (need to setup on the host linux).
#Edit /etc/sysconfig/grub
#Add "intel_iommu=on" for GRUB_CMDLINE_LINUX like below.
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/swap rd.lvm.lv=centos/root vconsole.font=latarcyrheb-sun16 crashkernel=auto  vconsole.keymap=us rhgb quiet intel_iommu=on"
#参考URL
https://serverfault.com/questions/743256/activate-intel-vt-d-in-the-kernel-on-centos7

Login attempt check:

journalctl _SYSTEMD_UNIT=sshd.service | egrep "Failed|Failure"

既定のEditorを変更:

#/etc/profile.d/editor.sh を作成し以下を追加
export EDITOR="emacs"

Cron configuration:

#設定確認
crontab -l
#設定削除
crontab -r
#cron設定を書いたファイルをどこかに作成(cron.conf)
#分 時 日 月 曜日 <実行コマンド>
0 */2 * * * echo "hogehoge" #2時間おきにhogehoge喋る
0,30 * * * * echo "hogehoge" #0分と30分にhogehoge喋る
0 2 * 1-5 * echo "hogehoge" #平日の夜中2時にhogehoge喋る
#上記ファイルからcron設定
sudo crontab -u root cron.conf

Rootkit Detection:

#Installation
yum install epel-release
yum install rkhunter unhide

#Update
rkhunter --update
rkhunter --propupd

#Execution
rkhunter --check --skip-keypress --report-warnings-only

問題対処

Home拡張:

##参考URL=https://icondecotter.jp/blog/2016/03/17/centos7でhomeパーティションの容量を削減してrootに割り当/

sudo mkdir /work
sudo useradd -d /work/resize -m -G wheel -p resize resize
sudo passwd resize
sudo yum install xfsdump #optional
sudo yum install psmisc #optional

##Below done by the user "resize"

cd /work
sudo xfsdump -J -L home -M drive -f home.dump /home

sudo umount /dev/mapper/centos-home
sudo fuser -km /home

sudo pvdisplay
sudo vgdisplay
sudo lvdisplay
sudo lvchange -an /dev/mapper/centos-home
sudo lvremove /dev/mapper/centos-home
sudo lvcreate -L 50G -n home centos

sudo mkfs.xfs /dev/centos/home
sudo mount /dev/centos/home
df -h
sudo xfsrestore -J -L home -f home.dump /home

sudo lvextend -l +100%FREE /dev/centos/root
sudo xfs_growfs /dev/mapper/centos-root

画面解像度が低い、変えれない:

#Core i7 8700Kのグラフィクドライバの問題?
yum install lshw
sudo lshw -c video
*-display UNCLAIMED になっている。。。
#参考URL: https://www.centos.org/forums/viewtopic.php?t=64780
#治らなかった。。。

USBデバイスが/dev/ttyUSBXとして認識されない:

#Vender/Device IDを調べる
lsusb (-t, -v)
#もしくはplug/unplugでデバイスをどう認識しているかを確認
sudo tail -f /var/log/messages
#USB機器をPCから外した状態で以下を試す
modprobe ftdi_sio
#調べたIDを以下のファイルに追加
/sys/bus/usb-serial/drivers/ftdi_sio/new_id
#接続し直すと認識されるはず。ただしrebootすれば消える。
#恒久的に変えるには、/etc/udev/rules.d/99-ftdi.rulesに以下を追加。idVendorとidProductとechoする文字列は適宜変える。
ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", RUN+="/sbin/modprobe ftdi_sio" RUN+="/bin/sh -c 'echo 0403 6001 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id'"
#rebootするか、以下のコマンドでudev設定をロード。
sudo udevadm control --reload
#unplug/plugで認識されるはず。

シリアルデバイスをユーザ権限で使用する:

#デバイスはdialoutグループに権限があるように設定されている。
ls -l /dev/ttyU*
#ユーザをdialoutグループへ追加。
sudo gpasswd -a $USER dialout
#udevで見つかるデバイスの権限を自動で書き換える。
#/lib/udev/rules.d/50-udev-default.rules内のttyXXXの0666にする。
KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout"
#を
KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout", MODE="0666"
#に変更。

USBポート番号に対応したUSBシリアルデバイスのシンボリックリンクを作成:

#/etc/udev/rules.d/90-usb-aliases.rulesを作成。以下を書く。
SUBSYSTEM=="tty",KERNELS=="1-1",SUBSYSTEMS=="usb",SYMLINK+="ttyUSB_PORT1-1"
SUBSYSTEM=="tty",KERNELS=="1-2",SUBSYSTEMS=="usb",SYMLINK+="ttyUSB_PORT1-2"
...以下、欲しい数だけ。
#各マザーボード、ケースに対応したポート番号はUSB機器をそれぞれのポートに抜き差ししてみて/var/log/messagesに現れる情報から読み取る。
Feb 19 11:39:11 localhost kernel: usb 1-4: FTDI USB Serial Device converter now attached to ttyUSB0
#と返ってきた場合、そのポートは1-4。
#ポートX-Yに機器をさせば、/dev/ttyUSB_PORT1-1でアクセスできる。

NICの名前変更:

#Xilinx Vivado の古いバージョン(e.g. 2016.2で確認)では ethX のMACアドレスでライセンスを確認するため、enp0s3などの最近のLinuxのNIC命名方法ではライセンス認証を失敗する。これに対処する方法。
#しかし、eth0 などに変えると問題が起こるソフトウェアも最近はあるらしい(仮想マシンとの通信とか)。自己責任で。
#参考URL: 大変助かった。http://zokibayashi.hatenablog.com/entry/2015/04/05/035642

/etc/default/grub 内の GRUB_CMDLINE_LINUX=",,,," に  biosdevname=0 net.ifnames=0 を足す。
(もし rhgb や quiet のコマンドがそもそも含まれているのならそれらよりも前に足さなければならない。)

#上記の設定変更をコンフィグファイルに反映させる。
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

#ネットワークの設定ファイルをリネームする。
mv /etc/sysconfig/network-scripts/ifcfg-enpXsY /etc/sysconfig/network-scripts/ifcfg-eth0
#もし中にDEVICEとNAMEの項目があるのならそれも適宜変更。
#さらに、この中にHWADDRの項目がないとうまくいきません。

#この後再起動すれば eth0 とかに変わるはず。

カーネルドライバ関連:

#カーネルドライバインストールしても読み込まれたドライバが変わらないことがある。
#initramfsに登録されているドライバが古いままになっていることが原因。
#下記コマンドで、該当ドライバの更新日時などを見て古くないかどうか確認する。
lsinitrd /boot/initramfs-3.10.0-862.3.2.el7.x86_64.img
#古い場合、下記コマンドでinitramfsを再構築。やる前にimgファイルのbackupを推奨。
dracut -f /boot/initramfs-3.10.0-862.3.2.el7.x86_64.img 3.10.0-862.3.2.el7.x86_64

Apple TimeCapsuleをマウント:

sudo mount.cifs //192.168.13.126/Data/ /Volumes/timecapsule -o pass=kouene,rw,iocharset=utf8,file_mode=0777,dir_mode=0777,sec=ntlm

ストレージ掃除:

#du コマンドは隠しファイル、ディレクトリをデフォルトでは対象としない。
du -ks .[^.]* * | sort -n
#プロセスが掴んでいるファイルシステムには存在しないファイルを探る
lsof / | sort -k7 -nr
#それでもduとdfが合わない場合、巨大なファイルがマウントポイント以下に隠されていないかチェック。

その他:

-- sshd が自動起動しなかった。systemctl disable sshd; systemctl enable sshd で直った。
-- firefoxのtabがcrashする。about:configでbrowser.tabs.remote.autostart = false、browser.tabs.remote.autostart.2 = falseにすると解決。
-- CapsLockをCtrlに。Applications->Utilities->Tweak Toolを起動。Typyng->Ctrl key positionでCaps Lock as Ctrlにチェック。
-- JavaEmbeddedFrameが消えない。
-- ModemManagerが突然USBシリアルデバイスをmodemだと思って制御し始めた(ModemManager[901]: <warn>  (ttyUSB0): port attributes not fully set と/var/log/messagesに出る)。ttyUSBXが使用不可に。yumでModemManagerを削除で解決。

– Mac から ssh する場合、Preferences->Advanced にある”Set locale environment variables on startup” のチェックを外すと system の既定の locale を使用する。幸せになれる。