設定 - SUSE Linux

提供:MochiuWiki : SUSE, EC, PCB
2021年11月24日 (水) 18:06時点におけるWiki (トーク | 投稿記録)による版 (文字列「<source」を「<syntaxhighlight」に置換)
ナビゲーションに移動 検索に移動

概要

SLE 15およびopenSUSE Leap 15.xをインストールした後に初期設定として様々なことを実行する必要がある。
ここでは、推奨事項のリストを記載する。


ブータブルUSBの作成

SUSEのISOファイルをダウンロードした後、SUSEをインストールするために、ブータブルイメージを作成する必要がある。
ブータブルストレージを作成するには、balenaEtcherventoyddコマンドを使用する。

ブータブルイメージを作成するストレージの場所

ストレージをシステムに接続する。
ブータブルイメージを作成するストレージの場所を確認するには、lsblkコマンドまたはfdiskコマンドを使用する。

以下の例では、/dev/sdcストレージの/dev/sdc1パーティションにブータブルイメージを作成する。

sudo fdisk -l

# 実行例
ディスク /dev/sdc: 14.33 GiB, 15376318464 バイト, 30031872 セクタ
ディスクモデル デュアルドライブ      
単位:1 * 512 = 512バイトのセクター
セクターサイズ(論理/物理):512バイト/512バイト
I/Oサイズ(最小/最適):512バイト/512バイト
ディスクラベルの種類:DOS
ディスクの識別子 0x3f046fe3

デバイス ブート スタート エンド セクター サイズ Id タイプ
/dev/sdc1 2048 30031871 30029824 14.3G c W95 FAT32 (LBA)


ブーターブルストレージの作成

ストレージの場所を確認した後、起動可能なイメージを作成する。

起動可能なイメージを作成するには、以下のコマンドを実行する。(このプロセスは、完了するまでに時間が掛かる)

sudo dd if=<ISOファイルのフルパス> of=/dev/<ストレージのパーティション名> status=progress


もし、SUSEのブータブルイメージの作成に問題がある場合は、以下の動画を閲覧すること。
https://www.youtube.com/watch?v=x65P-B3E_FY&t=56s

SUSEのインストール時の注意点

openSUSE / SLE

もし、インストーラがフリーズする場合は、以下の手順を実施する。

  1. DVD / BD / USBメモリからインストーラを起動する。
  2. インストール画面にて、インストーラの設定を行う。
    • UEFIを使用してインストール
      インストール画面にある[Install]にフォーカスを移動して、[e]キーを押下する。
      grubエントリから、linuxefi/boot/vmlinuzxxxで始まる行を見つけて、splash=silentの後にnomodesetを追記する。
      [F10]キーを押下して、インストーラを起動する。
    • レガシーBIOSを使用してインストール
      インストール画面にある[Install]にフォーカスを移動して、[F5]キーを押下する。
      画面下にある[nomodeset]を選択して、[Enter]キーを押下する。
      [F5カーネル]にnomodesetと表示されていることを確認する。
      [Enter]キーを押下して、インストーラを起動する。
  3. インストール完了後、リポジトリを更新してシステムをアップグレードする。
    sudo zypper refresh && sudo zypper dup
  4. OSを再起動する。
  5. 再起動後、YaSTのブートローダからnomodesetの記述を削除する。

    または、/etc/default/grubファイルから、GRUB_CMDLINE_LINUX_DEFAULT =で始まる行を見つけて、nomodesetの記述を削除する。
    以下のコマンドを実行して、GRUBを更新する。
    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  6. OSを再起動する。


SLE - 拡張機能とモジュールの選択

ライセンスの登録後、SUSE Linux Enterpriseで使用可能なモジュールと拡張機能が一覧表示される。
モジュールとは、ユーザのニーズに合わせて製品を構築できるコンポーネントのことで、無償で提供されている。
拡張機能は、製品に特定の機能を追加する。
また、拡張機能はサブスクリプションとして提供されており、登録キーを必要とする。

提供されるモジュールまたは拡張機能は、インストールの最初のステップで選択した製品に応じて異なる。
モジュールとそのライフサイクルの説明については、モジュールを選択した後に表示されるテキストを参照すること。
詳細については、Modules and Extensions Quick Startおよびリリースノートを参照してください。

モジュールの選択はインストールのスコープに間接的な影響を与える。
インストール環境と実働システムでどのリポジトリを使用できるかが定義されるからである。

SUSE Linux Enterpriseでは、次のモジュールと拡張機能が提供されている。

  • Basesystem Module(必須)
    統合インストーラ上に基本システムを追加する。
    このモジュールは、デフォルトでインストール用に選択されており、選択解除してはならない。
    依存関係: なし

  • Desktop Applications Module(必須)
    グラフィカルユーザインタフェースと重要なデスクトップソフトウェアを追加する。
    このモジュールは、標準でインストール用に選択されており、これを選択解除することは非推奨である。
    依存関係: Basesystem

  • Development Tools Module(推奨)
    ソフトウェアのコンパイルとデバッグに必要とされるコンパイラ(gccを含む)およびライブラリが含まれる。
    以前のソフトウェア開発キット(SDK)を置き換える。
    依存関係: Basesystem、Desktop Applications

  • Python 2 Module(必須)
    このモジュールには、Python 2ランタイムおよびモジュールが含まれる。
    このモジュールは、標準でインストール用に選択されており、これを選択解除することは非推奨である。
    依存関係: Basesystem

  • SUSE Cloud Application Platform Tools Module
    SUSE Cloud Application Platform製品とのやり取りを可能にするツールを追加する。
    依存関係: Basesystem

  • SUSE Linux Enterprise Workstation Extension(必須)
    オフィススイートやマルチメディアソフトウェア(例 : ミュージックプレーヤ、ビデオプレーヤ)等の追加デスクトップツールが含まれる。
    この拡張機能は、SUSE Linux Enterpriseサブスクリプションに含まれる。
    このモジュールは、標準でインストール用に選択されており、これを選択解除することは非推奨である。
    依存関係: Basesystem、Desktop Applications

  • SUSE Package Hub(推奨)
    openSUSEコミュニティが管理しているSUSE Linux Enterpriseパッケージへのアクセスを提供する。
    これらのパッケージは、L3サポート無しで配布されるため、SUSE Linux Enterpriseのサポート可能性に影響を与えることはない。
    詳細については、https://packagehub.suse.com を参照すること。
    依存関係: Basesystem


一部のモジュールでは、他のモジュールをインストールする必要が生じるため、
モジュールを選択すると、この依存関係を満たすために他のモジュールが自動的に選択される場合がある。

