rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

Arch系のManjaro Linuxでは、グラフィカルログインでは~/.profileだけが読み込まれ、テキストログインでは~/.bash_profileだけが読み込まれる

2021 May 02.
2021 Apr. 29.

Arch系のManjaro Linux

LightdmでログインしてXfceデスクトップ環境に入る時は ~/.profileのみが読み込まれ、~/.bash_profileは読み込まれない。

Lightdmを介さず、コンソールからログインあるいは別のsshクライアントからログインした時は、~/.bash_profileのみが読み込まれ、~/.profileは読み込まれない。

~/.bashrcはグラフィカルログインでもテキストログインでも読み込まれる。

~/.bash_loginは存在しない。


ユーザーのシェル設定

$ cat /etc/passwd | grep $USER
    USER:x:1234:1234::/home/USER:/bin/bash

Manjaro Linuxインストール直後の~/bash_profileと~/.profileの内容

(~/.bash_profile)

#
# ~/.bash_profile
#

[[ -f ~/.bashrc ]] && . ~/.bashrc


(~/.profile)

export EDITOR=/usr/bin/nano
export QT_QPA_PLATFORMTHEME="qt5ct"
export QT_AUTO_SCREEN_SCALE_FACTOR=0
export GTK2_RC_FILES="$HOME/.gtkrc-2.0"


Lightdmからログイン後、~/.profileで設定された環境変数をechoコマンドで確認できるので、~/.bash_profileが存在していても~/.profileが読み込まれている。


次のように~/.bash_profile内にファイル作成処理を入れても、Lightdmからログインではファイルが作成されないので、~/.bash_profileが存在していても~/.bash_profileは読み込まれず、~/.profileが読み込まれている。


(~/.bash_profile)

#
# ~/.bash_profile
#

[[ -f ~/.bashrc ]] && . ~/.bashrc

Date=`date`
touch "${HOME}/tmp${Date}.file"

~/.bashrcで設定した内容はグラフィカルログイン後に確認できる。~/.bash_profile内での ~/.bashrc読み込み設定とは別に、~/.bashrcが読み込まれている。


参考 .bash_profile .profile ログインシェルについて -ログインシェルが /b- UNIX・Linux | 教えて!goo

googleドライブを同期するocamlfuseをArch系のManjaro Linux にインストール

2022 Sep. 15.
2021 Nov. 21.
2021 May 02.
2021 Apr. 29.

出典
Manjaro (Arch) でもGoogle Drive File Streamを使いたい話 - Qiita
opamを用いたOCamlプロジェクトのセットアップ方法

opamをインストール

(その後のユーザー権限での作業時を誤ってroot権限で実行しないために $ sudo で進めること )
$ sudo pacman -Syu  ## パッケージのアップデート
$ sudo pacman -S --needed mercurial darcs make m4 gcc patch ed pkg-config opam    ## opam のインストール

opamの初期化

$ opam init
[NOTE] Will configure from built-in defaults.
Checking for available remotes: rsync and local, git, mercurial, darcs. Perfect!

<><> Fetching repository information <><><><><><><><><><><><><><><><><><><><><>
[default] Initialised

<><> Required setup - please read ><><><><><><><><><><><><><><><><><><><><><><>

  In normal operation, opam only alters files within ~/.opam.

  However, to best integrate with your system, some environment variables
  should be set. If you allow it to, this initialisation step will update
  your bash configuration by adding the following line to ~/.bash_profile:

    test -r ${HOME}/.opam/opam-init/init.sh && . ${HOME}/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true

  Otherwise, every time you want to access your opam installation, you will
  need to run:

    eval $(opam env)

  You can always re-run this setup with 'opam init' later.

Do you want opam to modify ~/.bash_profile? [N/y/f]
(default is 'no', use 'f' to choose a different file) f         
  Enter the name of the file to update: ~/.profile
A hook can be added to opam's init scripts to ensure that the shell remains in
sync with the opam environment when they are loaded. Set that up? [y/N] y

User configuration:
  Updating ~/.profile.
[NOTE] Make sure that ~/.profile is well sourced in your ~/.bashrc.

<><> Creating initial switch (ocaml-system>=4.02.3) ><><><><><><><><><><><><><>

<><> Gathering sources <><><><><><><><><><><><><><><><><><><><><><><><><><><><>

