Vivadoのライセンス更新

こういう作業が一番めんどくさい

https://docs.xilinx.com/r/ja-JP/ug973-vivado-release-notes-install-license/%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9-%E3%82%AD%E3%83%BC-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E7%94%9F%E6%88%90

環境は前までの記事を読んでもらえればと思います。

時間がないので箇条書きで

  1. https://japan.xilinx.com/support/licensing_solution_center.htmlに飛ぶ。
  2. ライセンスを所有するアカウントでログインする。
  3. 「購入済みライセンスについて」の「ザイリンクス製品ライセンス取得ページ」をクリックして移動。
  4. 欲しいライセンスを選択して「Generate Floating License」を選択。
  5. Requested seats を1に設定。
  6. 2 SYSTEM INFORMATIONにHOSTを追加する。入力する内容は以下の手順で得る。
  7. ターミナルで$ vlm
  8. View Host informationを選択。
  9. 記述されたHost NameとNetwork interface Cardの情報をそのまま設定にコピペする。
  10. Next
  11. 生成してCongratulationsが出たら完了DLする
  12. メールに来ない場合はhttps://japan.xilinx.com/getlicenseに移動する
  13. Manage Licensesからさっき作ったホストを選んで左下(かなり左下)の↓マークのボタンを推してライセンスをDL
  14. ターミナルで$ vlm
  15. Get Licenseのload Licenseを選択してCopy License...を押して先程DLしたXilinx.licを選択して読み込む。

完了。

個人的に使うLinuxコマンド

自分用のメモです。毎回調べるようなコマンドを追記していきます。

目次

Linuxコマンド

ps (プロセス確認)

$ ps -au

バックグラウンドプロセス含めすべて表示

$ ps aux

バックグラウンドでプロセスを実行

bashが閉じるとプロセスが終わるのは困るのでバックグラウンドで動き続けてほしいときに実行

$ nohup [コマンド] &

$ nohup g++ hoge.cpp &

g++ (C++コンパイル)

$ g++ hoge.cpp -o name

作業系

sudo権限を付与する

rootのパスが必要

$ su
$ sudo visudo

nanoが開くので%sudoの下に

username ALL=(ALL) ALL

を書き加える。ctrl + X , y , Enterで保存して終了できる。

$ exit

でrootから抜ける。

$ sudo pwd

を実行してみる。パスワードが求められた後実行できたら成功。

Git関連

ステータス確認

$ git status

git clone

$ git clone [ここにURLなど]

ディレクトリを更新する手順

$ git add ./

$ git commit -m "メッセージ"

$ git push -u origin [branch名]

ディレクトリを削除(削除後はcommitとpushが必要)

$ git rm -r [ディレクトリパス]

現在いるブランチ確認

$ git branch

ブランチ生成

$ git branch [ブランチ名]

ブランチ移動

$ git checkout -b [ブランチ名]

PetaLinuxでSSH接続

※完全に自分のメモ用です。説明を省略した部分が多いです。


※前回の続きです
berota.hatenablog.com

はじめに

Zybo Z7-10にLinuxを入れたからにはSSH接続で色々やりたい。

将来的には入力をFPGA側で制御して、タイムスタンプ付きでテキストにまとめてホストしてるUbuntuに送る。みたいなことをしたい。

PetaLinuxは最低限のバイナリしか用意されていないのでconfigで色々設定してからProjectをビルドする必要がある。

どうやらdropbearが初期設定で登録されているようなので、これを無効化した上でsshを有効化する。

今回は同一LAN内、というよりVirtualBox内のUbuntuとボードの間のssh通信を試みる。一応同一LAN内の他のサーバーにも接続できたのでこの方法でやれば問題ないはず。

PetaLinuxでSSH接続

 一度やってしまえば楽なのだが、何かと設定が多い。

 …というより、この手順を明確にした公式ドキュメントないのかな…探すの疲れた

 それはそうと、ボードにLANケーブルを刺してネットワークに接続する必要があるので注意。

 ※PetaLinuxのバージョンは前回に引き続き2022.1です。