製品によっては、特定のモジュールと拡張機能に登録サーバが推奨マークを付けている場合もある。
推奨されたモジュールと拡張機能は、登録およびインストールのために自動選択される。
これらの推奨項目をインストールしないときは、手動で選択を解除する必要がある。


ブートローダの設定

ブートローダのquietオプションは、ブートプロセスを出力しないようにする設定である。
splashオプションはブート画面を表示するための設定である。
もし、Linux起動時にブートプロセスの情報を見る場合は、ブートローダのオプションを以下のように設定する。

splash



システムの更新

インストールした直後に、システムの更新を実行して、システムが最新の状態を保つようにする。

sudo zypper update



スナップショットの設定

まず、スナップショットを有効にするため、/etc/sysconfig/yast2ファイルにあるUSE_SNAPPER"yes"に設定されていることを確認する。

初期設定では、ルートディレクトリとホームディレクトリが同じパーティションの場合、ホームディレクトリはスナップショットには含まれない。
ホームディレクトリをスナップショットに含めるには、別のSnapper設定ファイルを作成する必要があるため、以下のコマンドを実行する。
以下のコマンドを実行すると、スナップショットの設定ファイルである/etc/snapper/configs/homeファイルが作成される。

sudo snapper -c home create-config /home


必要に応じて2つの設定ファイルを変更しなければならない。

  • /etc/snapper/configs/rootファイル
  • /etc/snapper/configs/homeファイル


ルートパーティションのスナップショットの設定を編集するため、以下のコマンドを実行する。

sudo vi /etc/snapper/configs/root
または
sudo vi /etc/snapper/configs/home


以下に、変更箇所の説明を記載する。

  • BACKGROUND_COMPARISON="yes"
    指定したディレクトリ(ルートディレクトリまたはホームディレクトリ)の新しいスナップショットを作成する時、
    Snapperはバックグラウンドで比較プロセスを実行することで、新旧ファイルを区別することができる。
    その後にSnapperが起動した時、新旧のスナップショット間の変更を表示するための時間は掛からない。

    これは、良い機能である反面、時間の経過とともにI/O処理に負荷が掛かり、十分なリソースがないとシステムが遅くなる可能性があるので、
    noに設定した方がよい。

  • NUMBER_CLEANUP="yes"
    この設定を使用すると、毎日保持するスナップショットの数を制限して、スナップショットをクリーンアップできる。
    また、NUMBER_LIMIT="50"およびNUMBER_LIMIT_IMPORTANT="10"と一緒に使用して、システムに保持するスナップショットの数をSnapperに伝える。
    NUMBER_LIMITは一般的なスナップショット向け、NUMBER_LIMIT_IMPORTANTは重要なスナップショット向け(パッケージ管理等)である。

    また、数に関係なく全てのスナップショットの数だけを保持したい場合は、NUMBER_MIN_AGEを0に設定する。(初期設定では、30分未満のバックアップは削除されない)
    これらの値については、Snapperの公式ドキュメントを参照すること。

  • TIMELINE_CREATE="yes"およびTIMELINE_CLEANUP="yes"
    この設定は、毎時スナップショットの作成とクリーニングを行う。
    Snapperは、ルートディレクトリとホームディレクトリの両方のスナップショットを1時間ごとに作成し、
    TIMELINE_LIMIT_HOURLY等で指定した値よりも古いスナップショットを自動的に削除する。
    例えば、過去24時間以内のスナップショットをすべて保持してそれ以降は削除したり、1日1個のスナップショットを保持する等、システムに指示することができる。
    これらの設定については、公式ドキュメントを参照すること。

  • EMPTY_PRE_POST_MIN_AGE="<数値(秒)>"
    zypperコマンドまたはYaST2を実行すると、実行する操作の前後にスナップショットが作成される。
    前後のスナップショットの作成は、EMPTY_PRE_POST_MIN_AGE="<数値(秒)>"で指定できる。(値は秒単位)



公式リポジトリが利用可能か確認

まず、SUSEの公式リポジトリが利用できるかどうかを確認するため、ソフトウェアのインストールを行う。
例えば、nanoをインストールする場合は、以下のコマンドを入力する。

sudo zypper install nano



PackmanリポジトリとPackman Essentialを追加

Packmanリポジトリは、SUSE用の追加パッケージを提供している。
したがって、ダウンロードしているものを理解している場合は、Packmanリポジトリを有効にする。
SUSEの公式リポジトリにほぼ依存している場合は、Packman Essentialを有効にすることをお勧めする。

※サードパーティのリポジトリには潜在的なリスクが伴う可能性があることに注意すること。

# Packman全体を有効にする場合
sudo zypper ar -cfp 90 https://ftp.gwdg.de/pub/linux/misc/packman/suse/SLE_15/ packman  # SLE 15(推奨)

sudo zypper ar -cfp 90 https://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_15.3/ packman  # SUSE 15.3 (推奨)

sudo zypper ar -cfp 90 https://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_15.2/ packman  # SUSE 15.2(推奨)

sudo zypper ar -cfp 90 https://packman.inode.at/suse/openSUSE_Leap_15.2/ packman  # SUSE 15.2(非推奨)


# Packman Essentialを有効にする場合
sudo zypper ar -cfp 90 https://ftp.gwdg.de/pub/linux/misc/packman/suse/SLE_15/Essentials/ packman-essentials  # SLE 15

sudo zypper ar -cfp 90 https://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_15.3/Essentials/ packman-essentials  # SUSE 15.3

sudo zypper ar -cfp 90 https://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_15.2/Essentials/ packman-essentials  # SUSE 15.2


Packmanリポジトリを追加した後は、システムパッケージをPackmanに切り替えること。
両方のリポジトリのパッケージが混在すると、様々な問題が発生する恐れがある。

sudo zypper dup --from packman --allow-vendor-change  # packman
または
sudo zypper dup --from packman-essentials --allow-vendor-change  # packman-essential



マルチメディアコーデックのインストール

注:これらのコーデックをインストールするには、Packmanリポジトリを有効にする必要がある。

openSUSEでは、マルチメディアコーデックがデフォルトでサポートされていない。
詳細については、公式Webサイトで読むことができる。
なお、--allow-vendor-changeオプションは、インストールされた解決可能なソフトウェアのベンダーの変更を許可する。
--no-allow-vendor-changeオプションは、外部リポジトリのパッケージをディストリビューションバージョンに変更しない場合に使用する。

まず、以下のリポジトリを追加する。

sudo zypper addrepo -f http://opensuse-guide.org/repo/openSUSE_Leap_15.1/ dvd  # SUSE 15.1
sudo zypper addrepo -f http://opensuse-guide.org/repo/openSUSE_Leap_15.2/ dvd  # SUSE 15.2


コーデックのパッケージ群を纏めてインストールするには、以下のコマンドを実行する。