<><> Processing actions ><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> installed base-bigarray.base
-> installed base-threads.base
-> installed base-unix.base
-> installed ocaml-system.4.11.1
-> installed ocaml-config.1
-> installed ocaml.4.11.1
Done.
# Run eval $(opam env) to update the current shell environment

~/.bash_profile ~/.bash_login ~/.profileが適切か確認・修正する。

opam読み込み
$ eval $(opam env)

インストールされたopamの確認

$ ocaml --version

システムからログアウトし再度ログインする

PATH確認

${HOME}/.opam/default/binがPATHに無ければ、~/.profileに書き込む。

( ~/.profile )

PATH="${HOME}/.opam/default/bin:${PATH}"
export PATH

google-drive-ocamlfuseをインストール

$ opam install google-drive-ocamlfuse

( conf-pkg-config.2でエラーとなったら )
$ opam depext conf-pkg-config.2

シェル環境のアップデート
$ eval $(opam env)

システムからログアウトし再度ログインする


googleドライブとの同期

googleドライブを同期するocamlfuseをubuntuにインストール - rokkonet の「Googleアカウント認証」以降を設定する。

Arch系のManjaro Linuxのインストール

2022 Sep. 23.
2021 Nov. 23.
2021 Jun. 21.
2021 May 05.
2021 Apr. 29.

Ubuntuをバージョンアップして環境整備するのが大変なので、ローリングリリースなArch Linux派生で、安定したパッケージを提供していて使いやすいと言われるManjaro Linuxをインストールした。

ダウンロード・インストール

  インストールメディアの作成 linuxで利用できる起動可能USBメモリー作成ソフト UNetbootin - rokkonet

ハードディスクパーティションの事前準備

UEFI / GPT HDDでは、/bootマウント用に300MB以上のEFI SYSTEM PARTITIONを作成する。
BIOS / GPT HDDでは、HDD先頭から2TBまでの場所に1MBから8MB程度のboot_grubフラグなBIOS Bootパーティション(EF02)を作成する。

参考
UEFI GPT HDDへのGRUBインストール - rokkonet
BIOS GPT HDDへのGRUBインストール - rokkonet

インストール中のディスク領域設定ではスワップ領域を確保しておく

スワップはインストール時に設定される)

ユーザーIDを固定したいので、インストール時に設定するユーザーは後で削除することを前提に適当なものとする


マウスフォーカス

設定 -> ウィンドウマネージャー ->
フォーカス -> クリックで前面に出す ->
「アプリケーションウィンドウ内でクリックした場合前面に出す」のチェックを外す

ビルド関連バッケージのインストール

# pacman -S --needed base-devel
# pacman -S --needed make m4 gcc patch ed pkg-config file git


システムアップデート

メニュー -> システム -> ソフトウエアの追加と削除 -> アップデート -> 適用

システム再起動

(したければ)カーネルをLTS版に変更

メニュー -> 設定 -> Manjaro Settings Manager -> カーネル
LTS版を選択する。

システム再起動
GRUB画面で利用するカーネルを選択する

linux kernel headersをインストール

出典 Manjaro Linux kernel headers installation - Linux Tutorials - Learn Linux Configuration

(kernelのバージョンを確認する)
$ uname -r
5.4.114-1-MANJARO

(上記から linux54-headers をインストールする)
# pacman -S linux-headers
:: There are 11 providers available for linux-headers:
:: Repository core
   1) linux414-headers  2) linux419-headers  3) linux44-headers
   4) linux49-headers  5) linux510-headers  6) linux511-headers
   7) linux512-headers  8) linux54-headers  9) linux59-headers
:: Repository community
   10) linux54-rt-headers  11) linux59-rt-headers

Enter a number (default=1): 8
resolving dependencies...
looking for conflicting packages...

Packages (1) linux54-headers-5.4.114-1

Total Download Size:    9.45 MiB
Total Installed Size:  46.97 MiB