VirtualBoxの設定

設定 > ネットワーク > 割り当て > ブリッジアダプター に設定を変更

Ubuntuを起動しているなら再起動が必要。

PetaLinux projectの設定

projectのフォルダに移動する。

$ cd /home/username/project_1/peta_project

configからsshを有効化する手順

 configを開く

$ petalinux-config -c rootfs

 petalinux-configの画面が立ち上がるので次の手順で設定

SSHの設定とdropbear無効化
  1. Image Featuresを選択。
  2. ssh-server-dropbearをnで無効化、ssh-server-opensshをyで有効化。SaveしてExit

 Exitを1回押して

  1. Filesystem Packages > misc > packagegroup-core-ssh-dropbear
  2. packagegroup-core-ssh-dropbearを無効化

 SaveしてExit

  1. console > network > openssh
  2. openssh, openssh-sshd, openssh-sftp-server, openssh-scpを有効化
  3. Save > OK > Exit×5


・Packageの設定(これ必要?詳しい人教えてください)

  1. Image Features
  2. package-management 有効化
Petalinuxを再ビルド

$ LANG=C petalinux-build

$ petalinux-package --boot --force --fsbl images/linux/zynq_fsbl.elf --fpga images/linux/system.bit --u-boot

$ sudo mount /dev/sdb1 /home/username/BOOT
$ sudo mount /dev/sdb2 /home/username/ROOT

 ここでread only(読み込み専用)と出る場合、SDカードのLockが付いてる場合があります。要注意。

$ cd /home/username/project_1/peta_project/images/linux/

$ sudo cp BOOT.BIN boot.scr image.ub /home/username/BOOT/
$ sudo tar xf rootfs.tar.gz -C /home/username/ROOT/
$ sync

 多分必要ないんだけど、念のためにVirtualbox側の設定でネットワーク > 割り当て >ブリッジアダプターに設定して再起動

gtktermの起動

 前回行った手順と同じ。USBのポートが異なる場合は対応するポートで設定してください。

$ sudo gtkterm

  1. gtktermが起動したらConfigration>portを選択。
  2. Portを/dev/tty/USB1
  3. Band Rateを115200
  4. Parityをnone
  5. Bitsを8
  6. Stopbitsを1
  7. Flow controlをnoneに設定。
  8. OKで設定が完了したら、Zyboの電源をONする。
  9. 一斉に文字が流れてPetaLinuxが起動する。
PetaLinuxにログイン

 login:petalinux
 password:てきとう

SSHする前にサーバー側で準備

 手ぶらで接続するわけにも行かないのでとりあえずサーバー側(Ubuntu)の設定を行う。
 
 前回と同じ環境なのでVirtualBox内のUbuntu20.04.1をサーバーとする。

 ローカルで接続するので鍵認証の設定は行わない。

$ sudo apt -y install openssh-server

※ここではサーバーに作成するユーザーを"peta"とした。基本的に任意。

$ sudo useradd -m peta
$ sudo passwd peta

 パスワードを設定する。忘れなければ何でもいい。

サーバーのIPが必要なので

$ ip -4 a

を実行してinetの後ろに書かれた数字をメモる。これがサーバーのIPアドレス


sudo権限を与えるなら

$ sudo visudo

で%sudoの下に

ユーザーネーム ALL=(ALL) ALL

を追加する。

SSH接続する。

 クライアント(gtktermウィンドウで実行する)でsshコマンドを使ってSSH接続する。
 

 メモしたIPアドレスを使って

$ ssh peta@IPアドレス


 以上。試しに$mkdirでディレクトリを作成し、Ubuntu側で確認すればよい。無事ディレクトリが作成されていれば成功。

$ exit

sshから抜ける

Zybo Z7-10にLinuxを入れる

※完全に自分のメモ用です。説明を省略した部分が多いです。

