CentOS7にしたら従来の知識が使えなくなった。

電源ボタンの無効化

稼働中に電源ボタンを押下するとありがたく奇麗にshutdownしてくれる。
っが時に好ましくない場合がる。その時の対処。

[root@c ~]# diff -u /etc/systemd/logind.conf.orig /etc/systemd/logind.conf
--- /etc/systemd/logind.conf.orig       2017-04-13 04:57:53.000000000 +0900
+++ /etc/systemd/logind.conf    2017-09-22 18:16:51.286358116 +0900
@@ -18,7 +18,7 @@
 #KillOnlyUsers=
 #KillExcludeUsers=root
 #InhibitDelayMaxSec=5
-#HandlePowerKey=poweroff
+HandlePowerKey=ignore
 #HandleSuspendKey=suspend
 #HandleHibernateKey=hibernate
 #HandleLidSwitch=suspend
[root@c ~]#

編集して、サービスを再起動して journalctl で確認

[root@c ~]# systemctl restart systemd-logind
 
[root@c ~]# journalctl -u systemd-logind.service
 :
Sep 22 18:17:54 c.sybyl.local systemd[1]: Stopping Login Service...
Sep 22 18:17:54 c.sybyl.local systemd[1]: Starting Login Service...
Sep 22 18:17:54 c.sybyl.local systemd[1]: Started Login Service.
 :

一応実機でのテストも行うべきかと

/tmp

CentOS6ではtmpwatchがcronで動いて/tmpを定期的にお掃除してくれました。
CentOS7からはsystemdのsystemd-tmpfiles-clean.timerが担当みたい
っでその設定ファイルは /usr/lib/tmpfiles.d/tmp.conf で中身はこんな感じ

[root@c ~]# cat /usr/lib/tmpfiles.d/tmp.conf
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
 
# See tmpfiles.d(5) for details
 
# Clear tmp directories separately, to make them easier to override
v /tmp 1777 root root 10d
v /var/tmp 1777 root root 30d
 
# Exclude namespace mountpoints created with PrivateTmp=yes
x /tmp/systemd-private-%b-*
X /tmp/systemd-private-%b-*/tmp
x /var/tmp/systemd-private-%b-*
X /var/tmp/systemd-private-%b-*/tmp
 
[root@c ~]#

/tmpにファイルを作って、勝手に削除されないようにするには、/etc/tmpfiles.d に追加情報を入れる。
/usr/lib/tmpfiles.d/tmp.confはデフォルトだが、/etc/tmpfiles.dに書かれた内容が優先される
例えば、/tmp/capture_data4_...を削除外にするには

[root@c ~]# cat /etc/tmpfiles.d/tmp.conf
x /tmp/capture_*
 
[root@c ~]#

とします

gurb

CentOS6なら/boot/grub/grub.confを直接修正したりしたが、CentOS7では設定ファイルを修正して/boot/grub2/grub.cfgを更新する
設定ファイルは/etc/default/grubである

GRUB_TIMEOUT=10                                                     *起動カーネルを選ぶ、パラメータを修正するかの待ち時間
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="acpi_enforce_resources=lax selinux=0"
GRUB_DISABLE_RECOVERY="true"
GRUB_GFXPAYLOAD_LINUX=text