sudo zypper install --allow-vendor-change x264 libx264-* libx265-* ffmpeg gstreamer-plugins-bad gstreamer-plugins-libav gstreamer-plugins-ugly gstreamer-plugins-ugly-orig-addon lame libavdevice56 libavdevice58 libdvdcss2 vlc-codecs 


コーデックを個別にインストールするには、以下のコマンドを実行する。
H264 / AVCサポートをインストールするには、以下を実行する。

sudo zypper install --allow-vendor-change x264 libx264-* libx265-* vlc-codecs


音声や動画を記録、変換、およびストリーミングする機能が必要な場合は、以下を実行して、FFmpegマルチメディアフレームワーク等をインストールする。

sudo zypper install --allow-vendor-change ffmpeg libavdevice56 libavdevice58 libdvdcss2 lame


GStreamerライブラリが必要な場合は、以下のコマンドを実行する。

sudo zypper install --allow-vendor-change gstreamer-plugins-bad  gstreamer-plugins-bad-orig-addon gstreamer-plugins-libav gstreamer-plugins-ugly gstreamer-plugins-ugly-orig-addon gstreamer-plugins-base gstreamer-plugins-good gstreamer-plugins-good-extra gstreamer-plugins-qt5 vlc-codec-gstreamer ogmtools


今後、Pacmanリポジトリから取得することを設定する。

sudo zypper dup --allow-vendor-change --from http://packman.inode.at/suse/openSUSE_Leap_15.1/  # SUSE 15.1
または
sudo zypper dup --allow-vendor-change --from http://packman.inode.at/suse/openSUSE_Leap_15.2/  # SUSE 15.2



VLC

VLCをインストールする場合、まず、VLCのリポジトリを追加する。
SUSEの公式リポジトリにもVLCは存在するが、VLCの公式リポジトリの方がパッケージの更新が早い。

# SLE 15 SP3 / openSUSE Leap 15.3 共通
sudo zypper addrepo http://download.videolan.org/SuSE/SLEap_15.3/ VLC
sudo zypper modifyrepo -r VLC


次に、VLCをインストールする。

sudo zypper install vlc


VLC Mozilla Pluginをインストールする場合、以下のコマンドを実行する。(デフォルトではインストールされない)

sudo zypper install npapi-vlc



Webブラウザのプラグイン

多くのWebサイトでは、期待どおりに機能するために様々なブラウザプラグインをインストールする必要がある。 これらのプラグインは、Webサイトの閲覧中にパフォーマンスとセキュリティに影響を与える可能性があるため、必要な場合にのみインストールすること。

オンライン動画やゲーム等のFlashサポートが必要な場合は、freshplayerpluginをインストールする。(Packmanリポジトリが必要)

sudo zypper addrepo -f http://packman.inode.at/suse/openSUSE_Leap_15.1/ packman
sudo zypper install freshplayerplugin


Javaアプレットは、ゲームや一部の国のホームバンキングなど、様々な用途に使用されている。
java-1_8_0-openjdk-pluginがインストールされていない場合は、パッケージマネージャを使用してインストールする。

sudo zypper install java-1_8_0-openjdk-plugin


Firefoxおよびその他のWebブラウザで様々なマルチメディアストリームのサポートを取得するには、xine-browser-pluginをインストールする。(Packmanリポジトリが必要)

sudo zypper install xine-browser-plugin



公式リポジトリには存在しないアプリケーションのインストール

公式リポジトリ(またはソフトウェアセンター)に存在しないアプリケーションをインストールする必要がある場合は、
FlatpakまたはSnapsを有効にするか、
他の方法にて必要なアプリケーションを簡単にインストールできる。


電力管理の改善(TLPのインストール)

システム設定から電力を管理するためのオプションがいくつかある。
ただし、ラップトップでopenSUSEを使用する場合は、バッテリーの使用量を減らしたい場合がある。
TLPをインストールすることにより、コンピュータを監視し、最適な手法を(自動的に)実装してバッテリーの寿命を最適化する。
TLPをインストールするには、以下のコマンドを実行する。

sudo zypper install tlp tlp-rdw
sudo systemctl enable tlp



.profileファイルの設定

マルチユーザモード(Run Level 3)でSUSEを起動した場合、ログインシェルの日本語表記が文字化けをする。
そこで、ログインシェルの時は英語表記にして、GUIでターミナルを使用する時は日本語表記に設定する。
したがって、ログインシェルの起動時に呼ばれる.profileファイル(ホームディレクトリに存在する)の最下行に以下の設定を追記する。

 # 使用しているシェルの種類を表示する
 echo "" 1>&2
 echo "Login Shell is $0" 1>&2
 
 # CUIで起動する時は英語表記にする
 RUNLEVEL=$(echo <ユーザのパスワード> | LANG=C sudo -S runlevel)
 MUMODE="N 3"
 if [ "$RUNLEVEL" = "$MUMODE" ]; then
    GUI=$(echo $XDG_CURRENT_DESKTOP)
    if [ -z "$GUI" ]; then
       export LANG=C
       echo 'Set $LANG is $LANG=C'
    fi
    unset -v GUI
 fi
 
 echo ""
 
 # Oracle JDKの設定
 export JAVA_HOME="$HOME/InstallSoftware/Java/jdk-15.0.1"
 export J2SDKDIR="$HOME/InstallSoftware/Java/jdk-15.0.1"
 
 # Vagrantのホームディレクトリの変更
 export VAGRANT_HOME="<Vagrantのホームディレクトリのフルパス>"
 
 # VirtualBoxの仮想マシンディレクトリの変更
 VBoxManage setproperty machinefolder <VirtualBoxの仮想マシンディレクトリのフルパス>
 </source>
<br><br>

