ド初心者がCentOS8のセットアップを頑張った話（手順メモ


デスクトップ・開発(blender-python3.7,　一応(ゲームエンジンの)unity for linux)用途でCentOS 8を使いたい。
LAN外に公開はしない（ルーター側でWAN->LANのポートマッピングをしない)
ほぼ初めて(5-10年ほど前に大学のサークルでちょっと使った程度)
やることリスト

1. インストール前に最新BIOSにupdate(RDRANDが死んでるRyzen3 ASRock X570 Pro4 (BIOSv1.0)なので)
2. パーティション(NVME m2 512GB一本のみ)　
    - MBR デフォルト
    - /boot 1GB（もあれば余裕？今でカーネルが100MB位?
    - /(root)) 128GB
    - /home のこり(400GB位？)
    - /swap 4GB（RAM32GBもあれば…
3. selinux
     - /etc/selinux/config
       - ~~SELINUX = permissive (警告だけにする)~~
    - setsebool -P antivirus_can_scan_system 1 (selinuxにウイルススキャンを許可する(clamAV))
4. 管理者アカウント
    - sudo adduser adminhoge #途中でパスワードを聞かれる
    - sudo adduser adminhoge wheel
5. 普段使いアカウント 
    - adduser userhoge　#途中でパスワードを聞かれる