要注意 この設定ファイルを修正した後、grub.cfgに反映させるのだが、BIOSUEFIとでパラメータが違います

  • BIOS
    [root@s ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
  • UEFI
    [root@s ~]# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

あとgrub.cfgは見てはいいが、編集は禁止
*/etc/default/grubの変更内容が grub.cfg に書かれるので確認は行うべき

efiファイルシステムが、、

みかんせい
とある物理マシンにCentOS7をインストールしたら、/boot/efi/EFIがなんかエラー状態になっている。
一応起動・運用は可能だが、/boot/efiはread onlyとなり grub2-mkconfig で更新できない
*ブート領域を nvme で構築

[root@ccc ~]# ls -l /boot/efi/EFI
ls: /boot/efi/EFI/??w?b??.??? にアクセスできません: 入力/出力エラーです
ls: /boot/efi/EFI/yB?0E ??.??? にアクセスできません: 入力/出力エラーです
ls: /boot/efi/EFI/???sZ?;.t? にアクセスできません: 入力/出力エラーです
合計 4622064
d?????????  ? ?    ?             ?             ? ????sZ?;.t??
-r-x------  1 root root  468209194  5月  9  2083 ???S????.F??
-rwx------  1 root root 1035128140  1月 18  1984 ??%????s.?Se
d?????????  ? ?    ?             ?             ? ??w?b???.???
-r-x------  1 root root 3229622512  4月 10  2031 ?P??d??7.f7?
drwx------  2 root root       8192 12月 22 14:03 BOOT
drwx------ 22 root root       8192 12月 22 14:44 centos
d?????????  ? ?    ?             ?             ? yB?0E ??.???
[root@ccc ~]#

初めに fsck.vfat で修正を行ったが永遠と修正が走り、終わらない。
なのでこのファイルシステムごとフォーマットしなおした

[root@ccc ~]# cd /boot/efi
[root@ccc efi]# tar cvf /root/efi.tar ./EFI/BOOT/BOOTX64.EFI ./EFI/BOOT/fallback.efi ./EFI/centos/BOOT.CSV \
./EFI/centos/MokManager.efi ./EFI/centos/gcdx64.efi ./EFI/centos/grub.cfg ./EFI/centos/grubenv ./EFI/centos/grubx64.efi \
./EFI/centos/shim-centos.efi ./EFI/centos/shim.efi ./EFI/centos/fonts/unicode.pf2
 
[root@ccc efi]# cd
[root@ccc ~]# umount /boot/efi
[root@ccc ~]# mkfs.vfat -F32 /dev/nvme0n1p1
[root@ccc ~]# mount /dev/nvme0n1p1 /boot/efi
[root@ccc ~]# ls -l /dev/disk/by-uuid/            */dev/nvme0n1p1 のUUIDを確認
[root@ccc ~]# vi /etc/fstab                       */boot/efiのUUIDを編集
[root@ccc ~]# cd /boot/efi
[root@ccc efi]# tar xvf /root/efi.tar
 
[root@ccc efi]# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg    *変更可能かのテスト
[root@ccc efi]# ls -l /boot/efi/EFI/centos/grub.cfg                *タイムスタンプの更新で確認する

最小限のディスクトップ環境を作る

ベース部分は、「Minimal(CentOS-7.x-xxxx-x86_64-Minimal.iso)」で構築して、その後にディスクトップ環境を作るには

[root@c101 ~]# LANG=C yum groupinstall "GNOME Desktop"

とせよとある。っが、使いもしないlibreoffice(OpenOffice)なんて不要の極みである。
CentOS6のときにあった「Minimal Dekstop」なんで選択肢がないのが残念。
っで調べると方法があった
参照先: https://www.centos.org/forums/viewtopic.php?t=47088

[root@c101 ~]# yum groupinstall "X Window System"    
[root@c101 ~]# yum install gnome-classic-session gnome-terminal nautilus-open-terminal control-center liberation-mono-fonts
[root@c101 ~]# yum install vlgothic-fonts.noarch vlgothic-p-fonts.noarch
 
[root@c101 ~]# systemctl set-default graphical
[root@c101 ~]# reboot

合計で 66M+381M+8M = 455M の追加で最小限のディスクトップ環境が得られました

ローカルにユーザを作らせない

どうしてもroot以外のユーザを作らせたいみたい。用途によっては面倒。
っで、gnome-initial-setupを削除すれば、問われないみたい。

[root@e ~]# yum info gnome-initial-setup
(略)
名前                : gnome-initial-setup
アーキテクチャー    : x86_64
バージョン          : 3.14.4
リリース            : 5.el7
容量                : 1.0 M
リポジトリー        : base/7/x86_64
要約                : Bootstrapping your OS
URL                 : https://live.gnome.org/GnomeOS/Design/Whiteboards/InitialSetup
ライセンス          : GPLv2+
説明                : GNOME Initial Setup is an alternative to firstboot, providing
                    : a good setup experience to welcome you to your system, and walks
                    : you through configuring it. It is integrated with gdm.
[root@e ~]#
[root@e ~]# yum remove gnome-initial-setup

firstbootが「gnome-initial-setup」になったようです

cpuのクロック調整

CentOS6の時は別途ツールをインストールしていたが、CentOS7では標準で cpupower.service が用意されている。なので

[root@e ~]# systemctl enable cpupower.service
[root@e ~]# systemctl start cpupower.service

とすればいいみたい。設定は /etc/sysconfig/cpupower にある。
現在のクロックを調べるには cpupower が使えて、

[root@e ~]# cpupower frequency-info
analyzing CPU 0:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 0.97 ms.
  hardware limits: 800 MHz - 3.90 GHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 800 MHz and 3.90 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 800 MHz (asserted by call to hardware).
  boost state support:
    Supported: yes
    Active: yes
[root@e ~]#

となる

SELinuxの無効化

そろそろ無効化をやめて、飼い馴らしたいのだが.....
以前の方法(selinux=0)だと有効にならないみたい

[root@c105 ~]# vi /etc/selinux/config
SELINUX=disabled
[root@c105 ~]# reboot

Firewallの停止

一応、こちらもそろそろ停止は控えて飼い馴らしたいものだが.....いまだに使ってないです

[root@c105 ~]# systemctl disable firewalld.service

サービス一覧

各種デーモンの起動状態を示します

[root@c105 ~]# systemctl list-unit-files --type=service

enabledは自動起動デーモン
disabledは自動起動の対象になっていないデーモン

systemdのログ抑制

[root@c105 ~]# sed -i "s/#LogLevel=info/LogLevel=notice/" /etc/systemd/system.conf

*どうもcron実行時に/var/log/messagesに追記されてる感じ

時計合わせ

ntpではなく、chronyがプライマリみたい。chronyの代わりにntpを採用しても問題ないけど。

[root@c105 ~]# yum install chrony
[root@c105 ~]# cp -a /etc/chrony.conf /etc/chrony.conf.orig
[root@c105 ~]# cat <<_EOF_ >/etc/chrony.conf
server 192.168.0.3 iburst
stratumweight 0
driftfile /var/lib/chrony/drift
rtcsync
makestep 10 3
bindcmdaddress 127.0.0.1
bindcmdaddress ::1
keyfile /etc/chrony.keys
commandkey 1
generatecommandkey
noclientlog
logchange 0.5
logdir /var/log/chrony
_EOF_
[root@c105 ~]#
[root@c105 ~]# systemctl list-unit-files --type=service | grep chronyd
chronyd.service                             enabled
[root@c105 ~]# 
[root@c105 ~]# systemctl status chronyd
chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled)
   Active: inactive (dead)
 
