せっかなくので、やってみた。

日々のあんなこと、こんなこと、せっかくなのでやってみた

RaSCSIの設定方法を絶対忘れるのでスクリプトにしてみた

最近RaSCSI使い始めましたが、とてもいいですね。
何がいいって、今までXM6TypeGと実機のHDDイメージの同期が面倒だったのですが、
例えばXM6TypeGで更新したHDDイメージをWindowsからRaSCSI側へSCPで簡単に同期できるので、
実機とエミュレータの管理がとても楽になりました。

ただ導入には多少Linuxの知識とコマンド操作が必要なので、それが苦にならなければ 是非お勧めしたいアイテムです。
自分も導入の手順や設定の変更の方法をすぐ忘れてしまうので、導入手順をスクリプトに まとめてみました。 手順の作成にはIwasaki氏のサイトを参考にさせていただきました、感謝です!

www.mushagaeshi.com

尚、shの形式で作成してはいるものの、事前にraspi-configの設定や再起動が必要になるので、 そのままshに流しても動作しません。
"sudo su -"したあと、このスクリプトの各コマンドをコピペしてあげる必要があります。
(自分用に作成したので、ご了承ください。)

#!/bin/sh
# RasPiにRasSCSIを導入するスクリプト
#
# 以下の環境を想定
# RaspberryPi3B
# OSバージョン: buster (Linux version 4.19.75-v7+ )
# RaSCSI: 1.45(fullspec版)
#
# 注意)
# 途中でRasPiの再起動等が必要になるので、そのままshに流しても動作しません。
# "sudo su -"したあと、このスクリプトの各コマンドをコピペしてあげる必要があります。
#
# 事前にIwasaki氏のサイトを参考に以下を作業しておくこと
# https://www.mushagaeshi.com/2018/02/24/howto-setup-rascsi-scsi-device-emulator/
#
# $ sudo raspi-config
# 青い画面のメニューが出てくるので、そこから下記の設定を行う。
#
# ホスト名の変更
# 2 Network Options > N1 Host Name
#  Wi-Fiの設定(pi3は2.4Ghzのみ。pi3+から5Ghz対応)
# 2 Network Options > N2 Wi-Fi
# Select the country: JP
# SSID: <WIFI_SSID>
# Password: <WIFI_PASSWORD>
#
# 地域・エンコーディング設定
# 4 Localization Options > I1 Change Locale
# →ja_JP.UTF-8
# →Default: C.UTF-8 (ja_JPを標準にするとメッセージが化けるので)
#
# タイムゾーン設定
# 4 Localization Options > I2 Change Timezone
# →Asia/Tokyo
#
# キーボードレイアウト
# 4 Localization Options > I3 Change Keyboard Layout
# →使っているもので。USキーボードなら変更不要。
#
# 国設定
# 4 Localization Options > I4 Change Wi-Fi Country
# →JP
#
# 更新
# 8 Update
# →Wi-Fi設定が合っていれば勝手にダウンロードを開始するので待つ。
# もしエラーが出たら上記のWi-Fi設定が間違っているので要再確認
#
# メインメニューからfinishでraspi-config終了後、以下を実行し再起動する。
# sudo apt-get update
# sudo apt-get -y upgrade
# sudo reboot

# 再起動後、ログインして sudo su - を実行してから以下作業

# RaSCSIのインストールアーカイブURL
RASCSI_INSTALLER=http://retropc.net/gimons/rascsi/rascsi145.zip
# RaSCSIのインストール先
RASCSI_PATH=/opt/rascsi
# RaSCSIの動作タイプ aibom fullspec gamernium standard
RASCSI_TYPE=fullspec
# HDSファイル置き場所
HDS_PATH=/var/rascsi/hds
# HDSファイル名
HDS_FILE=cf4g.hds
# RaSCSIのIP
HOST_IP=xx.xx.xx.xx
# RaSCSIのGW
GW_IP=xx.xx.xx.xx
# RaSCSIが参照するDNS
DNS_SERVERS="xx.xx.xx.xx xx.xx.xx.xx"


RASCSI_INSTALLER_FILE=`basename $RASCSI_INSTALLER`

# ヒストリの件数を10000とし、時刻も記録する。
cat <<EOF >> /etc/profile.d/history.sh
export HISTSIZE=10000
export HISTTIMEFORMAT="%F %T "
EOF

# sshd起動
systemctl enable ssh
systemctl start ssh

# eth0のstatic IP設定
[ ! -f /etc/dhcpcd.conf ] && cp -p /etc/dhcpcd.conf /etc/dhcpcd.conf.org
cat <<EOF >> /etc/dhcpcd.conf

interface eth0
static ip_address=$HOST_IP/24
static routers=$GW_IP
static domain_name_servers=$DNS_SERVERS
EOF

# NTPクライアント設定
[ ! -f /etc/systemd/timesyncd.conf.org ] && cp -p /etc/systemd/timesyncd.conf /etc/systemd/timesyncd.conf.org
sed -e 's|#NTP=.*|NTP=ntp.jst.mfeed.ad.jp ntp.nict.jp|' /etc/systemd/timesyncd.conf.org -i
timedatectl set-ntp true
systemctl restart systemd-timesyncd

# RaSCSIインストール
mkdir -p $HDS_PATH
chown root.pi $HDS_PATH
chmod -R g+ws $HDS_PATH

cd /tmp
wget $RASCSI_INSTALLER
cd `dirname $RASCSI_PATH`
unzip /tmp/$RASCSI_INSTALLER_FILE
# rascsi145.zipの拡張子を削除したディレクトリ名にシンボリックリンクを張る
ln -s ${RASCSI_INSTALLER_FILE%.*} $RASCSI_PATH

# 使っていないけどとりあえずhdsのリンクを作成しておく
cd $RASCSI_PATH
ln -s $HDS_PATH .

# rascsi.tar.gzはそのままbinの下に解凍して使う
cd $RASCSI_PATH/bin/raspberrypi
tar zxvf rascsi.tar.gz

# RaSCSI自動起動設定
cat <<EOF > /etc/systemd/system/rascsi.service
[Unit]
Description=RaSCSI
After=syslog.target

[Service]
Type=simple
WorkingDirectory=$RASCSI_PATH/bin/raspberrypi
ExecStart=/usr/bin/sudo $RASCSI_TYPE/rascsi -ID0 $HDS_PATH/$HDS_FILE
TimeoutStopSec=5
StandardOutput=null

[Install]
WantedBy = multi-user.target
EOF

systemctl daemon-reload
systemctl enable rascsi
systemctl start rascsi
# 起動状況の確認
systemctl status rascsi