はじめに

 FPGAに触れる機会があり、Vivadoでの開発をそこそこやってみた。

 Verilogに慣れてきたところで、Zybo Z7-10を弄ってみることにした、Zybo Z7-10はFPGAだけでなくCPUが搭載されており、ネットワークに接続して通信も可能。

 ここまで聞いてLinuxを入れないことがあるだろうか。いやない。(反語)

 いろいろ調べてみるとAMDバイス用にLinuxディストリビューションが用意されていて、その名もPetaLinuxというらしい。今回の目標はPetaLinuxをZybo Z7-10上で動かしてみること。そのための手順を数カ月後に記憶喪失した自分に向けてメモしておく。

(追記) どうやらPetalinuxという名称はコンパイラの名前であって、FPGAに実装するLinuxの名前は"embedded linux"が正式名称らしい、ただこの呼び方はあまりにも抽象的すぎるので"Zynq linux"と呼ばれる場合もある。記事の修正が面倒なので本文中の"Petalinux"は"embedded linux"のことなのだと脳内変換しておいてください。



 参考元の内容と、自分の環境でうまくいかなかった部分の補足を付け加えた内容です。細かいコマンドの意味などは殆ど書かずに手順だけかいています。

 株式会社ピクセラ様のホームページを""大い""に参考にさせていただきました。本当にありがとうございます。画像付きで見やすい解説です。オススメです。
https://www.pixela.co.jp/products/pickup/dev/petalinux/p1_1_environment.htmlwww.pixela.co.jp



 使用したソフトなどのバージョンを記載しておきます。


目次

Zybo Z7-10にLinuxを入れる

 Virtual boxでUbuntu環境を構築してPetaLinuxをビルドしてZybo Z7-10でLinuxを起動します。


準備

必要なもの

  • Zybo Z7-10 もしくは Zybo Z7-20
  • AMDアカウント
  • ホストPC  (Windows11を想定)
  • microSDカード (4GB以上)
  • microSDカードリーダー (ホストPCに刺さるやつ)
  • ACアダプタ (5.5mm-2.1mmピンで5V3Aが理想)


 ACアダプターの入手難易度が高いので要注意。店頭で入手は難しいと思う。秋月に売ってるやつを買うのが無難。
akizukidenshi.com

 ちなみにZyboボードは最後まで出てこないのでPCに接続する必要はないです。


VirtualBoxを入手する。

 まずは下記のサイトに飛んで「VirtualBox 7.0.8 platform package」のWindows hostをDLする。ついでにExtension PackもDLする。

www.virtualbox.org




 DLしたインストーラを起動してVirtualBoxとExtensionのインストールが完了したらUbuntuを入手する。


UbuntuのISOイメージのダウンロード

 どうせなら日本語環境でUbuntuを使ってみたいので下記のサイトに飛んでUbuntu 20.04.1 LTSのISOイメージをDLする。

 このサイト、何故かクリックだけではダウンロードできない。右クリックして、新しいウィンドウで開いてそのウィンドウをリロードするとDLが始まる。(私の環境が悪い可能性もある)

 DLしたUbuntu20.04.1のISOイメージはわかり易い場所に入れておく。後ほど使うので場所がわからないのは避けたい。

www.ubuntulinux.jp


Virtual boxでUbuntuを起動

 VirtualBoxを起動すると右側のメニューに「新規」とあるのでクリック。

 名前は適当で良い。Ubuntu20.04.1とかがオススメ。空白を入れるのはあまり良くない。

 Folderは何でもいい。ここに今から作る仮想環境のUbuntuが格納される。

 ISO Imageの右にある▽をクリックして「その他」をクリック。エクスプローラーが開くので先程DLした「ubuntu-ja-20.04.1-desktop-amd64.iso」を選択。次へ




 Usernameをわかりやすい名前に設定する。今後コマンドで現れる"username"にはここで設定した名前を入力する。

 Passwordの横にある目玉マークを押してパスワードを変更する。何度も入力するのでわかりやすいものにしておく。 次へ




 メインメモリーを設定する。4096MBはあったほうがいいけど、ホストPCのメモリが16GB未満の場合は2048MB程度にしたほうが良い。ただし動作に時間がかかるので注意。

 Processoursも設定する。4コアあれば十分だけど。やはりホストのCPUコア数を見て考えるべき。 次へ




 次にDiskSizeを決めますが、200GB以上で設定すること。Vivadoのインストールで150GBの空きを要求されるので必須です。少なめに設定した場合は後ほど変更できるが、GPartedを使ってパーティションをリサイズする必要があるので初めから多めにとっておくのが無難。 次へ




 一覧が表示されるので完了を押す。しばらく待てばUbuntuが起動して構築を数分間行う(自動)

 デスクトップが表示されたら左のタスクバーからFirefoxとフォルダー意外全部削除しておくとよい。左下のアプリ一覧から端末(terminal)をお気に入り登録しておく。