[root@c105 ~]# 
[root@c105 ~]# systemctl start chronyd
[root@c105 ~]# chronyc sources -v

NFSサーバ

nfs-utilsをインストールして、対象のサービスを自動起動対象にして再起動。

[root@nfs1 ~]# yum install nfs-utils
[root@nfs1 ~]# systemctl list-unit-files --type=service |grep -e nfs -e rpc
auth-rpcgss-module.service                 static
nfs-blkmap.service                         disabled
nfs-config.service                         static
nfs-idmap.service                          static
nfs-idmapd.service                         static
nfs-lock.service                           static
nfs-mountd.service                         static
nfs-rquotad.service                        disabled
nfs-secure-server.service                  static
nfs-secure.service                         static
nfs-server.service                         disabled
nfs-utils.service                          static
nfs.service                                disabled
nfslock.service                            static
rpc-gssd.service                           static
rpc-rquotad.service                        disabled
rpc-statd-notify.service                   static
rpc-statd.service                          static
rpc-svcgssd.service                        static
rpcbind.service                            static
rpcgssd.service                            static
rpcidmapd.service                          static
rpcsvcgssd.service                         static
[root@nfs1 ~]#
[root@nfs1 ~]# cat <<_EOF_> /etc/exports
/Appl 192.168.0.*(rw,no_root_squash)
/home 192.168.0.*(rw)
_EOF_
[root@nfs1 ~]# exportfs -avr
[root@nfs1 ~]# systemctl enable nfs-server.service
[root@nfs1 ~]# systemctl list-unit-files --type=service |grep -e nfs -e rpc
auth-rpcgss-module.service                  static
nfs-blkmap.service                          disabled
nfs-config.service                          static
nfs-idmap.service                           static
nfs-idmapd.service                          static
nfs-lock.service                            static
nfs-mountd.service                          static
nfs-rquotad.service                         disabled
nfs-secure-server.service                   static
nfs-secure.service                          static
nfs-server.service                          enabled
nfs-utils.service                           static
nfs.service                                 disabled
nfslock.service                             static
rpc-gssd.service                            static
rpc-rquotad.service                         disabled
rpc-statd-notify.service                    static
rpc-statd.service                           static
rpc-svcgssd.service                         static
rpcbind.service                             static
rpcgssd.service                             static
rpcidmapd.service                           static
rpcsvcgssd.service                          static
[root@nfs1 ~]# reboot