:: Proceed with installation? [Y/n] 
:: Retrieving packages...
 linux54-headers-...     9.4 MiB  1014 KiB/s 00:10 [######################] 100%
(1/1) checking keys in keyring                     [######################] 100%
(1/1) checking package integrity                   [######################] 100%
(1/1) loading package files                        [######################] 100%
(1/1) checking for file conflicts                  [######################] 100%
(1/1) checking available disk space                [######################] 100%
:: Processing package changes...
(1/1) installing linux54-headers                   [######################] 100%
:: Running post-transaction hooks...
(1/2) Arming ConditionNeedsUpdate...
(2/2) Updating module dependencies...

(インストールされたlinux kernel headerの確認)
$ pacman -Q | grep headers | grep -v linux-api-headers
linux54-headers 5.4.114-1

(linux-api-headersはlinux kernel headerに関係無い)

(PCを再起動)
# reboot


「ソフトウエアの追加と削除」アプリでyayをインストール


エディタのインストールとデフォルトエディタの設定

 Manjaro Linux / Arch Linuxにデフォルト・エディタを設定する - rokkonet

  ~/.vimrcの設定 vim設定ファイル ~/.vimrc の内容 - rokkonet

通常のグラフィカルログインでは~/.profileが読み込まれ、ssh経由等のテキストログインでは~/.bash_profileが読み込まれる。~/.bashrcは必ず読み込まれる。これを踏まえて環境変数を設定する。

https://rasumus.hatenablog.com/entry/2021/04/29/155403

ユーザー登録

# useradd -d HOMEDIR -m -s /bin/bash -u NNNN -U USER
  HOMEDIR: ユーザーのホームディレクトリ
  NNNN: ユーザーのID
  USER: ユーザー名

# passwd USER


ユーザーを各グループに所属させる

インストール時に登録したユーザーが所属していた次のグループに所属させた。
wheel lp sys network power video
wheelは管理者権限となるので登録するユーザー毎に判断する。
videoはインストール時に登録したユーザーは所属していないが、録画を踏まえ、含めた。

PCを再起動して登録反映する。
インストール時に登録したユーザーを削除する。

# userdel -r TMPUSER
  TMPUSER: インストール時に登録したユーザー名


ユーザーのumask

( ${HOME}/.bashrc )

umask 0022

"umask 0077"が安全だが、ユーザーでビルドしたプログラムをシステムにインストールすると、システム上のディレクトリ・ファイルをrootユーザー以外が読み込めない恐れがあるので、"umask 0022"がよい。

スワップ領域の導入(通常、システムインストール時に自動設定される)

スワップの確認

$ swapon
$  free -h -t

スワップパーティションのフォーマット

# mkswap /dev/HDD-PARTITION

システムのスワップ利用設定

# swapon /dev/HDD-PARTITION

/etc/fstabにスワップパーティション設定を記述する

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx  none  swap  defaults  0 0

システムを再起動してスワップを適用する


システムのログ

journalctlコマンドを使って各種ログを表示する。
 起動時からのメッセージ表示 "journalctl -b"

出典
arch linux - Where are my sshd logs? - Unix & Linux Stack Exchange
systemd/ジャーナル - ArchWiki

固定IPアドレス設定

XfceのNetworkManagerアプレットで可能

画面解像度変更

Arch系Manjaro Linux + AMD Radeon R7 Graphics での画面解像度 - rokkonet
各ユーザーのX window起動時に画面変更されるように設定する。

画面解像度を 1440x900 に変更

ビデオカード [AMD/ATI] Kaveri [Radeon R7 Graphics]
モニター アイ・オーデータ LCD-AD221XB 22型WSXGA+(1680×1050)のワイド液晶パネル

$ xrandr
Screen 0: minimum 320 x 200, current 1152 x 864, maximum 16384 x 16384
DVI-0 disconnected (normal left inverted right x axis y axis)
VGA-0 connected 1152x864+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768      60.00  
   800x600       60.32    56.25  
   848x480       60.00  
   640x480       59.94  
   1152x864_60.00  59.96* 
HDMI-0 disconnected (normal left inverted right x axis y axis)

$ cvt 1440 900
# 1440x900 59.89 Hz (CVT 1.30MA) hsync: 55.93 kHz; pclk: 106.50 MHz
Modeline "1440x900_60.00"  106.50  1440 1528 1672 1904  900 903 909 934 -hsync +vsync

$ xrandr --newmode "1440x900_60.00"  106.50  1440 1528 1672 1904  900 903 909 934 -hsync +vsync

$ xrandr --addmode VGA-0 1440x900_60.00

$ xrandr --output VGA-0 --mode 1440x900_60.00


上記の手法での設定はシステムからログアウトすると解除されるので、ログイン時自動設定を設定する。

日本語入力インストール

日本語入力インストール Manjaro Linux(Arch Linux) Xfceデスクトップ - rokkonet
各ユーザーに設定ファイルを置く。

/etc/hostsファイルを編集

LAN上のデバイス名とIPアドレスを対応付ける。

TCP Wrappersのインストール・設定

TCP Wrappersパッケージをインストールする

/etc/hosts.denyを編集する
ALL: ALL

/etc/hosts.allowを編集する

sshd: ALL

wake-on-lan設定

Wake On Lan 設定 - rokkonet

sambaインストール・設定

sambaインストール - rokkonet

bitbucket利用対応

$ mkdir ~/bitbucket    ## ディレクトリ名及びホームディレクトリ内の場所は任意
  • ssh認証設定

BitbucketへのSSH認証導入 - rokkonet

TV受信サーバーmirakurunのインストール

https://rasumus.hatenablog.com/entry/2020/12/27/142809

anti-virusソフトインストール

https://rasumus.hatenablog.com/entry/2020/09/20/204944

ブラザー プリンター&スキャナー複合機DCP-J562Nインストール

https://rasumus.hatenablog.com/entry/2021/05/03/004656

Arch系Manjaro Linux + AMD Radeon R7 Graphics での画面解像度

2021 May 02.
2021 Apr. 29.

Arch系Manjaro Linux + AMD Radeon R7 Graphics でのディスプレイ解像度

ビデオチップ確認

$ lspci
00:01.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Kaveri [Radeon R7 Graphics]

[AMD/ATI] Kaveri [Radeon R7 Graphics]チップにはオープンソースのAMDGPUを利用可能。

ドライバー利用状況確認

$ lsmod
amdgpu               5537792  0

既にAMDGPUが利用されているので、設定を変えればよい。

Manjaro Linuxをインストールした直後の最高解像度は1024x768


高解像度対応

出典 画面解像度1360x768の追加 - rokkonet

次の方法で高解像度に変更できるが、設定はログアウトすると失われる

(出力先を取得)
$ xrandr
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 16384 x 16384
DVI-0 disconnected primary (normal left inverted right x axis y axis)
VGA-0 connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768      60.00* 
   800x600       60.32    56.25  
   848x480       60.00  
   640x480       59.94  
HDMI-0 disconnected (normal left inverted right x axis y axis)
<出力先はVGA-0>

(希望解像度のModelineを取得)
22型テレビでのPC画面解像度は最大1366×768らしい
$ cvt 1366 768
# 1368x768 59.88 Hz (CVT) hsync: 47.79 kHz; pclk: 85.25 MHz
Modeline "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync

(新しい xrandr のモードを作成)
$ xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync

(新しいモードを出力先に追加)
$ xrandr --addmode VGA-0 1368x768_60.00

(画面解像度を追加した解像度に変更)
$ xrandr --output VGA-0 --mode 1368x768_60.00

上記をX Windowログイン時に実行するスクリプトを作成し、各ユーザーにインストールする

参考スクリプト掲載ページ
https://bitbucket.org/arsmus/shell-script-public/src/master/linux-utility/changeResolution-radeonR7-ubuntu2004.sh

rsyncによる2つディレクトリの同期

2021 Apr. 26.
2021 Apr. 25.

DirAとDirBがあって、あるファイルはDirAに新しい版があり、別のファイルはDirBに新しい版がある状態の時、両ディレクトリを同期し、引き続きDirAを使う時は、次のような手順が確実かと思う。
ただし、「削除したはずのファイルが残っている」ということにはなる。
コピー元に無いファイルをコピー先から削除する --delete オプションは、残しておきたいコピー先の新しいファイルも削除するので、使わない。

# rsync --update -av DirA/ DirB/
# rsync --update -av DirB/ DirA/

rsyncに記述する2つのディレクトリの内、最初の方の(コピー元)ディレクトリの末尾にディレクトリ区切りのスラッシュを付けないと、後ろの(コピー先)ディレクトリの直下にコピー元ディレクトリが丸ごとコピーされてしまう。
はじめてrsyncを使う方が知っておきたい6つのルール:Command Technica(1/2 ページ) - ITmedia エンタープライズ より)

"rsync --update -av"は"rsync -uav"でも"rsync -ua"でも同じ。

VLCで再生終了時にプレーヤーインスタンスを削除する設定

2021 Apr. 23.

出典 配信の終了時に動画プレイヤー(VLC)を自動終了する:かるぱちょすの工作ブログ - ブロマガ

設定メニューに無いので、忘れるとなかなか見つけられない。