6. nvidiaDriver install
      (https://qiita.com/kkk627/items/9ab959421804341f215e)
      dnf update(カーネルソース(kernbel-devel)とカーネルがあってないとダメ)
      1. dnf groupinstall "Development Tools"
      2. dnf install libglvnd-devel elfutils-libelf-devel
      2. /etc/modprobe.d/blacklist-nouveau.conf
         - blacklist nouveau 
         - options nouveau modeset=0 
         - blacklist lbm-nouveau
      3. mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img
      #backup with nouveau.img
      4. dracut --omit-drivers nouveau /boot/initramfs-$(uname -r).img $(uname -r)
      #make no nouveau.img
      5. reboot
      os 選択モードでa->e quiet 後ろに(スペース)３->ctrl x
      6. sudo init 3 #CUI mode
      7. bash NVIDIA-Linux-x86_64****.run   : y->n
      8. nvidia-drm.modeset=1 GRUBに追記してgrub2-update(https://wiki.archlinux.jp/index.php/NVIDIA)
        ->これをしないとログインすると権限不足？でドライバが落ちて画面が真っ暗、復帰負荷になる
      8. reboot


4. 編集 > vm.swappiness = 10 > /etc/sysctl.conf #swap抑制
4. yum install epel-release
5. dnf install dnf-automatic zsh 
   dnf install java-11-openjdk.x86_64
6. clamAV 設定
   - dnf install clamav clamav-{update,scanner-systemd}
   - sed -i '/^Example/s/^/#/' /etc/freshclam.conf
   - add above default : DatabaseMirror db.jp.clamav.net > /etc/freshclam.conf
   - sed -i '/^NotifyClamd/s/^/#/'  /etc/clamd.d/scan.conf
   - add # -> User clamscan　 /etc/clamd.d/scan.conf #to root execute
   - freshclam
   - ln -s /etc/clamd.d/scan.conf /etc/clamd.conf #リンクを張る
   - sed -i '/^Example/s/^/#/' /etc/clamd.conf
   - sed -i '/TCPSocket/s/^#//' /etc/clamd.conf
   - sed -i '/TCPAddr/s/^#//' /etc/clamd.conf
   - sed -i '/clamd.sock/s/^#//' /etc/clamd.conf
   - 編集 > [Service] TimeoutSec=5min > /lib/systemd/system/clamd@.service #起動がクソ遅い時に死ぬのでタイムアウトを伸ばす
   - cronの日次実行スクリプトディレクトリにclamdscan.shを追加する
    
        - nano /etc/cron.daily/clamdscan.sh

      ```
      #!/bin/bash
      #設定ファイル
      CONFIG=/etc/clamd.d/scan.conf
      スキャン実行
      clamdscan -c ${CONFIG}
    ```   
   chmod +x /etc/cron.daily/clamdscan.sh
   systemctl enable clamd@scan
   systemctl start clamd@scan
   systemctl status clamd@scan
   (https://inaba-serverdesign.jp/blog/20170913/clamav_scan_virus_install.html)
   (https://qiita.com/bezeklik/items/4696e15c889ffff6bc41)

7. webからinstall：Google-chrome vscode　(&minecraft client)
6. いる? ./zshrcに　https://news.mynavi.jp/article/zsh-10/　

     ここからsudo vscodeで作業
 - vscodeに下記をinstall
      - ms-ceintl.vscode-language-pack-ja
      - coenraads.bracket-pair-colorizer
      - ms-python.python
 - Ctrl+Shift+P ->configure display language ->「en」 と表記されている部分を 「ja」 に変更

7. dnf-automaticだが、カーネルアップデートは手動にしたい、updateはセキュリティ系のみ
    - 編集 excludepkgs=kernel* > /etc/dnf/automatic.conf 
    - 編集 apply_updates = yes > /etc/dnf/automatic.conf
    - 編集 upgrade_type = security > /etc/dnf/automatic.conf
    - systemctl enable dnf-automatic.timer
    - systemctl start dne-automatic.timer
 

9. (http://tooljp.com/linux/Redhat7/faqRedhat7/html/what-is-virbr.html)
  なんか仮想LANが勝手に湧いてるので潰す。
    - dnf install libvirt-client.x86_64
    - virsh net-list --all
    - virsh net-autostart default --disable
9. sshd
  - /etc/ssh/sshd_config
      - 編集 PrtmitRootLogin no 
      - 編集 Port 55000 (49152以降)
  - firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="55000" accept"
  - firewall-cmd --remove-service=ssh --zone=public --permanent #(22番は閉める)
  - service sshd restart
  - firewall-cmd --reload
  - /etc/hosts.allow
      - sshd:192.168.1. #192.168.1.0-255のみ許可
  - /etc/hosts.deny
      - ALL:ALL
  - clientで
      - ssh-keygen -t rsa -b 4096 -C "example_icyp" 
      (https://qiita.com/suthio/items/2760e4cff0e185fe2db9)
      - ssh-copy-id -i id_rsa.pub -p 55000 exampleuser@192.168.1.1
      - ssh config host: 192.168.1.? ,鍵の場所、ポート
  - cat /.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  - chmod 600 authorized_keys #所有者rw可能
  - /etc/ssh/sshd_config
      - PubkeyAuthentication yes 
      - PasswordAuthentication no 
      - PermitEmptyPasswords no 
      - ChallengeResponseAuthentication no
      - IgnoreRhosts　yes
   - systemctl restart sshd
 10. py -3.7 -m venv py37env
 11. dnf  install mesa-libGLU-devel.x86_64 
        - がないと、unityが起動しなかった
        - ln -s /etc/ca-certificates/extracted/ca-
        - bundle.trust.crt /etc/ssl/certs/ca-certificates.crt
            -証明書名？が変わってるっぽくてunityがコンパイルエラーを吐いていた（v2018.4) のでリンクしてみた。
 11. chmod u+x ~/Downloads/UnityHubSetup.AppImage
     ./UnityHubSetup.AppImage
12. 日付 gsettings set org.gnome.desktop.interface clock-show-date true
13. ウインドウのボタン gsettings set org.gnome.desktop.wm.preferences button-layout appmenu:minimize,maximize,close




　/etc/sudoersに　
%wheel  ALL=(ALL)       ALL
が
あることをよーく確認して
groups -> username wheel

となっていることをよーくよくよく確認して

 sudo passwd -l root #rootﾛｸﾞｲﾝ封じ
（ここで爆死した、死ぬかと思った USBからレスキューでごちゃごちゃしてたらsudo できるようになった。
 しかしclamdscanがsudoしないと動かない、どうしよう。

### ps.
dnf install pv
### ps.
 > https://qiita.com/takanemu/items/90ea4b938a979b0990b3

.xprofileに書いても動かなかったので、.bashrcに書いた。キャッシュをRAMDiskにする。freedesktop.orgに準拠してれば対応してくれるらしい（chromeとか

### ps. dual boot with windows
 
#####/etc/adjtime

```
UTC -> LOCAL
```

### キャッシュディレクトリの指定
```~/.bashrc

export XDG_CACHE_HOME=/dev/shm/.cache-$(whoami)
mkdir -p ${XDG_CACHE_HOME}
chmod 700 ${XDG_CACHE_HOME}
```