◆RockyLinuxをUSBメモリインストール;minimServerも
- CentOSは終わっちゃったし。。。
- 光学ドライブも終わっちゃったし。。。
てことで
RockyLinux(Redhat系)をUSBメモリを介してインストール
RockyLinuxはRedhat/CentOs系のサーバ用途Linuxです。
ubuntu/CentOSなどと異なり標準ではGUIを持ちません。コマンドラインで操作します。
本記事ではRockyLinuxに対し
- USBメモリを介してインストールし、
- TeraTermでネットワークを介してログインし、
- 生存確認用音楽サーバを立ち上げ、
- 基本の開発言語(Java,Python,Rust,Go)の動作確認
RockyLinuxインストールUSBメモリ作成(Windowsで作業)
BIOSからUSB起動(当該マシンで作業)
インストーラ作業(当該マシンで作業)
インストーラで行う設定は
- 言語(日本語)の選択
- rootユーザのパスワードの設定
- インストール先HDDの設定
SSHアクセス準備(当該マシンで作業)
作業ユーザの追加
# adduser ユーザ名 # passwd ユーザ名
ip-addr確認
# ip a
SSH設定(通常不要)
SSH最初から入っており、かつサービスは起動され、firewall設定もされています。
以下念のため確認の手順のみ行いました。括弧付きの作業は設定作業であり実際には行っていません。
;SSHの確認
(sudo yum -y install openssh-server)
(sudo systemctl start sshd.service)
$ sudo systemctl status sshd.service # 起動中であることを確認
Active: active (running) since ...
(sudo firewall-cmd --permanent --add-service=ssh)
$ sudo firewall-cmd --list-all # sshポートが開いていることを確認
services: dhcpv6-client ssh
システム基本アクセス設定(WindowsからTeraTermでアクセス)
TeraTermで当該ip指定で接続し、ユーザ名でログインする。
割り込みをコントロールKに変更
TeraTermでコントロールCでコピー の様にコントロールCをコピー、コントロールKを割り込みとして設定している場合
$ stty intr ^K
ユーザのsudoを有効にする,host名を設定する
$ su rootのパスワード # vi /etc/sudoers 次の行追加 %ユーザ ALL=(ALL) NOPASSWD: ALL # exit $ sudo yum install yum-utils # sudoresの確認を兼ねる $ sudo dnf install -y tar # 最小Rockyには含まれていないので $ sudo hostnamectl set-hostname ホスト名 # ホスト名は小文字で $ sudo vi /etc/hostname # 変更されていることを確認 $ sudo systemctl restart NetworkManager $ sudo dnf install avahi -y # AVAHIインストール $ sudo systemctl enable --now avahi-daemon # AVAHI起動 $ sudo systemctl status avahi-daemon # AVAIHI確認 ● avahi-daemon.service - Avahi mDNS/DNS-SD Stack Loaded: loaded (/usr/lib/systemd/system/avahi-daemon.service; enabled; pre> Active: active (running) since Sat 2025-03-29 17:04:52 JST; 1h 25min ag $ sudo firewall-cmd --permanent --add-service=mdns # firewallでUDP5353オープン sucess $ sudo systemctl restart firewalld # firewallリスタート $ sudo firewall-cmd --list-all # 確認 ・・・ sources: services: cockpit dhcpv6-client mdns ssh ports: ・・・
ユーザのlogin時の設定
$ cd $ vi .bashrc ----------- 以下最後に追加 if [[ -t 0 ]]; then stty intr ^K IFS=' ' set -- $SSH_CONNECTION export DISPLAY=$1:0.0 export TERM=vt100 fi unalias vi 2> /dev/null alias ls='ls -aF' alias rmdir='rm -rf' alias tree='tree --charset=C' alias vi=vim # この行を消してはならない ---- 以上 $ logout
TeraTermで"ユーザ名@ホスト名"でログインし直し、
- プロンプトにhost名が反映されていることを確認
- コントロールKを確認
- "ls"でalias設定を確認し
- "sudo ls"でsudo設定を確認
exfatの確認と自動マウント
◇WalkmanのSDにfoobar2000DLNA同梱 で作成したexfat形式のSDカードをマウントします。
exfatの手動マウント
; sdカードを抜き差ししdmesgでイベント確認 $ dmesg ・・・ [ 1132.834672] sd 4:0:0:0: [sdb] Mode Sense: 21 00 00 00 [ 1132.835305] sd 4:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA [ 1132.839913] sdb: sdb1 [ 1132.839989] sd 4:0:0:0: [sdb] Attached SCSI removable disk ; sdカードがsdb1とされた ; マウントしてみる $ sudo mkdir /media/foobar # マウントポイント作成 $ sudo mount -t exfat /dev/sdb1 /media/foobar $ cd /media/foobar $ ls $ sudo mkdir /media/foobar # マウントポイント作成 $ sudo mount -t exfat /dev/sdb1 /media/foobar FUSE exfat 1.2.7 $ cd /media/foobar $ ls '$RECYCLE.BIN'/ default-capability.xml* makePlaylist.py* ./ foobar2000.bat* minim/ ../ foobar2000.command* project/ DevIcon.fil* foobar2000_bin/ startFoobar.sh* DevLogo.fil* hiFolderSync/ wineFoobar.sh* LEARNING/ i2w/ '~MSSETUP.T'/ MUSIC/ killFoobar.sh* 'System Volume Information'/ makePlaylist.bat*
exfatの自動マウント
$ sudo blkid /dev/sdb1 /dev/sdb1: LABEL="foobar" UUID="3534-6233" TYPE="exfat" $ cd /etc $ sudo cp fstab fstab.sav $ sudo vi fstab --- 次の行追加 UUIDはblkidで取得した値 UUID="3534-6233" /media/foobar exfat nofail 0 0 $ sudo umount /media/foobar $ ls /media/foobar ./ ../ $ sudo mount -a $ ls /media/foobar '$RECYCLE.BIN'/ default-capability.xml* makePlaylist.py* ./ foobar2000.bat* minim/ ../ foobar2000.command* project/ DevIcon.fil* foobar2000_bin/ startFoobar.sh* DevLogo.fil* hiFolderSync/ wineFoobar.sh* LEARNING/ i2w/ '~MSSETUP.T'/ MUSIC/ killFoobar.sh* 'System Volume Information'/ makePlaylist.bat*
javaの導入とminimServerの導入
サーバーとしての生存確認用に音楽サーバーminimServerを動かします。minimServerはJava1.8を必要とします。
JAVA1.8の導入
$ sudo yum install java-1.8.0-openjdk-devel $ javac -version javac 1.8.0_442
minimServerのインストール
単純にファイル群を適当な場所に展開します。ただしexfat媒体はリンク(ln -s)不能の為不適切です
http://minimserver.com/downloads/index.html
から Linux Intel用の
MinimServer-0.8.5.2-linux-intel.tar.gzを
をダウンロードします。
$ sudo mkdir /usr/src/minimServer/ $ cd /usr/src/minimServer/ ・・ここに置く・・ $ sudo tar xzvo MinimServer-0.8.5.2-linux-intel.tar.gz
firewall設定
$ sudo firewall-cmd --zone=public --add-port=9790/tcp --permanent $ sudo firewall-cmd --zone=public --add-port=9791/tcp --permanent $ sudo firewall-cmd --permanent --add-port=1900/udp $ sudo systemctl restart firewalld $ sudo firewall-cmd --list-all
minimServer設定,起動
詳しくはMinimServerガイドを参照してください。
$ cd /usr/src/minimServer/minimserver/bin $ sudo ./setup Do you want to change these settings (y/n)? y Enable automatic startup for MinimServer (y/n) y $ ./startd # デーモン起動 $ ./mscript $ # 設定コマンド # プロンプトは出ない # prop 項目=内容で設定 # restatで再起動 # 何もいれずリターンでmscript終了 mscript: server URL is http://localhost:9790/ Enter commands (null line to terminate): prop contentDir=/media/foobar/MUSIC +*prop contentDir=/media/foobar/MUSIC +:status=0 prop displayName=minim [Rocky] +*prop displayName=minim [Rocky] +:status=0 prop alphaGroup=Composer=25,All Artists=25,Artist=25 +*prop alphaGroup=Composer=25,All Artists=25,Artist=25 +:status=0 prop indexTags=Artist:アーティスト,All Artists:演奏,Composer:作曲家,Genre,#AudioData +*prop indexTags=Artist:アーティスト,All Artists:演奏,Composer:作曲家,Genre,#AudioData +:status=0 props +*props alphaGroup=Composer=25,All Artists=25,Artist=25 .autoUpdate=true contentDir=/media/foobar/MUSIC displayName=minim [Rocky] http.port=9790 indexTags=Artist:アーティスト,All Artists:演奏,Composer:作曲家,Genre,#AudioData .logFile=minimserver.log .logLevel=info mergeFolderAlbums=false ohnet.debug=Default ohnet.port=9791 showExtras=true startupScan=true tagCustom=AlbumArtist.displayRole={artist}, Composer.displayRole={artist} .updateReminder=1 +:status=0 restart +*restart +:status=0
ログは
/usr/src/minimServer/minimserver/data/minimserver.log
に出ます。
設定は
/usr/src/minimServer/minimserver/data/minimserver.config
に置かれます
prop indexTagsは1行が長いので念のため小さい文字表記で以下に乗せませす
prop indexTags=Artist:アーティスト,All Artists:演奏,Composer:作曲家,Genre,#AudioData
minimServer自動起動
サービス設定をします。
;minim.serviceファイルを作成します。 ;起動するのはstartdではなくstartcであることに注意 $ sudo vi /etc/systemd/system/minim.service ------------------------ [Unit] Description = minimServer [Service] StartLimitBurst=0 WorkingDirectory=/usr/src/minimServer/minimserver/bin/ ExecStart = /usr/src/minimServer/minimserver/bin/startc Restart = always Type = simple [Install] WantedBy = multi-user.target ------------------------- $ sudo systemctl start minim $ sudo systemctl status minim ・・・active (ruuning)確認 $ sudo systemctl enable minim $ sudo reboot ・・・ ログインし直し $ cd /usr/src/minimServer/minimserver/bin/ $ ./mscript props ・・・ 設定内容が出ることを確認
媒体入れ替え手順(補足)
minimServerサービスの停止 $ sudo systemctl status minim #念のため $ sudo systemctl stop minim sdのアンマウント $ sudo umount /media/foobar/ --- sd取り外し --- sd内容変更 --- sd挿入 (同一個体)#別sdとする場合はblkid /dev/sda1;/ect/fstab変更が必要 $ (sudo mount /media.foobar)#不要自動マウントされる $ sudo systemctl start minim
開発環境
Python
$ python --version Python 3.9.19
Python hello world試験
$ mkdir -p ~/python_test $ cd ~/python_test $ vi hello_python.py def main(): print("Hello, Python!") if __name__ == '__main__': main() $ python hello_python.py # 実行
Rust
rustにはgccが必要 $ sudo dnf groupinstall "Development Tools" -y rustインストール $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh > 1 $ source $HOME/.cargo/env $ rustc --version rustc 1.85.1 (4eb161250 2025-03-15)
Rust hello world試験
$ mkdir -p ~/rust_test $ cd ~/rust_test $ vi hello_rust.rs fn main() { println!("Hello, Rust!"); } $ rustc hello_rust.rs # コンパイル $ ./hello_rust # 実行
Go
公式ウェブサイトのダウンロードページ
https://go.dev/dl/
で最新リリース版を確認する。
2025/03/29現在go1.24.1が最新
$ cd /tmp $ curl -OL https://go.dev/dl/go1.24.1.linux-amd64.tar.gz $ sudo tar -C /usr/local -xzf go1.24.1.linux-amd64.tar.gz $ vi ~/.bashrc 以下追加 ----- export PATH=$PATH:/usr/local/go/bin export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin $ source ~/.bashrc $ go version go version go1.24.1 linux/amd64
Go hello world試験
$ mkdir -p ~/go_test $ cd ~/go_test $ vi hello_go.go package main import "fmt" func main() { fmt.Println("Hello, Go!") } $ go build hello_go.go $ ./hello_go
| 固定リンク