NISクライアント

[root@smb ~]# yum install ypbind autofs nfs-utils
[root@smb ~]# authconfig-tui
[root@smb ~]# systemctl enable ypbind.service nfs-idmap.service autofs.service && reboot

unit

従来のinit.dにあるサービス関係がunitという概念に。
そのunitには、

  • target
  • mount
  • service
  • device

な種類があり、httpd.targetとかAppl.mountがある。
windowsみたく、これにはこれが必須で、使う前にこれが起動している事が必須とか相互の依存関係で成り立つ。
旧来のinit.dはここら辺はすべて番号でしたな。

現在適用されているtarget

従来の/etc/inittabで3(テキストモード)とか5(X11モード)とか起動モードを選べたのだが、今回から
unit枠組みのtargetにまとめられている。現在のtargetは下記より得られる。

[root@c105 system]# systemctl get-default
multi-user.target
[root@c105 system]#

単に/etc/systemd/system/default.targetが指し示すtargetが起動モードになるみたい

[root@c105 system]# ls -l /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 37  7月 21 02:29 /etc/systemd/system/default.target -> /lib/systemd/system/multi-user.target
[root@c105 system]#

init 3とかのような選ばれたrunlevel、ここではmulti-user.targetで実際にどんなサービスが起動するかは
/lib/systemd/system/、もしくは/etc/systemd/system/multi-user.targetフォルダ内で定義される。
同じ名目(multi-user.target)なら後者が優先。

/lib/systemd/system/multi-user.target.wants/

/etc/systemd/system/multi-user.target.wants/
があれば、/etc/systemd/system/multi-user.target.wants/を使用する。
*/lib/systemd/system/multi-user.target.wants/は見ない?

っで、multi-user.targetで動くサービスは下記になる。

[root@c105 ~]# ls -CF /etc/systemd/system/multi-user.target.wants
NetworkManager.service@  crond.service@       postfix.service@   sshd.service@
auditd.service@          irqbalance.service@  remote-fs.target@  tuned.service@
avahi-daemon.service@    kdump.service@       rsyslog.service@
[root@c105 ~]#

これらはすべて/usr/lib/systemd/system/からのリンクでもある。
systemctl set-default multi-user.target

target(run level)を変更する

