##
AWS CloudShellで
Leaf Rogueを動かす話
@furandon_pig
https://furandon-pig.github.io/study-memo/docs/omoshiro_cloudshell/20201229.html
AWS CloudShell おもしろ選手権
(2020/12/29)
### 自己紹介
@furandon_pig
12月は
FreeBSD
や
NetBSD
、
Linux
のアドベントカレンダーにちょいちょい参加していました。
今日はAWS CloudShellの上で
Leaf Rogue
を動かしてみたという話をしようと思います。
### AWS CloudShell * [AWS CloudShell](https://aws.amazon.com/jp/cloudshell/) * re:Invent 2020で発表された、ブラウザベースのシェル。 * ブラウザ上でbashが動くという話でしょ? * (雑な理解) しかし世の中にはシェルさえあれば生きていけるという人も存在するのです...。
### シェルさえあれば生きていける人の例 * エディタを起動してコーディング、文書作成。 * エディタ内のメーラでメール読み書き。 * mhcでスケジュール管理。 * w3mでWebブラウズ。 * screen/tmuxでシェルの多重化。 これらがWebブラウザからも実現できると
より快適になりそう!
### なにかサンプルを動かしてみたい * だがしかし、いきなり環境を切り替えるのはちょっと...。 * 端末を派手に(?)つかうサンプルを動かして試してみたいところ。
# 🤔
# Leaf Rogue
### Leaf Rogueとは? * [Leaf Rogue](http://games.roguelife.org/leaf/#about) * [Rogue](https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%82%B0) * ダンジョン探索型RPG * [curses](https://ja.wikipedia.org/wiki/Curses)という端末制御ライブラリを用いて画面描画する。 * Rogueにはメッセージ部分を分離した実装が存在する。 * メッセージの内容を[Leaf](https://ja.wikipedia.org/wiki/Leaf)というゲーム会社のキャラクターのものに置き換えたものがLeaf Rogue。
### が、ひとつ問題が...。 * Leaf Rogueのコードベースが古い...。 * autoconfが存在していない時代のコード。 * (なぜかFreeBSDにはパッケージがある) * Amazon Linuxでの修正は一苦労かも...。 * NetBSDでのビルド手順メモがあった。 * [Leaf Rogueを2016年のNetBSD上で動かしてみる。](https://qiita.com/furandon_pig/items/163f0809763cab6897b2) NetBSDで動かせばできそう!😃
### AWS ClousShellゎAmazon Linuxだょ... * [qemu](https://ja.wikipedia.org/wiki/QEMU)使えばいいじゃん(雑) * というわけで、Leaf Rogueを動かすための一連の手順を実施。
### まずはqemuで動かすOSの用意(1/2) * 手元のマシンで以下を実施。 * ディスクイメージを作成する。 * [NetBSD-7.0をインストールしてみる](https://qiita.com/furandon_pig/items/8b7d13a119067098d561) * Leaf Rogueをビルドして含めておく。 * ディスクイメージをAWS ClousShellにアップロードする。
### まずはqemuで動かすOSの用意(2/2) ```sh $ # OSインストールCDをダウンロードする。 $ curl -sLO http://ftp.jaist.ac.jp/pub/NetBSD/NetBSD-9.1/iso/NetBSD-9.1-amd64.iso $ $ # ディスクイメージを作成する。 $ qemu-img create -f qcow2 nbsd.img 800M $ $ # VMを起動してNetBSDインストール。 $ qemu-system-x86_64 \ -m 128M \ -boot order=d \ -cdrom NetBSD-9.1-amd64.iso \ -hdd nbsd.img ```
### AWS CloudShell側での手順 ```sh [cloudshell-user@ip-10-0-XXX-XX ~]$ sudo yum install -y qemu screen [cloudshell-user@ip-10-0-XXX-XX ~]$ [cloudshell-user@ip-10-0-XXX-XX ~]$ ls -lh nbsd.img -rw-rw-r-- 1 cloudshell-user cloudshell-user 672M Dec 24 07:37 nbsd.img [cloudshell-user@ip-10-0-XXX-XX ~]$ [cloudshell-user@ip-10-0-XXX-XX ~]$ cat start.sh #!/bin/sh export LANG=ja_JP.UTF-8 qemu-system-x86_64 \ -m 128 \ -boot order=c \ -hdd nbsd.img \ -net nic \ -net user,hostfwd=tcp::2222-:22 \ -nographic \ -curses \ -snapshot ```
### qemuでNetBSDを起動する
これで準備は整ったっぽい😃
あとはLeaf Rogueを動かすだけ!
## しかし、現実は常に厳しいものだったのです...🥺
## !?
## 🥺
## 文字化けしている... * というよりかは、qemuの `-nographic -curses` ではマルチバイト文字を表示できないようだ...。 * これはもう
試合終了
ゲームセット
なのだろうか...🥺
#### あきらめたらそこで
試合終了
ゲームセット
ですよ...?(1/2) * AWS CloudShell側からVM(NetBSD)にsshできるようにしていたのだった😃 ```sh qemu-system-x86_64 \ ...中略... -net nic \ -net user,hostfwd=tcp::2222-:22 ``` * `~/.ssh/config` に以下の設定を追加。 ``` Host nbsd91 HostName 127.0.0.1 Port 2222 User cloudshell-user ```
#### あきらめたらそこで
試合終了
ゲームセット
ですよ...?(2/2) * VM(NetBSD)側では `cloudshell-user` 作成。 ``` # useradd -g users -G wheel -m -s /bin/ksh cloudshell-user # passwd cloudshell-user ``` これでどうじゃろか...🤔
### 無事に遊べるようになった!😭
### 😭
### こうしてAWS CloudShell上で
Leaf Rogueを動かすという試みは
無事に完遂できたのです...😇
### まとめ * AWS CloudShell上でLeaf Rogueを動かす話。 * 端末制御を派手に行うアプリの動作確認。 * qemuで動作させるのもアリ。 * イメージサイズは800Mくらいを目安にする。 * VMにsshできるようにしておくと良い。 * x86以外のアーキテクチャ向けOSを動かしてみるのも面白そう。
### ご清聴ありがとうございました😃
### 参考URL * 背景画像は「[巣栗渓谷から見たオリオン座の写真素材](https://www.pakutaso.com/20190329060post-19663.html)」(前田3号 様)撮影の画像を使用しています。