コピペの設定

 ホストからゲストにコピペができると嬉しい。なぜならコピペができるから。

 Ubuntuを起動した状態で上部メニューの「デバイス」から「Guest Additions CDイメージの挿入…」を選択。

 ポップアップが出るので「実行する」を選択。

 パスワードを入力して認証するとターミナルが起動する。しばらく放置して「Press Return~」と表示されたらEnterを押して終了。

 左のタスクバーにCDが表示されるので右クリックして「取り出す」を選択。

 上部メニューの「仮想マシン」から「設定」を選択。

 一般>高度>クリップボードの共有>ホストOSからゲストOSへ に設定。双方向でも良い。OKを押して設定完了するのを忘れずに。

 上部メニューの「ファイル」から 閉じる>シャットダウン シグナルを送信 を実行。

 次に起動するときにはコピペができるようになります。




大いに参考にしました。画像あるしこっち見たほうがいい!!

onoredekaiketsu.com



sudo権限を付与する

ターミナルを開いて次のコマンドを実行する。念の為断っておくが、先頭の$ はターミナルに入力しなくていい。

$ su
$ sudo visudo

nanoが開くので%sudoの下に

username ALL=(ALL) ALL

を書き加える。ctrl + X , y , Enterで保存して終了できる。

$ exit

でrootから抜ける。

$ sudo pwd

を実行してみる。パスワードが求められた後実行できたら成功。

PetaLinuxとVivadoのDL

 先ほど作成したUbuntuを起動する。ここから先はUbuntu内での作業。

 DL時に「You have chosen to open:」と表示されるので「Save File」にチェックを入れる。
 
 Firefoxを使って

https://japan.xilinx.com/support/download/index.html/content/xilinx/ja/downloadNav/embedded-design-tools/2022-1.html

ここからPetaLinux2022.1 インストーラーをDLする。

 同様に

https://japan.xilinx.com/support/download/index.html/content/xilinx/ja/downloadNav/vivado-design-tools/2022-1.html

 ここから「ザイリンクス統合インストーラー2022.1:Linux用自己解凍型ウェブ インストーラー」をDL

何があってもPetaLinuxツールとVivadoのバージョンは合わせる

 DLしたPetaLinuxツールと統合インストーラーは後ほど使う。おそらくダウンロードフォルダに入っているのでファイルを開いてホーム(/home/username)に移動しておく。

dashをbashにする。

 ターミナルで

$sudo dpkg-reconfigure dash

 ダイアログが出るので「いいえ」を選択。

PetaLinuxの準備

 

PetaLinuxツールをインストール

権限を付与

$ chmod +x ./petalinux-v2022.1-04191534-installer.run

インストールを実行

$ ./petalinux-v2022.1-04191534-installer.run --dir ~/Petalinux

 しばらく眺めてるとライセンスに承諾するか聞かれるのでEnterを押す。ライセンスを読んだらqで離脱してyを押してEnter。

 承諾する必要があるライセンスは2つ。

PetaLinuxのパスを設定

$ source ~/Petalinux/settings.sh

WARNING出るけど

$ echo $PETALINUX

を実行して/home/username/Petalinuxと出ればOK