一時だけ変えるのならisolateを使用する。CentOS6までのinit 3 とか init 5に相当かな

[root@c105 ~]# systemctl isolate graphical.target       # init 5に相当
 
[root@c105 ~]# systemctl isolate multi-user.target      # init 3に相当

恒久的に変更するなら set-default を使用する

[root@c105 ~]# systemctl set-default graphical.target
[root@c105 ~]# reboot

*再起動すれば有効になります

依存関係

[root@c105 ~]# systemctl list-dependencies
default.target
├─auditd.service
├─avahi-daemon.service
├─crond.service
(中略)
├─irqbalance.service
├─kdump.service
├─network.service
├─NetworkManager.service
(中略)
├─postfix.service
├─rsyslog.service
├─sshd.service
(中略)
├─tuned.service
├─basic.target
│ ├─firewalld.service
(中略)
│ ├─sockets.target
│ │ ├─avahi-daemon.socket
│ │ ├─dbus.socket
(中略)
│ ├─sysinit.target
│ │ ├─dev-hugepages.mount
(中略)
│ │ ├─cryptsetup.target
│ │ ├─local-fs.target
│ │ │ ├─-.mount
│ │ │ ├─boot.mount
(中略)
│ │ └─swap.target
│ │   ├─dev-disk-by\x2duuid-622ccab1\x2d15a1\x2d4665\x2da4a3\x2d61307a31b5e2....
│ │   ├─dev-disk-by\x2duuid-622ccab1\x2d15a1\x2d4665\x2da4a3\x2d61307a31b5e2....
│ │   └─dev-vda2.swap
│ └─timers.target
│   └─systemd-tmpfiles-clean.timer
├─getty.target
│ └─getty@tty1.service
└─remote-fs.target
[root@c105 ~]#

自動起動なサービス一覧

[root@c105 ~]# systemctl list-unit-files |grep "enabled"
  • サービス停止
    systemctl stop firewalld
  • サービス起動
    systemctl start firewalld
  • サービス自動起動
    systemctl enable firewalld
  • サービス自動起動停止
    systemctl disable firewalld

*特定の起動モードmulti-user.target(init 3)とかgraphical.target(init 5)を指定するなら、そのサービス(/usr/lib/systemd/system/firewalld.service)の[Install]欄、WantedBy項目に名目を記載する

[root@c105 ~]# tail -n 5 /usr/lib/systemd/system/firewalld.service
BusName=org.fedoraproject.FirewallD1
 
[Install]
WantedBy=basic.target
Alias=dbus-org.fedoraproject.FirewallD1.service
[root@c105 ~]#

acpi

qemuで仮想マシンを停止させる際に、必要なデーモン。acpi

[root@c105 ~]# yum -y install acpid

「rpm -qali」で調べるとsystemctl関係では「/usr/lib/systemd/system/acpid.service」があるみたい。

[root@c105 ~]# systemctl --no-pager --all |grep acpid
acpid.service     loaded inactive dead      ACPI Event Daemon
[root@c105 ~]#

と一応認識されている。デーモンを起動させてみる

[root@c105 ~]# systemctl status acpid.service
acpid.service - ACPI Event Daemon
   Loaded: loaded (/usr/lib/systemd/system/acpid.service; enabled)   *既に自動起動項目入り
   Active: inactive (dead)
 
