プログラミングとかLinuxとかの備忘録

プログラミング、Linuxでハマった箇所や環境構築のメモ

LinuxでのNFSサーバが自動マウントされない

問題

/etc/fstabを使用してNFSサーバを自動マウント使用とすると,起動時に

[  ***  ] A start job is running for /mnt/server (12s / 1min 32s)

と表示されてOSの起動に時間がかかり,自動マウントもされていない.
多分,システム起動時にネットワーク接続が確立されていないためマウントされなかった?

解決法1: 起動スクリプト

/etc/fstabは使用せずに,/etc/rc.d/rc.localにマウント用のコマンドを記述する

$ sudo vi /etc/rc.d/rc.local
mount -t nfs SERVER:/ /mnt/server

実行権の付与

$ sudo chmod a+x /etc/rc.d/rc.local

解決法2: autofs

インストール (CentOS7)

$ sudo yum -y install autofs

インストール (Ubuntu)

$ sudo apt-get -y install autofs

マスターファイルの編集

対象にするディレクトリとマップファイルをauto.masterの最終行に追加

$ sudo vi /etc/auto.master
/mnt   /etc/auto.mnt

マップファイルの編集

$ sudo vi /etc/auto.mnt
share1  SERVER:/share1
share2  SERVER:/share2

サービス起動

$ sudo systemctl start autofs
$ sudo systemctl enable autofs

これで,

$ cd /mnt/share1

とかするとアクセスできる.

LinuxでのLaTex環境構築方法

インストール

Fedora23

$ sudo dnf -y install texlive*
$ sudo dnf -y install latexmk
$ sudo dnf -y install texstudio

Ubuntu15.10

$ sudo apt-get -y install texlive-full
$ sudo apt-get -y install texstudio

自動ビルド設定

latexmkで楽々TeXタイプセットの薦め
を参考にlatexmkを使用した自動ビルド環境の構築を行う

以下のファイルを作成すると

$ vim ~/.latexmkrc
#!/usr/bin/env perl
$latex            = 'platex -synctex=1 -halt-on-error';
$latex_silent     = 'platex -synctex=1 -halt-on-error -interaction=batchmode';
$bibtex           = 'pbibtex';
$dvipdf           = 'dvipdfmx %O -o %D %S';
$makeindex        = 'mendex %O -o %D %S';
$max_repeat       = 5;
$pdf_mode         = 3; # generates pdf via dvipdfmx

# Prevent latexmk from removing PDF after typeset.
# This enables Skim to chase the update in PDF automatically.
$pvc_view_file_via_temporary = 0;

# Use Skim as a previewer
$pdf_previewer    = "open /Applications/Skim.app";
$ latexmk -pvc hoge.tex

とすればtexが変更された時にpdfが自動生成されるようになる

TeXstudioの設定

オプション -> TeXstudioの設定から設定を行う
まず,左下の高度なオプションの表示にチェックを入れる

一般

ビルド

  • ビルド&表示: txs:///dvi-pdf-chain
  • 既定のコンパイラ: txs:///latex

詳細なエディタ設定

ヘルプ -> TeXstudioについてで確認するとQt5版であったため

ハック/回避策

  1. 最適なディスプレイオプションの自動選択をoffにする
  2. 描画モードをQtにする

References

CentOS7にCLionをインストールする

CentOS7へのCLionのインストール方法
アップデートも同じ方法でできる

ダウンロード