.bashrcにパスの設定を打ち込む

 毎回sourceコマンドを打つのは面倒なのでターミナル起動時に自動実行してくれるように設定する。

$ nano ~/.bashrc

で、.bashrcを開く。

 一番下の何もない行に

source ~/Petalinux/settings.sh

を追加する。(ctrl + X → y →Enterで完了)


これでPetalinux 開発環境のセットアップは完了

Vivadoのインストール

権限を付与

$sudo chmod +x Xilinx_Unified_2022.1_0420_0327_Lin64.bin

 インストーラを実行

$sudo ./Xilinx_Unified_2022.1_0420_0327_Lin64.bin

 GUIが開くので順番に入力していく。

  1. Next、アカウントのメアドとパスワードを入力してNext
  2. VivadoにチェックNext
  3. Vivado ML Standrdを選択Next
  4. Next
  5. ライセンスは全部Agree、Next
  6. Nextを押してOK押してInstallを実行。

 容量が足りないとここで文字が赤く表示される。200GB用意しておけば余計なことをしない限り足りるはず。ここからの所要時間はメモリとコアの割当によるけどかなり掛かる。2時間ぐらいかかることもある。

ダウンロードケーブル (プログラマー) のドライバ・インストール

$ cd /tools/Xilinx/Vivado/2022.1/data/xicom/cable_drivers/lin64/install_script/install_drivers

$ sudo ./install_drivers

 CRITICAL WARNING出るけど無視

パスの設定

$source /tools/Xilinx/Vivado/2022.1/settings64.sh

 先程と同様にbashに書き込む

$ nano ~/.bashrc

 一番下の行に

source /tools/Xilinx/Vivado/2022.1/settings64.sh

$ vivado

と入力すればvivadoが起動する。インストール完了。

Vivadoでプロジェクトの作成

Digilentボードファイルをインストールする。

https://github.com/Digilent/vivado-boards/archive/master.zip

 zipを解凍したやつをホーム(/home/username)においておく

 ZyboのボードファイルをVivadoのフォルダにつっこむ。