[root@c105 ~]#
[root@c105 ~]# systemctl start acpid.service
[root@c105 ~]# systemctl status acpid.service
acpid.service - ACPI Event Daemon
   Loaded: loaded (/usr/lib/systemd/system/acpid.service; enabled)
   Active: active (running) since Sat 2014-07-26 01:32:09 JST; 22s ago
  Process: 4983 ExecStart=/usr/sbin/acpid $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 4984 (acpid)
   CGroup: /system.slice/acpid.service
           `-4984 /usr/sbin/acpid
 
Jul 26 01:32:09 c105.chaperone.jp systemd[1]: Started ACPI Event Daemon.
Jul 26 01:32:09 c105.chaperone.jp acpid[4984]: starting up with netlink and the input layer
Jul 26 01:32:09 c105.chaperone.jp acpid[4984]: skipping incomplete file /etc/acpi/events/videoconf
Jul 26 01:32:09 c105.chaperone.jp acpid[4984]: 1 rule loaded
Jul 26 01:32:09 c105.chaperone.jp acpid[4984]: waiting for events: event logging is off
[root@c105 ~]#

yum

CentOS6と変化なし。
epelリポジトリは下記のようにして登録する。

[root@c105 ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-0.2.noarch.rpm
[root@c105 ~]#
[root@c105 ~]#
[root@c105 ~]# sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/epel.repo

っでテスト

[root@c105 ~]# yum --enablerepo=epel list | grep "^R\."
R.x86_64                                    3.1.1-1.el7                epel
[root@c105 ~]#

groupinstallも同じで

[root@c105 ~]# yum -y groupinstall "Development Tools"

最小環境からディスクトップ環境を用意したいなら

[root@c105 ~]# yum -y groupinstall "GNOME Desktop"

マシン停止

shutdownもpoweroffもsystemctlに繋がっている。

[root@c105 ~]# ls -l /usr/sbin/shutdown /usr/sbin/poweroff
lrwxrwxrwx. 1 root root 16  7月 13 10:18 /usr/sbin/poweroff -> ../bin/systemctl
lrwxrwxrwx. 1 root root 16  7月 13 10:18 /usr/sbin/shutdown -> ../bin/systemctl
[root@c105 ~]#

telnet

まあー標準で、telnetサーバは入っていない。いまやsshが標準なのだが、慣れているので入れる。

[root@c105 ~]# yum -y install telnet-server telnet
 
[root@c105 ~]# systemctl start telnet.socket                    *起動
[root@c105 ~]# systemctl enable telnet.socket                   *自動起動へ
 
[root@c105 ~]# telnet localhost
Trying ::1...
Connected to localhost.
Escape character is '^]'.
 
Kernel 3.10.0-123.el7.x86_64 on an x86_64
c105 login:

telnet.serviceかなと思ったのだが、telnet.socketになるみたい。っでtelnet.socketのログは

[root@c105 ~]# env LANG=C systemctl status telnet.socket
telnet.socket - Telnet Server Activation Socket
   Loaded: loaded (/usr/lib/systemd/system/telnet.socket; enabled)
   Active: active (listening) since Thu 2014-07-24 17:05:05 JST; 15min ago
     Docs: man:telnetd(8)
   Listen: [::]:23 (Stream)
 Accepted: 2; Connected: 0
 
Jul 24 17:05:05 c105.chaperone.jp systemd[1]: Starting Telnet Server Activation Socket.
Jul 24 17:05:05 c105.chaperone.jp systemd[1]: Listening on Telnet Server Activation Socket.
[root@c105 ~]#

と見れる。journalctlコマンドを使うのがいいのかも知れない。。

[root@c105 ~]# env LANG=C journalctl -u telnet.socket
-- Logs begin at Tue 2014-07-22 02:30:34 JST, end at Thu 2014-07-24 17:07:04 JST. --
Jul 24 17:05:05 c105.chaperone.jp systemd[1]: Starting Telnet Server Activation Socket.
Jul 24 17:05:05 c105.chaperone.jp systemd[1]: Listening on Telnet Server Activation Socket.
[root@c105 ~]#

「journalctl -f -u telnet.socket」だと、tail -f な感じになる。「-f」は「Follow the journal」の意。
「-u」は「Show data only from the specified unit」を意味する。

開発環境のインストール

CentOS7の開発環境は、yum groupinstall developmentにて行う

[root@e ~]# yum groupinstall development

トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2017-09-22 (金) 18:20:58 (82d)