JetBrains CLion — intelligent cross-platform C/C++ IDE
Download Clionからダウンロードする (有料版のみ)
(参考: JetBrainsのIDEをアカデミックライセンスで使用する

インストール

ビルドツールのインストール

$ sudo yum -y install cmake
$ sudo yum -y install gdb
$ sudo yum -y install gcc gcc-c++

ダウンロードしたファイルを解凍

$ tar -xf clion-1.1.1.tar.gz
$ mv clion-1.1.1 /usr/local/clion

初回起動・初期設定

$ cd /usr/local/clion/bin
$ ./clion.sh

アカデミックライセンスを持っているため,Clion License ActivationではJetBrains Accoutを選択し,アカウント情報を入力した

f:id:vild:20200606171003p:plain
CLion Lincense Activation

初期設定では

  • UI theme: Darcula
  • Configure CMake and debugger:
    • CMake (Use specified): /usr/bin/cmake
    • Debugger (Use specified): /usr/bin/gdb

とした(後はnext連打)

IDEの設定

  • File -> Settings -> Editor -> General -> Appearance
    • Show line numbers
    • Show whitespaces
  • File -> Settings -> Editor -> General -> Code Completion

  • Samba上にプロジェクトを置く場合
    External file changes sync may be slowを表示させないために
    File -> Settings -> Appearance & Behavior -> Notifications -> AppearanceからFile Watcher MessagesNo popupにする

CentOS7でNFSサーバを使う

インストール

minimalインストールではすでにインストールされていた.

多分,以下のコマンドでインストールできる

$ sudo yum -y install nfs-utils

ファイアウォールの設定

$ sudo firewall-cmd --add-service=nfs --permanent
$ sudo firewall-cmd --add-service=rpc-bind --permanent

$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-service
dhcpv6-client nfs rpc-bind samba ssh

共有ディレクトリの設定

/etc/exportsの設定

$ sudo vi /etc/exports
/path/to/share 192.168.1.0/24(rw,async,no_root_squash)
オプション 内容
rw 読み書きを許可する
async 非同期書き込み
no_root_squash rootをanonymousにマッピングしない

サービス起動

$ sudo systemctl start rpcbind nfs-server
$ sudo systemctl enable rpcbind nfs-server

公開状態の確認

$ exportfs
/path/to/share 192.168.1.0/24

クライアントの設定

$ sudo yum -y install nfs-utils

/etc/fstabの編集

$ sudo vi /etc/fstab
SERVER:/path/to/share    /mnt/tmp            nfs defaults    0 0

References

  1. CentOS 7 : NFSサーバーの設定 : Server World
  2. ディレクトリをディレクトリにマウント

Fedora22がシャットダウンできない

昨日(2015-09-29)から

  • CentOS7のKVM上のfedora22(mate)
  • Windows10のVirtualBox上のFedora22(mate)

がシャットダウンできない現象が起こっている
(GUIからシャットダウンするとログアウトするだけでシャットダウンされない)

コマンドから実行すると

$ sudo shutdown -h now
Failed to start poweroff.target: Access denied

Broadcast message from USER@HOST on pts/0 (...):

The system is going down for power-off NOW!

と表示されるだけで何も起こらない

ここを見るとselinuxが原因っぽいので,以下のコマンドでselinuxを無効にするとシャットダウンできる用になった

$ sudo /usr/sbin/setenforce 0

selinuxを永続的に無効にするには
以下の用にSELINUX=disabledに書き換えれば良い

$ sudo vi /etc/selinux/config
SELINUX=disabled

TigerVNCに接続できなくなった場合の対処法

クライアント: Ubuntu15.04のRemmina
サーバー : CentOS7のTigerVNC

RemminaからConnectした時にUnable to connect to VNC serverが出た

$ sudo rm -rf /tmp/.X11-unix/
$ sudo systemctl restart vncserver@:1.service

yum updateしたらkernel panicで起動しなくなった

環境

CentOS7.2上のKVM上のCentOS7.2で

状況

yum updateカーネル
3.10.0-327.22.2.el7.x86_64
から
3.10.0-327.28.2.el7.x86_64
アップデートされ,久しぶりに再起動するとKernel Panicで以下のメッセージが表示され,起動できていなかった

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
CPU: 0 PID 1 Comm: swapper/0 Not tainted 3.10.0-327.28.2.el7.x86_64
Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
...

解決法

新しいカーネル(3.10.0-327.28.2.el7.x86_64)のinitramfsが生成されていないのが原因らしい

とりあえず,古いカーネル(3.10.0-327.22.2.el7.x86_64)で起動し

$ ls -l /boot | grep initramfs
-rw-r--r--. 1 root root 57613265  5月 31 10:42 initramfs-0-rescue-1016740bf95247ae941d721fac81bcaa.img
-rw-------. 1 root root 29887789  8月  8 10:14 initramfs-3.10.0-327.18.2.el7.x86_64.img
-rw-------. 1 root root 29886600  8月  8 10:14 initramfs-3.10.0-327.22.2.el7.x86_64.img
-rw-------. 1 root root 19841024  8月  8 10:14 initramfs-3.10.0-327.el7.x86_64.img

initramfs-3.10.0-327.28.2.el7.x86_64.imgがないので,以下のコマンドで生成

$ sudo depmod 3.10.0-327.28.2.el7.x86_64
$ sudo mkinitrd initramfs-3.10.0-327.28.2.el7.x86_64.img 3.10.0-327.28.2.el7.x86_64

$ ls -l /boot | grep initramfs
-rw-r--r--. 1 root root 57613265  5月 31 10:42 initramfs-0-rescue-1016740bf95247ae941d721fac81bcaa.img
-rw-------. 1 root root 29887789  8月  8 10:14 initramfs-3.10.0-327.18.2.el7.x86_64.img
-rw-------. 1 root root 29886600  8月  8 10:14 initramfs-3.10.0-327.22.2.el7.x86_64.img
-rw-------. 1 root root 29885799  8月 19 23:07 initramfs-3.10.0-327.28.2.el7.x86_64.img
-rw-------. 1 root root 19841024  8月  8 10:14 initramfs-3.10.0-327.el7.x86_64.img

grub.cfgの新しいカーネルのセクションを確認
セクション最終行の
initrd16 /initramfs-3.10.0-327.28.2.el7.x86_64.imgが抜けていたため,追記した

$ sudo vi /boot/grub2/grub.cfg
menuentry 'CentOS Linux (3.10.0-327.28.2.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-fdca8898-0b12-4e30-a4c6-abb66c8f1ddc' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod xfs
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint='hd0,msdos1'  d03afdf1-35b8-4289-93fb-6363859211c4
        else
          search --no-floppy --fs-uuid --set=root d03afdf1-35b8-4289-93fb-6363859211c4
        fi
        linux16 /vmlinuz-3.10.0-327.28.2.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=ja_JP.UTF-8
        initrd16 /initramfs-3.10.0-327.28.2.el7.x86_64.img

これで,無事起動できるようになった


Reference