$ sudo mkdir ../../tools/Xilinx/Vivado/2022.1/data/boards/board_files
$ sudo cp -r vivado-boards-master/new/board_files/* ../../tools/Xilinx/Vivado/2022.1/data/boards/board_files

Create Project

 ボードファイルをつっこんだらvivadoを再起動してcreate projectを選択する。設定は以下の通り。

  • フォルダの場所はここではhome直下とした(デフォルト)
  • プロジェクトの名前はproject_1(デフォルト)
  • Default Partで左上のBordsを選択Vendorでdigilentinc.com
  • Zybo Z7-10を選択


複数のwindowからなるGUIが出てきたらprojectの作成完了。


PetaLinux をビルドする

 Vivadoを起動して"Create Project"を選択。

 フォルダの場所はここではhome直下とした(デフォルト)
 Default Partで左上のBordsを選択Vendorでdigilentinc.comを選び、Zybo Z7-10を選択

Vivadoでブロックデザインの作成
  1. AddSourceでCreateSourceを選択。名前はここでは"test"にした。
  2. 左のメニューからCreate Block Designを実行。名前はここではdesign_1にした。
  3. DiagramのAdd(+マーク)を押してZYNQ7 Prosessing Systemを選択,Run Block Automationをクリック
  4. M_AXI_GP0_ACLKとFCLK_CLK0をつなげる(直接クリック&ドラッグでつなげる)
  5. Sourcesタブの(ないならWindowから選択)design_1を右クリックしてCreate HDL Wrapperを行う。
  6. 左下のGenerate Bitstreamを実行。
  7. 実行が完了したらFileからExport、Export HardwareでInclude bitstreamにチェックを入れて実行
PetaLinux プロジェクト作成

 プロジェクトを生成する。

$cd /home/username/project_1
$petalinux-create --type project --template zynq --name peta_project
$cd peta_project
$petalinux-config --get-hw-description=../design_1_wrapper.xsa

 メニューが表示されるので

  1. Image Packaging Configurationを選択
  2. Root filesystem type ~ --->を選択
  3. EXT4(SD/eMMC/SATA/USB)を選択
  4. SaveしてOK,EXIT、その後Exitを2回押して完了。

PetaLinuxをビルドする。

$petalinux-build

 失敗してもめげずに再実行。数回やってダメならエラーの原因を特定して直しましましょう(適当)

[INFO] Successfully built projectと出れば成功!


USBを認識させる

 参考にしました。
qiita.com

  1. ゲストOSをシャットダウンする。
  2. 認識させたいUSB端子をホストに指す。
  3. VirtualBoxのゲストOSの設定でUSBを選択
  4. 右のUSBに+のマークで認識させたいUSB端子を選択する。
  5. 追加したUSB端子を右クリックで編集。メーカー、製品名、シリアルNo.を削除してOK
  6. OKを押して認識させたいUSB端子を抜いてゲストOSを起動。
  7. その後認識させたいUSB端子を挿せば認識する。

PetaLinuxの実行

$ cd /home/username/project_1/peta_project
$ petalinux-package --boot --force --fsbl images/linux/zynq_fsbl.elf --fpga images/linux/system.bit --u-boot

 Bootimage generated successfullyが出れば成功。WARNINGは無視していい。

microSDカードのパーティション設定

 今回は32GBのSDカードを使用。



 SDカードの所在を確認する。

$lsblk

 わからない場合はUSBを抜いてもう一度実行。前後の違いで判別できる。大抵sdbにある。

 今回はsdbにあった場合の実行を記す。


 fdiskを実行する。パーティションの編集ができる。

$sudo fdisk /dev/sdb

既存のパーティションを削除する。

 "d"でパーティションを削除する。複数パーティションがある場合番号を聞かれる。全削除したいので1,2,3,...と1回ずつ行う。"i"を実行して「パーティションは何も設定されていません」と表示されれば完了。


新しいパーティションの設定

 BOOT(200MB)とROOT(余りの部分に分ける。

  1. "n"を実行。パーティションの作成を行う。
  2. "p"を選択。
  3. "1"を選択。
  4. "2048"を入力
  5. "411648"を入力
  1. "n"を実行。
  2. "p"を選択。
  3. "2"を選択。
  4. 入力せずエンターを2回押す。

 "w"で保存。$reboot で再起動する。

 再起動後

$sudo fdisk /dev/sdb

 で"i"を実行してパーティション1,2をチェックする。1が200MiBになってて、2も設定できてそうなら完了。
 "w"でfdiskを完了。


$lsblk

 を実行してsdbのツリーがsda1,sda2(デフォルトではこうなる)であることを確認する。今後はそれを前提にコマンドを実行する。異なる場合はその都度パスを変更する。


パーティションファイルシステムを設定する。

$ sudo mkfs.vfat /dev/sdb1
$ sudo mkfs.ext4 /dev/sdb2

(ちょっとだけ時間がかかるので焦らずに待つ)


microSDカードに PetaLinux イメージを書き込む

いよいよmicroSDにマウントする。

$ sudo mkdir /home/username/BOOT
$ sudo mount /dev/sdb1 /home/username/BOOT
$ sudo mkdir /home/username/ROOT
$ sudo mount /dev/sdb2 /home/username/ROOT

$ cd /home/username/project_1/peta_project/images/linux/

$ sudo cp BOOT.BIN boot.scr image.ub /home/username/BOOT/
$ sudo tar xf rootfs.tar.gz -C /home/username/ROOT/

$ sync

 これでSDカードにマウントは完了。Ubuntuを落としてSDカードリーダーを引っこ抜いて良い。

 次の段階に移る前に、ボードとACアダプタを手元に用意する。

 ボードのジャンパーピンをWALL-VU5VOとSD-QSPIでそれぞれショートさせる。

 ACアダプタを接続してボードの電源スイッチをONにする。

 必ずACアダプタのVとWを確認する。5Vで12.5W以上が必要だが、VやWが大きすぎると故障の原因となる。

 ランプが光れば準備完了。

Linuxの起動

 一旦ボードの電源をOFFにする。

 ゲストOSのUbuntuを一旦終了する。

 ボードとPCをUSB-micro USBケーブルでつなぐ。

 Virtual Boxの設定を開き、USBを認識させる。

gtktermのインストールと設定

 Ubuntuを起動し
 

dmesg | tail -f

を実行してボードとPCをつなぐUSBのポートを確認する。デフォルトでは /dev/tty/USB1


 gtktermをインストールする。

$ sudo apt install gtkterm

 gtktermを実行する。

$ sudo gtkterm


 gtktermが起動したらConfigration > portを選択。
 
 以下の設定に変更する。

 - Portを/dev/tty/USB1
 - Band Rateを115200
 - Parityをnone
 - Bitsを8
 - Stopbitsを1
 - Flow controlをnoneに設定。


 OKで設定が完了。


PetaLinuxの起動

 Zyboの電源をONする。

 一斉に文字が流れてPetaLinuxが起動する。

 peta_project login: が表示される。ログイン名はpetalinux。

 パスワードを設定すれば完了。

$ echo Hello_World

と実行して"Hello_Worldと表示されれば成功!!お疲れ様でした。




(sudo権限は付与されてるけどrootに入れない。まだまだ検証が必要かも)

サーバー上でXserverが使えなくなったが何とか直した話

自分用のメモです。 

 

 研究室内のサーバーにVScodessh接続して解析ツールを使っていました。

 実験で習得したデータが正しいか、ヒストグラムを書いて確認…

 だがXserverが機能せず…GUIが出てこない!!

 

 ということで解決法をメモしておきます。

 

 使用したサーバーとPCは同一のLANにあります。

 私の環境でしか動かない可能性があります。念のためね。

 

1.環境変数を設定する。

export DISPLAY=IPアドレス:0.0

 赤文字には自身のIPアドレスを入力してください。arp -aとかで確認できます。

 これを打つだけ。いかがでしたか!!!

 

 ・・・と言っても、毎回起動するたびにIPを確認するのは面倒。

 固定IPを使えば解決するが、ssh接続したタイミングでコマンドを(IPを自動取得した上で)実行してくれれば言うことがない。

 

2.bashrcにシェルスクリプトを書く

たったの1行です。

export DISPLAY=$(arp -a | grep MACアドレス | echo $(cut -b 4-14):0.0)

 

 MACアドレスは機種に固有の名前です。物理アドレスと呼ばれることもあります。どこかのAppleとは無関係です。

 

 MACアドレスの調べ方はOSによって異なるので各自調べてください。すぐに見つかります。

 

 XX:XX:XX:XX:XX:XX のように、12桁のアルファベットと数字で構成されています。

 

 何やってるか一応書きます。

  • arpでネットワーク内のIPと対応するMACアドレスを調べます。 
  • 実行結果を | で右のgrepに渡し、grepはこの機種のMACアドレスのある行を切り取ります。
  • 結果を | でcutに渡します。4バイト目から14バイトまでを切り取ってIPを習得します。(IPの長さによってはバイト数変わるかも…)
  • それに:0.0をくっつけてDISPLAYにexport

 

 いかがでしたか!

 

他の解決方法

 MobaXtermを使えば解決!!でもVScode使いたいよね、分かる。

 

 

最後に

 このシェルスクリプトは7割以上友人に書いてもらいました。感謝

 同様の現象はVScode以外でも確認されています。役に立てば幸いです。

 

 読んでくれてありがと、ではまた。

 

コマブロだけで疑似的にレシピを追加する Minecraft(JE)

ふと、コマブロだけでクラフトレシピが追加できないか思い立ち、色々試したので共有。

 

本+エメラルドでエンチャントされた本をクラフトしてみます。

 

コマンドの作成にはMCstacker様を使わせていただきました。

 

レシピの設定

上向きのドロッパーを2つ用意します。

 

説明のためにA,Bと呼びます。

 

上向きドロッパーA,B

 

ドロッパーAの横に赤石ブロックを置きます。Bに入力が入らないように注意します。

ドロッパーのテクスチャを変えて見やすくしてます。

 

それではドロッパーAにアイテムを入れます。

 

これがそのままレシピになります。

 

アイテムを重ねても問題ない。

 

Bには完成品を入れます。

 

 

次にコマンドです。リピートコマンドブロックを用意して以下のコマンドをコピペします。

 

/execute as @e[tag=craft] at @s if blocks [座標A] [座標A] ~ ~-1 ~ masked run clone [座標B] [座標B] ~ ~-1 ~ replace

[座標A]にはドロッパーAの座標を、[座標B]にはドロッパーBの座標を入力します。

 

リピート 無条件 常時実行

 

レシピの設定は以上です。

 

 

 

作業台の設定

 

レシピを作りましたが、肝心の作業台がありません。

もちろん、普通の作業台を使ってもクラフトはできません。

 

そこで特殊な作業台を作りたいと思います。

 

 

以下のコマンドを先ほどのリピートコマブロにチェーンしてください。

/execute at @e[type=item,nbt={Item:{id:"minecraft:magma_cream",Count:1b,tag:{craft_ball:0}}}] run summon armor_stand ~ ~ ~ {Tags:["craft"]}

 

常時実行を忘れずに

 

次のコマンドをチャットで実行してください。

/give @p magma_cream{HideFlags:1,craft_ball:0,Enchantments:[{id:"minecraft:infinity",lvl:1s}]} 1

 

これが手に入る

このアイテムを捨てて、アーマースタンドが召喚されればOKです。

 

アーマースタンドを透明にしてもよいですが、サバイバルで破壊できなくなります。

 

 

 

実際にクラフトする

 

さきほど手に入れたマグマクリームをもって上向きドロッパーの上に乗ります。

 

マグマクリームを捨ててアーマースタンドをドロッパーの上に召喚します。

 

アーマースタンドが乗ってる間、このドロッパーが特殊作業台になります。

 

こんなかんじ

 

ドロッパーの側面にレバーを付けておきます。

 

クラフトしてみましょう!!

 

作ったレシピ通りにアイテムを並べて…

 

レバーを引くと…

 

 

 

できた!!!

 

 

ということで完成です。

 

 

レシピの追加はドロッパーA,Bを追加するだけです。

 

 

おまけ

マグマクリームからアマスタをわざわざ召喚したのは、交易でアイテム交換→それを使って作業台を作る。とやりたかったからです。

 

もちろん、アマスタをsummonしても使えます。

/summon armor_stand ~ ~ ~ {Tags:["craft"]}

 

村人のコマンドも一応置いておきます。

/summon villager ~ ~ ~ {Invulnerable:1b,Tags:["craft"],VillagerData:{profession:"minecraft:nitwit"},Offers:{Recipes:[{rewardExp:0b,maxUses:10000000,xp:0,buy:{id:"minecraft:emerald",Count:1b},sell:{id:"minecraft:magma_cream",Count:1b,tag:{HideFlags:1,craft_ball:0,Enchantments:[{id:"minecraft:infinity",lvl:1s}]}}}]}}

*1

 

 

 

最初にドロッパーAの横に赤石ブロックを置いたやつですが、アレがないと動きません。

どうやらマイクラのバグでドロッパーをcloneでドロッパーに置き換えた時、中身が読み込まれないみたいです。

 

そこで強制的に読み込みを行わせるために

赤石入力ONのA→赤石入力OFFのB

とcloneして、レバーの赤石入力で更新させることで中身を読み込ませています。

 

まぁ…おまじないだと思っておきましょう!

*2

 

ここまで読んでくれてありがとう!またね!

*1:交易内容はエメラルド1つ→マグマクリームにしてます。

*2:1tickの赤石入力で壊れるかも…?大丈夫だと思いますが…