CentOS 7を入れてみる。
従来からディスクトップはwindows/MacOSX。計算リソースをLinuxと想定してますので、いわゆる最小環境で構築してみます。
まずは、OSのインストールから。
ネットワーク設定 メモ zfs XDMCP CentOS/repo
CentOS7のディストリビューターが提供しているkernelではなく、http://elrepo.org/tiki/HomePageが提供しているkernelを使ってみる
まずはELRepoのリポジトリをインストールします
[root@centos7 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@centos7 ~]# yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
(RHEL8系なら)
yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
(RHEL9系なら)
yum install https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm
「/etc/yum.repos.d/elrepo.repo」が置かれて、これには elrepo, elrepo-testing, elrepo-kernel, elrepo-extras なリポジトリが記載され、elrepoのみが有効.
っで elrepo-kernelリポジトリで提供されているパッケージは下記で確認出来て、「kernel-lt」と「kernel-ml」がある.
「kernel-lt」は長期サポート版 長期サポート版って言っても kernel.org では複数の長期サポート版があって、そのなかの1つだけが選ばれている
「kernel-ml」はmain linestable版. main linestable版って実は他にあるstable版よりも最新版で出来立てのカーネル. 「長期サポート」ほどこなれてない枯れてないカーネル. だから不安定って訳ではない. バグもあるだろうが、それは他のカーネルとして同じ.
[root@centos7 ~]# yum list available --disablerepo=* --enablerepo=elrepo-kernel
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* elrepo-kernel: ftp.ne.jp
Available Packages
kernel-lt.x86_64 5.4.240-1.el7.elrepo elrepo-kernel
kernel-lt-devel.x86_64 5.4.240-1.el7.elrepo elrepo-kernel
kernel-lt-doc.noarch 5.4.240-1.el7.elrepo elrepo-kernel
kernel-lt-headers.x86_64 5.4.240-1.el7.elrepo elrepo-kernel
kernel-lt-tools.x86_64 5.4.240-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 5.4.240-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 5.4.240-1.el7.elrepo elrepo-kernel
kernel-ml.x86_64 6.2.11-1.el7.elrepo elrepo-kernel
kernel-ml-devel.x86_64 6.2.11-1.el7.elrepo elrepo-kernel
kernel-ml-doc.noarch 6.2.11-1.el7.elrepo elrepo-kernel
kernel-ml-headers.x86_64 6.2.11-1.el7.elrepo elrepo-kernel
kernel-ml-tools.x86_64 6.2.11-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 6.2.11-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 6.2.11-1.el7.elrepo elrepo-kernel
perf.x86_64 5.4.240-1.el7.elrepo elrepo-kernel
python-perf.x86_64 5.4.240-1.el7.elrepo elrepo-kernel
[root@centos7 ~]#
「kernel-ml」版を使ってみる.
[root@centos7 ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@centos7 ~]# cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 525.105.17 Tue Mar 28 18:02:59 UTC 2023
GCC version: gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
[root@centos7 ~]# yum list installed |grep "^kernel"
kernel.x86_64 3.10.0-1160.el7 @anaconda
kernel-devel.x86_64 3.10.0-1160.el7 @anaconda
kernel-headers.x86_64 3.10.0-1160.el7 @anaconda
kernel-tools.x86_64 3.10.0-1160.el7 @anaconda
kernel-tools-libs.x86_64 3.10.0-1160.el7 @anaconda
[root@centos7 ~]# yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel
[root@centos7 ~]# yum --enablerepo=elrepo-kernel swap kernel-tools-libs kernel-ml-tools-libs
[root@centos7 ~]# yum --enablerepo=elrepo-kernel install kernel-ml-tools
[root@centos7 ~]# yum list installed |grep "^kernel"
kernel.x86_64 3.10.0-1160.el7 @anaconda
kernel-devel.x86_64 3.10.0-1160.el7 @anaconda
kernel-headers.x86_64 3.10.0-1160.el7 @anaconda
kernel-ml.x86_64 6.2.11-1.el7.elrepo @elrepo-kernel
kernel-ml-devel.x86_64 6.2.11-1.el7.elrepo @elrepo-kernel
kernel-ml-tools.x86_64 6.2.11-1.el7.elrepo @elrepo-kernel
kernel-ml-tools-libs.x86_64 6.2.11-1.el7.elrepo @elrepo-kernel
[root@centos7 ~]# yum remove kernel-devel
[root@centos7 ~]# yum list installed |grep "^kernel"
kernel.x86_64 3.10.0-1160.el7 @anaconda
kernel-headers.x86_64 3.10.0-1160.el7 @anaconda
kernel-ml.x86_64 6.2.11-1.el7.elrepo @elrepo-kernel
kernel-ml-devel.x86_64 6.2.11-1.el7.elrepo @elrepo-kernel
kernel-ml-tools.x86_64 6.2.11-1.el7.elrepo @elrepo-kernel
kernel-ml-tools-libs.x86_64 6.2.11-1.el7.elrepo @elrepo-kernel
[root@centos7 ~]# awk -F\' '$1=="menuentry " {print $2}' /boot/efi/EFI/centos/grub.cfg
CentOS Linux (6.2.11-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-94b619334e744f8883de4bb66b89e9c6) 7 (Core)
[root@centos7 ~]#
[root@centos7 ~]# grub2-set-default "CentOS Linux (6.2.11-1.el7.elrepo.x86_64) 7 (Core)"
[root@centos7 ~]# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
[root@centos7 ~]# reboot
再起動後
[root@centos7 ~]# uname -r
6.2.11-1.el7.elrepo.x86_64
[root@centos7 ~]#
動作がすっごい早い. だが「WARNING: CPU: 0 PID: 0 at arch/x86/mm/pat/set_memory.c:644 __change_page_attr_set_clr+0x12aa/0x1420」とABRTが来る
間違ってタイムゾーンを日本以外にした場合の変更方法
timedatectl set-timezone Asia/Tokyo
とある計算機でブートシーケンスの途中で「i8042 No controller found」と表示されてフリーズしてしまった.
grubで「systemd.unit=rescure.target」としてシングルモード起動を試みたがこれも駄目.
はじめ「i8042 No controller found」に注目して色々調べたがどうやら関係ないみたい.
結果は単にVGAの問題のようでgrubに「nomodeset」を加えたら無事起動した. ただstartxしても800x600なので
恒久的対策としては
「/etc/default/grub」にて「GRUB_CMDLINE_LINUX」項目に「nomodeset」と「video=1920x1080」を加え下記を実行する
[root@c ~]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet nouveau.modeset=0 rd.driver.blacklist=nouveau nomodeset video=1920x1080"
GRUB_DISABLE_RECOVERY="true"
[root@c ~]#
(BIOSなら)
[root@c ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
(UEFIなら)
[root@c ~]# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
使っているパスワード暗号化アルゴリズムが古いDESだから
「/etc/sysconfig/authconfig」にて「PASSWDALGORITHM=descrypt」だと起こるようで、
「authconfig --passalgo=sha512 --update」で更新させます
これで「PASSWDALGORITHM=sha512」となって回避されるかと.
ログ記載を無効にしたいなら「nmcli radio wifi off」を実行
[root@d ~]# nmcli d
DEVICE TYPE STATE CONNECTION
enp3s0 ethernet connected eno25
wlp6s0 wifi disconnected --
p2p-dev-wlp6s0 wifi-p2p disconnected --
eno1 ethernet unavailable --
enp7s0 ethernet unavailable --
lo loopback unmanaged --
[root@d ~]# nmcli radio wifi off
[root@d ~]# nmcli d
DEVICE TYPE STATE CONNECTION
enp3s0 ethernet connected eno25
eno1 ethernet unavailable --
enp7s0 ethernet unavailable --
wlp6s0 wifi unavailable --
p2p-dev-wlp6s0 wifi-p2p unavailable --
lo loopback unmanaged --
[root@d ~]#
単にdmesgを実行すると下記のように「1976528.543195」な表記となる. これではいつのことなのか不明
[saber@c ~]$ dmesg |tail -n 5
[1976528.543195] fuse init (API version 7.27)
[2089193.412175] RPC request reserved 200 but used 268
[2384452.495402] nfs: server qnap not responding, timed out
[2384630.169188] NFS: state manager: check lease failed on NFSv4 server qnap with error 13
[2759081.473780] RPC request reserved 200 but used 268
[saber@c ~]$
っで「dmesg -T」とすると一応いつのことなのかが分かる
[saber@c ~]$ dmesg -T|tail -n 5
[Mon May 10 02:54:31 2021] fuse init (API version 7.27)
[Tue May 11 10:12:16 2021] RPC request reserved 200 but used 268
[Fri May 14 20:13:15 2021] nfs: server qnap not responding, timed out
[Fri May 14 20:16:13 2021] NFS: state manager: check lease failed on NFSv4 server qnap with error 13
[Wed May 19 04:17:04 2021] RPC request reserved 200 but used 268
[saber@c ~]$
まず authconfig で「pam_access」を有効にします
authconfig --enablepamaccess --update
有効になったかの確認は「authconfig --test」で出来ます. 「pam_access is enabled ()」という行があればok.
次に誰を許可するかを定義します. 定義を記載するファイルは「/etc/security/access.conf」
最低限rootは入れますが、network経由はダメで、コンソールとかならokとするなら
+:root:LOCAL
-:ALL:ALL
とする. ただこれでは、root以外のユーザはログインできない. 特定ユーザのネット経由のログインを許可するなら
+:illya:ALL
+:root:LOCAL
-:ALL:ALL
もしグループで許可するなら
+:fgo:ALL
+:root:LOCAL
-:ALL:ALL
とする.
「/etc/ssh/sshd_config」で縛る方法もあるけど、こちらはコンソールのみとか特定のfromのみとかの定義が可能
メインのグループでなくても適用されます.
*注意: rootを外すとcronがエラーになります
「/etc/sysctl.conf」に下記を加える
kernel.dmesg_restrict = 1
OSインストール時に「Install CentOS 7」を選んでTabキーを押下する。
すると
> vmlinux initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quit
と表記される。この文字列の最後に「biosdevname=0 net.ifnames=0」を加える
> vmlinux initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 biosdevname=0 net.ifnames=0
これで行ける. ただこれはOS側が認識するnicの出現順であってnicカードの追加で容易に変化する.
なので利用は仮想サーバに限定かな
ここに最新のCentOSのインストーラーがある。
http://ftp.riken.jp/Linux/centos/7/isos/x86_64/
完全版(DVD)やスペシャルパック版(Everything)みたいなのがある。
CD/USBでブートしてOSコンテンツはネット経由で引き出すのもある(NetInstall)。
ここでは最小構成の環境で構築して、必要な追加品はネット経由で取得したいので Minimal版(566 MB) を使用する。
入手したisoファイル
CentOS-7.0-1406-x86_64-Minimal.iso(566 MB)
通常ならCentOS-7.0-1406-x86_64-Minimal.isoをDVD/USBメモリーに焼いて、それを使って起動させます。
仮想環境でテスト目的ならisoファイルをそのまま使うことになる。起動直後に
と表示される。ここでは「Install CentOS 7」を選択する。すると画面解像度「800x600」で「CENTOS 7 INSTALLATION」画面が表示され、手始めに使用する言語を選択して「続行」ボタンをクリックします。
次に表示された「インストールの概要」画面で各種のインストール定義を行う。
「日付と時刻」「キーボード」「言語サポート」らの項目は既定で構わない。
*万が一、キーボードのレイアウトが異なるのなら「キーボード」リンクを選択して適切なキーボードを選ぶ。既定では日本語選択時は日本語106キーボードみたい。
「インストールソース」は、DVDから起動しているのでそのままの「ローカルメディア」でOK。
「ソフトウエアの選択」は、OSをどのような構成でインストールするかが問われる。ここでは目的の「最小限のインストール」で十分なのだが、そのほかにもディスクトップ環境を提供する選択肢もある。
次に、この画面で不十分とされた「インストール先」リンクをクリックして、HDDのパーティションを定義します。
ここでは8GBのHDDに/boot(512MB)、swap(1024MB)、/(ルート)(残り全部)の3領域を作る。表示された「インストール先」画面の「パーティション構成」選択肢で「パーティション構成を行いたい」を選択して、画面上部の「完了」ボタンをクリックする。
すると画面が「手動パーティション設定」画面に切り替わる。パーティション設定スキーマとしてプルダウンから「標準パーティション」を選択する。
その後、画面下部の「+」ボタンをクリックして、
マウントポイントと割り当てサイズを指定する。
/boot
swap
/(ルート)
*割り当てる容量にサイズを記入しないと残り全てが割り当てられるみたい。
定義が完了すると下記のようなHDDレイアウトになる。画面上部の「完了」ボタンを押して「手動パーティション設定」を終わらせる。
すると、HDDに対する作業一覧が表示される。ここで「変更を適用する」ボタンを押すと、定義したパーティションの作成が行われる。
再び、「インストールの概要」画面に戻る。
次に「ネットワークとホスト名」リンクをクリックしてマシンのIPアドレス、ホスト名を定義します。
表示された「ネットワークとホスト名」画面にて、右下の「設定」ボタンをクリックする。
ここではNICのデバイス名はens192であるが、不定の模様。表示されたens192の設定画面にて、「全般」タグを開く、ここで「この接続が利用可能になった時は自動的に接続する」を有効にする。
次に、「IPv4のセッティング」でDHCPか固定IPを定義して「保存」ボタンをクリックします。すると「ネットワークとホスト名」画面にて指定したIPの概要と同時にこのens192が利用可能であるスイッチが入る。
それと同時に、ホスト名も自動補完されるみたい。
これで「ネットワークとホスト名」画面の左上の「完了」ボタンを押す。
再び「インストールの概要」画面に戻る。
これでインストールに必要な情報がまとまったので、左下の「インストールの開始」ボタンを押してOSのインストールを行わせます。
インストールが開始されると、直後にrootかユーザの作成を求められる。ユーザを作りsudoでroot権限を得て管理者面を行使するのもありだけど、ここはrootを作りました。
インストールが完了すると下図の知らせが表示される。「再起動」ボタンを押して完了となる。
VMwareESXiでCentOSをインストールすると設定画面が小さくて、他の設定項目が見辛いときがある
ブートファームウエアが、BIOSならこうなるみたい。画面サイズは800x600。
だけど、EFIなら自動調節してくれるみたい
ブートファームウエアが、BIOSのままでESXiの画面サイズを大きくするには、
インストールメディアの起動途中で、「Install CentOS Linux 7」を選択して、
「Tab」ボタンを押下します。すると画面下にブートコマンドが表示される
このコマンドの最終行に「resolution=1024x678」をキーボードで追加入力してリターンキーを押下します
すると、ESXiのインストール画面サイズが拡大して、上記の図では見えなかった「ヘルプ」ボタンが見えるようになる
*備考
「resolution=1024x678」の指定以外に「vga=773」(1024x768x8bit)、「vga=775」(1280×1024x8bit)の指定も可能
「最小構成」で構築したのでログイン画面はテキストモードである。
だが、画面が1280×768なWXGA(Wide-XGA)として表示される。VMwareだけの問題なのかも知れないが、調整を施す。
一旦仮想マシンを停止させ、「仮想マシンのプロパティ」を開き、「オプション」タブで「詳細/全般」を開く。
そこで表示されている「構成パラメータ...」ボタンをクリックして、
表示された「構成パラメータ」画面で、画面下部にある「行の追加」ボタンを押して、名前をsvga.maxWidth、値は680そしてもう一つ名前svga.maxHeight、値480の行を追加する。
「OK」ボタンをクリックして、「構成パラメータ」画面を閉じて、「仮想マシンのプロパティ」画面も「OK」ボタンをクリックして閉じる。そして仮想マシンを起動すると画面サイズ680x480のVGAなテキストログイン画面になる。
VMwareではなく、Linuxマシン側から画面サイズを変更してみる。
*vga(680x480)にはできないみたい。800x600が最低限みたい。
方法は2つある。
1.vga引数を使う
[root@c105 ~]# vi /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="vconsole.keymap=jp106 crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb quiet vga=771"
#
# *GRUB_CMDLINE_LINUXに vga=771を追加する
#
GRUB_DISABLE_RECOVERY="true"
[root@c105 ~]#
[root@c105 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
[root@c105 ~]#
2.TERMINAL_OUTPUTをgfxtermにして、GRUB_GFXMODEで解像度を渡す
[root@c105 ~]# vi /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
#
#GRUB_TERMINAL_OUTPUT="console"
#
GRUB_TERMINAL_OUTPUT="console"
GRUB_GFXMODE=640x480
# *640x480を指定しても800x600が採用される
#
GRUB_CMDLINE_LINUX="vconsole.keymap=jp106 crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
[root@c105 ~]#
[root@c105 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
[root@c105 ~]#
もしUEFIベースで構築しているのなら
[root@c105 ~]# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
とする。/boot/grub2/grub.cfgは従来のBIOS向け。UEFIなら/boot/efi/EFI/centos/grub.cfg
単純にCentOS7を最小構成でインストールして、
[root@nfs1 ~]# yum -y groupinstall "GNOME Desktop" && reboot
としたらコンソール画面に文字化けが発生してしまった。
一応、このままでもssh経由で接続は可能で、下記コマンドを実施して一時的に文字化けを解消してみる
[root@nfs1 ~]# localectl
System Locale: LANG=ja_JP.UTF-8
VC Keymap: jp106
X11 Layout: jp
[root@nfs1 ~]# localectl set-locale LANG=en_US.utf8
[root@nfs1 ~]# localectl
System Locale: LANG=en_US.utf8
VC Keymap: jp106
X11 Layout: jp
[root@nfs1 ~]# reboot
英語環境としてOSを起動し直すと下記のような文面が見えた。
どうやら2)のLicense information(License not accepted)が完了していないのが原因見たい。
なので「2」のLicense informationを選択して、次に「I accept the license agreement.」となる「2」を入力します。
これで、I accept the license agreement.が有効になりました。
続いて「c」と入力して Initial setup of CentOS Linux 7 (Core)に戻り、再び「c」を入力して完了させます。
戻って、ログイン画面になります。
ここで、localectlを元に戻す。
[root@nfs1 ~]# localectl set-locale LANG=ja_JP.utf8