== .bashrcファイルの設定 ==
~/.bashrcファイルに以下の設定を記述する。<br>
 # ~/.bashrcファイル
 
 # Ctrl+Dでシェルを終了しない
 set -o ignoreeof
 
 # 既存のファイルをリダイレクトで上書きしない
 set -o noclobber
 
 # ディレクトリ名だけで実行する時、cdコマンドの引数で指定したものとして実行する
 shopt -s autocd
 
  # コマンドの重複を履歴に残さない
 export HISTCONTROL=ignoredups
 
 # 空白から始めたコマンドを無視
 export HISTCONTROL=ignorespace
  
 # コマンド履歴に残さないコマンド群
 HISTTIMEFORMAT='%Y%m%d %T   ';
 export HISTTIMEFORMAT
 
 # エイリアスの設定
 alias cd='cd -P'
 alias rm='rm -i'
 alias cp='cp -i'
 alias mv='mv -iv'
 alias ls='ls -hlF --color=auto'
 alias cat='cat -n'
 alias less='less -n'
 alias clear='clear && echo -en "\e[3J"'
 alias en='LANG=C LANGUAGE=C LC_ALL=C'
 alias lgrep='ls -ahlF | grep'
 alias igrep='sudo zypper search -i --detail'
 alias repoclean='sudo zypper clean -a && sudo zypper --gpg-auto-import-keys refresh && sudo zypper refresh'
 alias nano='nano -lmS'
 alias snano='sudo nano -lmS'
 alias skate='kdesu /usr/bin/kate'
 alias startnw=' sudo systemctl stop wickedd wicked; sudo systemctl start NetworkManager'
 alias startwicked=' sudo systemctl stop NetworkManager; sudo systemctl start wickedd wicked'
 alias kde=' echo <パスワード> | sudo -S systemctl restart graphical.target'
 alias gnome=' echo <パスワード> | sudo -S systemctl restart graphical.target'
 alias udesktop='update-desktop-database $HOME/.local/share/applications'
 
 # KDE Plasmaを使用している場合
 alias plasma=' /usr/bin/kquitapp5 plasmashell; plasmashell > /dev/null 2>&1 & disown; sleep 2; exit'
 #alias plasma=" killall plasmashell; plasmashell > /dev/null 2>&1 & disown"
 
 # VS Codeをインストールしている場合
 alias scode='code --user-data-dir='<VSCodeのプロジェクトディレクトリ>''
 
 alias suse='cat /etc/SUSE-brand'
 alias sshpi='ssh <ユーザ名>@<ホスト名またはIPアドレス> -p <ポート番号> -i <暗号鍵のフルパス名>'  # Raspberry Pi向けSSH接続の設定
 alias sshxrea='sshpass -p <パスワード> ssh <ユーザ名>@<ホスト名> -p <ポート番号>'  # XREA向けSSH接続の設定
 
 # KVMをインストールしている場合
 alias startkvm='sudo systemctl restart libvirtd'
 alias stopkvm='sudo systemctl stop libvirtd && sudo systemctl stop libvirtd.socket && sudo systemctl stop libvirtd-admin.socket && sudo systemctl stop libvirtd-ro.socket'
 
 # FreeRDPをインストールしている場合
 alias rwin10='/home/ユーザ名/FreeRDP/freerdp-nightly/bin/xfreerdp /u:<仮想マシンのユーザ名> /p:<パスワード> /w:1536 /h:960 /sound:latency:400 /drive:suse,<共有するディレクトリ> /v:192.168.122.130'
 alias r2016='/home/ユーザ名/FreeRDP/freerdp-nightly/bin/xfreerdp /u:<仮想マシンのユーザ名> /p:<パスワード> /w:1536 /h:960 /sound:latency:400 /drive:suse,<共有するディレクトリ> /v:192.168.122.131'
 
 # SUSEが仮想マシンの場合
 alias mhgfs='sudo vmhgfs-fuse -o allow_other .host:/Common /mnt/hgfs'
 alias uhgfs='sudo fusermount -u /mnt/hgfs'
 
 # コマンド履歴に残さないコマンド群
 # SUSEがホストの場合
 export HISTIGNORE="fg*:bg*:history*:cd*:ls*:cat*:less*:more*:grep*:lgrep*:igrep*:startkvm:stopkvm:repoclean*:suse:which*:clear:man*:repoclean:startx*:exit:"
 # SUSEが仮想マシンの場合
 export HISTIGNORE="fg*:bg*:history*:cd*:ls*:cat*:less*:more*:grep*:lgrep*:igrep*:startkvm:stopkvm:repoclean*:suse:which*:clear:man*:repoclean:startx*:exit:mhgfs:uhgfs"
 
 # プロンプトの表示形式
 PS1='\e[0;31m\u\e[0m@\e[0;32m\h\e[0m(\t) [Path \w] \n> '
 
 # 変数FIGNOREのカスタマイズ
 # ディレクトリ名およびファイル名を設定する場合、補完対象から除外される
 export FIGNORE=.svn:${FIGNORE}
 
 # mkdirとcdを同時実行
 function mkcd()
 {
    if [ "$#" -eq 0 ]; then
       echo "Too few arguments!"
    elif [ "$#" -eq 1 ]; then
       if [ -d $1 ]; then
          echo "$1 already exists!"
          cd $1
       else
          mkdir -p $1 && cd $1
       fi
    else
       echo "Too many arguments!"
    fi
 }
 
 # カレントディレクトリに存在するディレクトリとファイルの検索
 function lgrep()
 {
    if [ "$#" -eq 0 ]; then
       echo "Please specify Regular Expression."
    elif [ "$#" -eq "1" ]; then
       OLDIFS=$IFS
       IFS=$'\n\t'
 
       for OBJECT in $(\ls -A --group-directories-first | \grep -iE "$1")
       do
          ls -AdhlF $OBJECT
       done
       unset OBJECT
 
       echo ""
 
       IFS=$OLDIFS
    else
       echo "Too many arguments!"
    fi
 }
 
 # パターンにマッチするファイル内容を検索する
 function datagrep()
 {
    if [ "$#" -eq 2 ]; then
       local IFS_BACKUP=$IFS
       IFS=$''
 
       for OBJECT in $(\find . -type f -name "${1}" -print0 | \xargs -0 \grep -inE "${2}")
       do
          echo "${OBJECT}"
       done
 
       echo ""
 
       IFS=$IFS_BACKUP
    elif [ "$#" -eq 3 ]; then
       # 第1引数で指定したディレクトリが存在するか確認する
       if [ ! -d "$1" ]; then
          echo "Not Exist Directory $1" 1>&2
          return 1
       fi
 
       local IFS_BACKUP=$IFS
       IFS=$''
 
       # 現在のカレントディレクトリを一時的に保存する
       local CURRENTDIR=$(\pwd)
 
       # 第1引数で指定したディレクトリに移動する
       cd "${1}";
 
       # 第2引数で指定したパターンを使用して検索する
       for OBJECT in $(\find . -type f -name "${2}" -print0 | \xargs -0 \grep -inE "${3}")
       do
          echo "${OBJECT}"
       done
 
       # カレントディレクトリに戻る
       cd "${CURRENTDIR}"
 
       echo ""
 
       IFS=$IFS_BACKUP
 
       unset -v OBJECT
    else
       echo "Specify Arguments." 1>&2
    fi
 
    return 0
 }
 
 # manコマンドの結果をfirefoxで閲覧
 function manh()
 {
    if [ "$#" -eq 0 ]; then
       echo "Too few arguments!"
    elif [ "$#" -eq "1" ]; then
       man --html=firefox $1 &
    else
       echo "Too many arguments!"
    fi
 }
 
 # KVMの起動
 function startkvm()
 {
    local KVM_STATUS=$(sudo systemctl status libvirtd | grep "Active:" | grep -ie "dead")
    if [ -n "KVM_STATUS" ]; then
       sudo systemctl start libvirtd
    fi
 
    local NETWORK_STATUS=$(sudo virsh net-info default | grep -ie "起動中" -ie "Active" | grep -ie "no")
    if [ -n "$NETWORK_STATUS" ]; then
       sudo virsh net-start default
    fi
 }
 
 # KVMの停止
 function stopkvm()
 {
    local NETWORK_STATUS=$(sudo virsh net-info default | grep -ie "起動中" -ie "Active" | grep -ie "yes")
    if [ -n "$NETWORK_STATUS" ]; then
       sudo virsh net-destroy default
    fi
 
    local KVM_STATUS=$(sudo systemctl status libvirtd | grep "Active:" | grep -ie "running")
    if [ -n "KVM_STATUS" ]; then
       sudo systemctl stop libvirtd libvirtd.socket libvirtd-admin.socket libvirtd-ro.socket
    fi
 }
 
 # Apache2とMySQLの起動
 function startlamp()
 {
    local APACHE2_STATUS=$(sudo systemctl status apache2 | grep -ie "Active:" | grep -ie "dead")
    if [ -n "APACHE2_STATUS" ]; then
       sudo systemctl start apache2
    fi
 
    local MYSQL8_STATUS=$(sudo systemctl status mysql | grep -ie "Active:" | grep -ie "dead")
    if [ -n "MYSQL8_STATUS" ]; then
       sudo systemctl start mysql
    fi
 }
 
 # Apache2とMySQLの停止
 function stoplamp()
 {
    local APACHE2_STATUS=$(sudo systemctl status apache2 | grep "Active:" | grep -ie "running")
    if [ -n "APACHE2_STATUS" ]; then
       sudo systemctl stop apache2
    fi
 
    local MYSQL8_STATUS=$(sudo systemctl status mysql | grep "Active:" | grep -ie "running")
    if [ -n "MYSQL8_STATUS" ]; then
       sudo systemctl stop mysql
    fi
 }
 
 # 環境変数PATHの設定
 function SetPATH()
 {
    OLDIFS=${IFS}
    IFS=$':'
    
    BEFORE_HOME='$HOME'
    AFTER_HOME=${HOME}
    PATH_NAME=$(echo ${1//${BEFORE_HOME}/${AFTER_HOME}})
    
    SLASH=$(echo ${PATH_NAME: -1:1})
    if [ ${SLASH} = "/" ]; then
        LENGTH="${#PATH_NAME}"
        let LENGTH=${LENGTH}-1
        PATH_NAME=$(echo ${PATH_NAME:0:${LENGTH}})
    fi
    
    if [ ! -d ${PATH_NAME} ]; then
        echo "No Exist Directory"
        return 1
    fi
    
    EXIST_FLAG=0
    for VALUE in ${PATH}
    do
        if [ ${VALUE} = ${PATH_NAME} ]; then
            EXIST_FLAG=1
            break
        fi
    done
    
    if [ ${EXIST_FLAG} -eq 0 ]; then
        export PATH="$PATH_NAME:$PATH"
    elif [ ${EXIST_FLAG} -eq 1 ]; then
        echo "Already Exist ${PATH_NAME} in PATH " 1>&2
    fi
    
    unset -v OLDIFS SLASH LENGTH BEFORE_HOME AFTER_HOME PATH_NAME EXIST_FLAG VALUE
    
    IFS=${OLDIFS}
    
    return 0
 }
 
 function SetLIBRARY()
 {
    OLDIFS=${IFS}
    IFS=$':'
    
    BEFORE_HOME='$HOME'
    AFTER_HOME="$HOME"
    PATH_NAME=$(echo ${1//${BEFORE_HOME}/${AFTER_HOME}})
    
    SLASH=$(echo ${PATH_NAME: -1:1})
    if [ ${SLASH} = "/" ]; then
        LENGTH="${#PATH_NAME}"
        let LENGTH=${LENGTH}-1
        PATH_NAME=$(echo ${PATH_NAME:0:${LENGTH}})
    fi
    
    if [ ! -d ${PATH_NAME} ]; then
        echo "No Exist Directory"
        return 1
    fi
    
    EXIST_FLAG=0
    for VALUE in ${PATH}
    do
        if [ ${VALUE} = ${PATH_NAME} ]; then
            EXIST_FLAG=1
            break
        fi
    done
    
    if [ ${EXIST_FLAG} -eq 0 ]; then
        export LD_LIBRARY_PATH="$PATH_NAME:$LD_LIBRARY_PATH"
    elif [ ${EXIST_FLAG} -eq 1 ]; then
        echo "Already Exist ${PATH_NAME} in PATH " 1>&2
    fi
    
    unset -v OLDIFS SLASH LENGTH BEFORE_HOME AFTER_HOME PATH_NAME EXIST_FLAG VALUE
    
    IFS=${OLDIFS}
 }
 
 # 環境変数PATHの重複を削除する
 function DeleteDuplicate()
 {
    if typeset -A &>/dev/null; then  # 連想配列が使用できるか確認する
        # 使える場合
        typeset -A _paths
        typeset _results
 
        while read -r _p
        do
            if [[ -n ${_p} ]] && (( ${_paths["${_p}"]:-1} )); then
                _paths["${_p}"]=0
                _results=${_results}:${_p}
            fi
        done <<<"${PATH//:/$'\n'}"
  
        PATH=${_results/:/}
  
        unset -v _p _paths _results
    else
        # 使えない場合はawkを使用する
        typeset _p=$(awk 'BEGIN{RS=":";ORS=":"} !x[$0]++' <<<"${PATH}:")
        PATH=${_p%:*:}
  
        unset -v _p
    fi
 }
<br><br>

== PKG-CONFIGの設定 ==
pkg-config (ver. 0.24以降)をインストールしている場合、インストールされているライブラリを検索する場所を確認するには、以下のコマンドを実行する。<br>
 pkg-config --variable pc_path pkg-config
<br>
pkg-configにパスに追加するには、環境変数<code>PKG_CONFIG_PATH</code>を設定する。<br>
環境変数<code>PKG_CONFIG_PATH</code>は、コロンで区切られた.pcファイルを検索するディレクトリのリストである。<br>
<br>
デフォルトは、libdir/pkgconfig:datadir/pkgconfigであり、<br>
libdirはpkg-configがインストールされたlibdir、datadirはpkg-configがインストールされたdatadirである。<br>
<br>
例えば、.profileファイルに記述する場合は、以下のように追記する。<br>
 vi ~/.profile
<br>
 # ~/.profileファイル
 
 # ...略
 
 export PKG_CONFIG_PATH="${HOME}/xxx/lib64/pkgconfig:$(pkg-config --variable pc_path pkg-config)"
 export PKG_CONFIG_PATH="${HOME}/yyy/share/pkgconfig:PKGCONFIG=$(pkg-config --variable pc_path pkg-config)"
 
 # ...略
<br><br>

== コマンド履歴を残さない設定 ==
ここでは、Bashを使用していることを前提に記載する。<br>
<br>
まず、.bash_historyファイルを削除する。<br>
 rm -rf ~/.bash_history
<br>
次に、現在、メモリ上に残っているコマンド履歴を削除する。<br>
 history -c
<br>
最後に、以下の設定を.bashrcファイルに追記する。<br>
 export HISTFILESIZE=0
 export HISTSIZE=0
 unset HISTFILE
<br>
設定を反映させるため、ログアウトまたは再起動する。<br>
<br><br>

== パスワードフィードバックの設定 ==
ターミナルでパスワードフィードバックを有効にする方法を記載する。<br>
<br>
まず、/etc/sudoersファイルのバックアップを作成する。<br>
 cd /etc
 sudo cp sudoers sudoers_org
<br>
次に、visudoコマンドを実行して、sudoersファイルの構成を編集する。<br>
 sudo EDITOR=nano visudo
<br>
/etc/sudoersファイルにある<code>Defaults env_reset</code>という設定を、以下のように変更する。<br>
 # 変更前
 Defaults env_reset
 
 # 変更後
 Defaults env_reset,pwfeedback
<br>
[Ctrl]キー + [o]キーを同時押下して編集内容を保存して、[Ctrl]キー + [x]キーを同時押下してNanoを終了する。<br>
<br><br>

== その他の設定 ==
==== 自動ログイン ====
* YaST
*# YaSTを起動して、[セキュリティとユーザ] - [ユーザとグループの管理]を選択する。
*# [ユーザとグループの管理]画面の[ユーザ]タブを選択して、画面右下の[熟練者用オプション]プルダウンから[ログイン設定]を選択する。
*# [ディスプレイマネージャのログイン設定]画面の[自動ログイン]にチェックを入力して、<br>[ログインするユーザ]プルダウンからユーザを選択する。
*# [OK]ボタンを押下する。
*: <br>
* 手動
*# 以下のファイルを編集する。
*#: <code>sudo vi /etc/sysconfig/displaymanager</code>
*# <code>DISPLAYMANAGER_AUTOLOGIN</code>項目において、自動ログインするユーザ名を記述する。
*#: 変更前
*#: <code>DISPLAYMANAGER_AUTOLOGIN=""</code>
*#: 変更後
*#: <code>DISPLAYMANAGER_AUTOLOGIN="<自動ログインするユーザ名>"</code>
*# Linuxを再起動して、自動ログインできるか確認する。
<br>
==== 日本語環境のインストール ====
基本的には、SUSEのインストールメディアを使用して、インストール開始時に日本語を選択することである。<br>
ただし、SUSEのLive DVDには、日本語関連のパッケージが含まれていないので、以下の手順を実行する必要がある。<br>
また、何らかの理由で、テキストモードや英語でインストールしなければならない場合でも、インストール完了後に次の手順で日本語化できる。<br>
<br>
* インストールメディアが無い場合
*# インターネットに接続する。
*# YaSTを起動して、[言語設定]を選択して、[日本語]に設定する。
*# [ソフトウェアの管理]を選択して、[View]プルダウンから[Languages]を選択する。
*# [ja 日本語]にチェックを入力して、[Accept]ボタンを押下する。
*# ibus-mozc(デフォルト)またはfcitx-mozcを選択する。
<br>
KDEのメニューの一部が英語のままの場合は、KDEのキャッシュファイル(/var/tmp/kdecache-<ユーザ名>)を削除すること。<br>
<br>
==== ホームディレクトリのディレクトリ名を英語に変更する ====
一括で変更するには、以下のコマンドを実行する。<br>
 LANG=en xdg-user-dirs-update --force
<br>
==== 日本語入力の設定 ====
インプットメソッドフレームワーク(IBusやFcitx等)と変換エンジン(ibus-mozcやfcitx-mozc等)をインストールする。<br>
(SUSEのインストール時に日本語環境を指定すると、自動的にこれらのパッケージがインストールされる)<br>
<br>
使用するインプットメソッドフレームワークを指定する場合、~/.i18nファイルの環境変数<code>INPUT_METHOD</code>を設定する。<br>
<br>
以下の例では、IBusを自動起動するように設定している。<br>
FcitxとIBusがインストールされている場合、Fcitxの方がIBusより優先度が高いため、初期設定ではFcitxが自動起動する。<br>
以下のように、IBusを設定することで、IBusを自動起動することができる。<br>
 # ~/.i18nファイル
 
 INPUT_METHOD=ibus
<br>
==== Windowsで作成したzipファイルを文字化けせずに展開する ====
<code>unzip-rcc</code>パッケージに含まれている<code>unzip</code>コマンドを使用すると、文字コードを自動判定して展開される。<br>
<br>
==== CPU緩和策の設定 ====
Intel CPUの脆弱性において、2018年1月以降、SpectreとMeltdownに始まり、同年年8月のL1 Terminal Faultに至るまで、<br>
様々なCPUサイドチャネル情報のリークが公開されている。<br>
<br> 
そこで、デプロイされた全てのソフトウェアのミティゲーションについて、ミティゲーションの動作を有効化、無効化、または制御する1つ以上のブートオプションが追加された。<br>
また、これらの緩和策は、影響を受けるCPUの自動検出も行う。<br>
<br> 
SUSEは、安全な標準設定でアップデートをリリースされているが、パフォーマンスとセキュリティのバランスをとることができないことが予想される。<br>
<br>
これらのCPU問題に関する全てのオプションを一元的に管理するmitigationsと呼ばれるブートオプションを導入している。<br>
<br>
mitigationsオプションには、以下の設定がある。<br>
* mitigations=off
*: 全てのCPUサイドチャネルの緩和は無効になる。
*: この設定は、最高のパフォーマンスを提供するがセキュリティは最低限であり、信頼されないソフトウェアおよびソースコードは実行しない方がよい。
<br>
* mitigations=auto
*: CPUの種類に基づいて検出されるため、全てのCPUサイドチャネルのミティゲーションが有効になる。
*: 自動検出は、影響を受けていない古いCPUと影響を受けていない新しいCPUの両方を処理して、透過的にミティゲーションを無効にする。
*: このオプションは、SMTを有効にしたままにしておきます。
<br>
* mitigations=auto,nosmt
*: この設定は、mitigations=autoと同じだが、必要に応じてCPUの対称的なマルチスレッドが無効になる。
*: 例えば、L1ターミナルフォルトのサイドチャネルの問題を緩和するため等。
<br>
==== マウス操作でスリープ / ハイバネートから復帰する ====
まず、マウスのデバイスID等を確認するため、以下のコマンドを実行する。<br>
以下の例では、<code>Bus 001 Device 003: ID 062a:4102 MosArt Semiconductor Corp. Wireless Mouse</code>と記載がある行から、<code>ID</code>の値を確認する。<br>
 lsusb
 
 # 出力例
 Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
 Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
 Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
 Bus 001 Device 003: ID 062a:4102 MosArt Semiconductor Corp. Wireless Mouse
 Bus 001 Device 002: ID 1a81:1004 Holtek Semiconductor, Inc. Wireless Dongle 2.4 GHZ HT82D40REW
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
<br>
マウスのデバイスファイルがあるディレクトリを確認するため、以下のコマンドを実行する。<br>
以下の例では、<code>/sys/bus/usb/devices/1-2/product:2.4G Wireless Mouse</code>と記載があるため、<br>
デバイスファイルがあるディレクトリは、<code>/sys/bus/usb/devices/1-2</code>ディレクトリである。<br>
 grep . /sys/bus/usb/devices/*/product
 
 # 出力例
 /sys/bus/usb/devices/1-1/product:Wireless Dongle
 /sys/bus/usb/devices/1-2/product:2.4G Wireless Mouse
 /sys/bus/usb/devices/usb1/product:xHCI Host Controller
 /sys/bus/usb/devices/usb2/product:xHCI Host Controller
 /sys/bus/usb/devices/usb3/product:xHCI Host Controller
 /sys/bus/usb/devices/usb4/product:xHCI Host Controller
 /sys/bus/usb/devices/usb5/product:xHCI Host Controller
 /sys/bus/usb/devices/usb6/product:xHCI Host Controller
<br>
次に、/etc/udev/rules.dディレクトリに以下のファイルを作成する。<br>
 sudo vi /etc/udev/rules.d/10-wakeup.rules
<br>
 # /etc/udev/rules.d/10-wakeup.rulesファイル
 
 ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="<IDの左側の値>", ATTRS{idProduct}=="<IDの右側の値>" RUN+="/bin/sh -c 'echo enabled > /<デバイスファイルがあるディレクトリ>/power/wakeup'"
<br>
最後に、PCを再起動する。<br>
<br>
マウス操作でスリープ / ハイバネートから復帰できるかどうか確認するには、以下のコマンドを実行する。<br>
この時、マウスのデバイスディレクトリが記載されている行において、<code>enable</code>と出力されているかどうかを確認する。<br>
 grep . /sys/bus/usb/devices/*/power/wakeup
<br>
==== ログアウト時に全てのプロセスを終了する ====
まず、/etc/systemd/logind.confファイルにおいて、以下の設定を追記する。<br>
 sudo vi /etc/systemd/logind.conf
<br>
 # /etc/systemd/logind.confファイル
 
 # User Add
 KillUserProcesses=yes
<br>
次に、PCを再起動する。<br>
<br><br>

== zypperコマンドでアップデートできない場合の対処 ==
以下のコマンドを実行する。<br>
 sudo zypper clean -a
 sudo zypper --gpg-auto-import-keys refresh
 sudo zypper refresh
<br><br>

== デスクトップエントリファイルの更新 ==
デスクトップエントリファイルにおいて、自動的に更新されない場合は、以下のコマンドを実行する。<br>
 update-desktop-database ~/.local/share/applications
 または
 update-desktop-database /usr/local/share/applications
<br><br>

== F2FSファイルシステムの使用 ==
SUSEにおいて、古いファイルシステムの多くは、セキュリティのためブラックリストとして設定している。<br>
F2FS等のファイルシステムを使用するには、SUSE向けのLinuxカーネルをユーザ自身でコンパイルする必要がある。<br>
<br>
ここでは、Linuxカーネルをコンパイルして、Linuxカーネルモジュールをインストールする手順を記載する。<br>
<br>
/usr/src/linux-<カーネルのバージョン>ディレクトリに移動して、以下のコマンドを実行する。<br>
 cd /usr/src/linux-<カーネルのバージョン>
 sudo make menuconfig
<br>
TUI画面が起動するので、[File systems] - [F2FS filesystem support]に移動して、[M]キーを押下する。<br>
TUI画面下にある[Save]を選択して、上記の設定を保存する。<br>
<br>
SUSEでにおいて、カーネルモジュールは、XZ形式に圧縮されている。<br>
圧縮を有効にするには、.configファイルに<code>MODULE_COMPRESS_GZIP=y</code>オプションまたは<code>MODULE_COMPRESS_XZ=y</code>オプションを追記する必要がある。<br>
<u>(この設定は必須ではないが、SUSEの標準では、カーネルモジュールはXZ形式に圧縮されているため)</u><br>
<br>
まず、Linuxカーネルのビルドディレクトリの.configファイルを開いて、"<u>MODULE_COMPRESS</u>"を検索する。<br>
検索した"<u>MODULE_COMPRESS</u>"の直下に、以下の設定を追記する。<br>
 sudo vi /usr/src/linux-<カーネルのバージョン>/.config
<br>
 # /usr/src/linux-<カーネルのバージョン>/.configファイル
 
 # ...略
 
 CONFIG_MODULE_COMPRESS_XZ=y
 
 # ...略
<br>
次に、Linuxカーネルをコンパイルする。<br>
 sudo make -j $(nproc)
<br>
Linuxカーネルモジュールのみをインストールする。<br>
インストールディレクトリは、/lib/modules/<カーネルのバージョン>-defaultディレクトリである。<br>
 sudo make modules_install
<br>
最後に、/etc/modprobe.dディレクトリにある60-blacklist_fs-f2fs.confファイルを、以下のように編集する。<br>
 sudo vi /etc/modprobe.d/60-blacklist_fs-f2fs.conf
<br>
 # /etc/modprobe.d/60-blacklist_fs-f2fs.confファイル
 
 # 編集前
 blacklist f2fs
 __THIS FILE MAY BE MODIFIED__
 
 # 編集後
 # blacklist f2fs
 # __THIS FILE MAY BE MODIFIED__
<br>
PCを再起動して、F2FSファイルシステムが正常にマウントできるかどうか確認する。<br>
<br>
<u>※注意</u><br>
<u>もし、VMware WorkStationをインストールしている場合は、併せて、Linuxカーネルヘッダもインストールする必要がある。</u><br>
 sudo make headers_install
<br>
Linuxカーネルモジュールのインストール後は、以下のコマンドを実行することを推奨する。(ファイル容量が膨大なため)<br>
 sudo make clean -j $(nproc)      # .configファイルを残す
 または
 sudo make distclean -j $(nproc)  # .configファイル等の設定ファイルを全て削除する
<br><br>

== シャットダウンおよび再起動の待ち時間の変更 ==
シャットダウンおよび再起動時において、"a stop job is running for 〜"と表示されて、1分30秒の待ち時間が入る場合がある。<br>
この待ち時間を変更するには、/etc/systemd/system.confファイルに、以下の設定を追記する。<br>
<br>
以下の例では、待ち時間を15秒に設定している。<br>
 sudo nano /etc/systemd/system.conf
<br>
 # /etc/systemd/system.confファイル
 
 DefaultTimeoutStartSec=15s
 DefaultTimeoutStopSec=15s
<br><br>

== その他のエラー対処法 ==
==== 起動時にWi-Fiに接続できない ====
まず、以下のファイルを作成する。<br>
以下の例では、~/InstallSoftware/StartWi-Fiディレクトリ下に作成している。<br>
 mkdir -p ~/InstallSoftware/StartWi-Fi
 vi ~/InstallSoftware/StartWi-Fi/StartWi-Fi.sh
<br>
 <syntaxhighlight lang="bash">
 # ~/InstallSoftware/StartWi-Fi/StartWi-Fi.shファイル
 
 #!/usr/bin/env bash
 
 echo '<パスワード>' | sudo -S ip link set wlan0 up
 
 echo '<パスワード>' | sudo -S systemctl disable packagekit
 echo '<パスワード>' | sudo -S systemctl stop packagekit
 
 exit


StartWi-Fiファイルに、実行権限を付加する。

chmod u+x ~/InstallSoftware/StartWi-Fi/StartWi-Fi.sh


次に、[KDEシステム設定]を起動して、[起動と終了] - [自動起動]を選択する。
[スクリプトを追加...]ボタンを押下して、上記で作成したStartWi-Fi.shファイルを選択する。

X Windowエラー

マルチユーザモード(ランレベル3)からstartxコマンドを実行すると、〜 /home/ユーザ名/.serverauth.XXXX does not existメッセージが表示される場合がある。
これを回避するには、以下に示す2種類の方法がある。

  • systemctlコマンドの使用 (推奨)
    SUSEでは、startxコマンドは非推奨であるため、以下のコマンドを実行してGUIを起動する。
    sudo systemctl start graphical.target

  • startxコマンドの編集
    /usr/bin/startxファイル(シェルスクリプト)を以下のように編集する。
    sudo vi /usr/bin/startx

    変更前
    xserverauthfile=$HOME/.serverauth.$$

    変更後
    xserverauthfile=$XAUTHORITY


一部のソフトウェアで日本語が文字化けする場合

例えば、WebブラウザでYoutubeを視聴した場合、字幕が文字化け(□□□または〼〼〼等)する時がある。
[YaST2] - [ソフトウエア管理]を選択して、arphic-uming-fontsをインストールする。

以下のコマンドを実行して、/usr/share/fonts/truetype/ipagp.ttfファイル(IPA Pゴシック)等の好みのフォントファイルにて、uming.ttcを上書きする。

sudo cp /usr/share/fonts/truetype/ipagp.ttf /usr/share/fonts/truetype/uming.ttc


OSのアップデートエラー

SUSEのアップデートを行う時、いくつかの更新パッケージをCD/DVDドライブから取得しようとしてエラーが発生する場合がある。
以下に、その例を示す。

Media source 'cd:///?devices=/dev/disk/by-id/ata-Optiarc_DVD_RW_AD-7280S' does not contain the desired medium

Please insert medium [openSUSE-20160205-0] #1 and type 'y' to continue or 'n' to cancel the operation. [yes/no] (no): yes
File './suse/x86_64/liborcus-0_10-0-0.9.2-1.1.x86_64.rpm' not found on medium 'cd:///?devices=/dev/disk/by-id/ata-Optiarc_DVD_RW_AD-7280S'                                              
Please insert medium [openSUSE-20160205-0] #1 and type 'y' to continue or 'n' to cancel the operation. [yes/no] (no): 
Problem occured during or after installation or removal of packages:
Installation aborted by user                                                                        
Please see the above error message for a hint.


上記のエラーが発生した場合、リポジトリの設定を確認して、URLがCD/DVDになっているリポジトリを無効にするか、
zypperに--no-cdオプションを付けて更新する。

sudo zypper --no-cd dup


カーネルエラー

ブート時に、以下のエラー群が出力される場合がある。
これはマザーボードのBIOSの一部がLinuxに対応していないためである。

エラー sp5100-tco : Watchdog hardware is disabled

ウォッチドッグ機能はIPMI準拠のマザーボードでのみ利用できる。
したがって、この機能が存在しない場合は、このカーネルモジュールの読み込みを無効にすればよい。
/etc/modprobe.d/sp5100_tco.confファイルを作成して、以下のように編集する。

sudo vi /etc/modprobe.d/sp5100_tco.conf

# /etc/modprobe.d/sp5100_tco.confファイル
blacklist sp5100_tco


Linuxを再起動して、設定を反映させる。

エラー do_IRQ: 〜 No irq handler for Vector

このエラーを修正するには、/etc/default/grubファイルを以下のように修正する。

sudo vi /etc/default/grub

# /etc/default/grubファイル
GRUB_CMDLINE_LINUX_DEFAULT="〜 quiet splash pci=nomsi,noaer"


ブートローダを作成して再起動する。

sudo grub2-mkcongif -o /boot/grub2/grub.cfg
sudo shutdown -r now


起動時のテキストコンソールの解像度の設定

特に、4Kディスプレイを使用する場合かつマルチユーザモード(ランレベル3)で起動する場合、起動時のテキストコンソールの解像度が最適でない可能性がある。

Grub2では、初期画面の解像度を設定することができる。
また、KMS(kernel mode setting)の解像度については、カーネルパラメータを追加することができる。
解像度の自動検出が正しくない場合は、これらの設定(Grub2とカーネルパラメータ)を設定する。

以下のように、/etc/default/grubファイルを編集する。

sudo vi /etc/default/grub


# 解像度を指定する
# 以下の例では、2560x1440(WQHD)に設定している
GRUB_GFXMODE=2560x1440

# GRUB_GFXMODEの下に記述する
GRUB_GFXPAYLOAD=keep

# カーネルパラメータ(GRUB_CMDLINE_LINUX_DEFAULT)の最後に以下の設定を追記する
GRUB_CMDLINE_LINUX_DEFAULT="... ... video=1280x1024"


設定を有効にするため、ブートローダを作成して、OSを再起動する。

sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo shutdown -r now