- 投稿日:2021-01-09T22:04:46+09:00
Excel 2019 for Mac VBAでAppleScriptをインストールする2
Excel 2019 for Mac VBAでAppleScriptをインストールする2
あけましておめでとうございます。新年もよろしくお願いします。
昨年、VBAでAppleScriptをインストールする方法を書きましたが、その時に2点問題点を上げました。
- AppleScriptコードのインラインがややこしい
- 作成したAppleScriptファイルを直接、ハイパーリンクで開けない
今回はその問題点を解決していきたいと思います。
AppleScriptコードのインラインがややこしい
AppleScriptをVBAインライン化するWEBアプリAppleScript2VBAを作成しました。
UTF-8のAppleScriptファイルをアップロードし、変換するとFunctionの形でインライン化されます。
インライン化されたスクリプトをテキスト出力したものを実行することで自動的に ~/Library/Application Scripts/com.microsoft.Excel/ にインストールされるようになっています。
サンプルコード
Sub a2vcheck() Dim root As String Dim path1 As String Dim appscript As String root = "/Users/Shared" path1 = root & Application.PathSeparator & "as2vbaTest3.applescript" MsgBox (path1) applescript = FormeA2V3() Open path1 For Output As #2 Print #2, applescript Close #2 ActiveWorkbook.FollowHyperlink Address:=root End Sub 'AppleScript2VBA変換コード Function FormeA2V3() As String Dim code As String code = "set root to (path to home folder) as string" & vbNewLine & "set mkEdir to root & " & ChrW(34) & "Library:Application Scripts:" & ChrW(34) & vbNewLine _ & "set tgtpath to root & " & ChrW(34) & "Library:Application Scripts:com.microsoft.Excel:" & ChrW(34) & vbNewLine & "set mkas to tgtpath & " & ChrW(34) & "test.applescript" & ChrW(34) & vbNewLine & vbNewLine _ & "set asval to " code = code & ChrW(34) & "on lt8(rpath)" & ChrW(34) & "& linefeed & " code = code & ChrW(34) & " try" & ChrW(34) & "& linefeed & " code = code & ChrW(34) & " set txt to read (rpath) as " & Chr(-32397) & "class utf8" & Chr(-32396) & ChrW(34) & "& linefeed & " code = code & ChrW(34) & " on error number err_num" & ChrW(34) & "& linefeed & " code = code & ChrW(34) & " set txt to false" & ChrW(34) & "& linefeed & " code = code & ChrW(34) & " end try" & ChrW(34) & "& linefeed & " code = code & ChrW(34) & " return txt as text" & ChrW(34) & "& linefeed & " code = code & ChrW(34) & "end lt8" & ChrW(34) code = code & vbNewLine & "tell application " & ChrW(34) & "Finder" & ChrW(34) & vbNewLine & "if not (exists tgtpath) then" & vbNewLine & "make new folder at mkEdir with properties {name:" & ChrW(34) & "com.microsoft.Excel" & ChrW(34) & "}" & vbNewLine & "end if" & vbNewLine & "end tell" & vbNewLine _ & vbNewLine & "try" & vbNewLine & "set tfile to open for access file mkas with write permission" & vbNewLine & "set eof of tfile to 0" & vbNewLine & " write asval to tfile" & vbNewLine & "end try" & vbNewLine & vbNewLine & "close access tfile" & vbNewLine & vbNewLine _ & "tell application " & ChrW(34) & "Finder" & ChrW(34) & vbNewLine & " open tgtpath" & vbNewLine & "end tell" FormeA2V3 = code End Function作成したAppleScriptファイルを直接、ハイパーリンクで開けない
試行錯誤した結果、先に同名の空ファイルを作成した後に上書きすることでハイパーリンクで開けるようになりました。十分時間をあける必要があるようです。
これはあくまで想定ですが、OSがインデックスファイルを作成する前にハイパーリンクで開くとエラーが発生するように見受けられました。
実際の挙動
実際に実装したGIFがこちらです。
実装する場合はユーザーに警告を表示したりとしっかり説明する必要があると思います。
AppleScript2VBAはMIT Licenseなので自由にお使いください。バグが発生した場合は私のサイトから連絡していただければ幸いです。
- 投稿日:2021-01-09T18:45:24+09:00
【M1】MacにHomebrwがインストールできない「zsh: command not found: brew」
2020年11月11日以降に購入したボクのMacBookに、Homebrwがインストールできないといった問題が起きました。(エラー
zsh: command not found: brew
)調べたところ、最新のMacBookのCPUにはApple社が開発した「M1」と言うモノを使っているみたいで、この「M1」が原因でMacにHomebrwがインストールできないみたいです。同じように2020年11月11日以降に最新のMacBookを購入して、Homebrwがインストールできない方は以下の方法を試してみて下さい。MacBookのCPU (プロセッサ)を調べる
ターミナルから調べる方法
ターミナルから以下のコマンドを実行して下さい。実行するとCPUの情報が取得できます。
terminal$ sysctl -a machdep.cpu.brand_string ## 実行結果 machdep.cpu.brand_string: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHzGUIから調べる方法
- PC左上の、「apple」のボタンをクリック
- 「このMacについて」をクリック
- macOSの下欄に書いてあるプロセッサの情報を見る
ターミナルの設定を 「Rossetaを使用して開く」 に変更する
CPUがM1だった場合、ターミナルの設定を、Rosseta使用して開くに変更しないと、Homebrewはインストールができません。
- ファインダーの検索窓で 「ターミナル」 と検索
- 出てきたターミナルを右クリックして、 「情報を見る」 をクリック
- 「Rosseta使用して開く」 (またはRosseta2) 左横のチェックボックスにチェックを入れる
- ターミナルを再起動
再度Homebrwをインストール
ターミナルを起動し、以下のコマンドを入力して Homebrew をインストールしてみて下さい。今度はうまくいくはずです。Homebrewホームページ
terminal$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"確認
terminalbrew -v # 実行結果 Homebrew 2.6.2これまでの設定でまだHomebrwが入らない方は、ターミナルのRossetaを使用して開くがうまく反映されていない可能性があるので、Macbookを再起動して、再度挑戦して下さい。
ありがとうございました。参考
https://qiita.com/shira-shun/items/0f6213f4923cb5544367
https://freeheroblog.com/first-conf/
- 投稿日:2021-01-09T17:27:09+09:00
MacBook Proが突然ブラックアウトした
前書き
タイトルにもあるように突然画面が消えた。なんだかこんな現象が前にもあった気がする。。
キーボードを押しても何しても反応がない。ただ調べてみるとあっけなく復活したので記事にする。(自分のマックだと何回も起こりそうだし、、)結論
再起動をするためにタッチIDを押してみる。ここで反応がなければSMCリセットを実行する。
SMCリセットはマックの電源が落ちている状態で電源を繋ぎ「シフト」「コントロール」「オプション」「電源ボタン」の4つを10秒同時に長押しし、同時に離す。これにより完全に電源が落ちるので電源ボタン(タッチID)を押して再度起動させる。
以上です!
めちゃくちゃ簡単で特に何もつまることはないのですが定期的に落ちるのが謎で腹が立ちます笑
私は神戸市に住んでいるのですが大寒波の影響で-9度にまで冷え込んでいるのも原因だったのかもしれません。PS
開発環境を開いたままブラックアウトするとmysqlに必要なファイルが消えてしまうことがあるようです。以前にも消えたことがあったので冷静に対処しました笑
その時の記事です↓
https://qiita.com/soshiro/items/9f62632005f34af24248
- 投稿日:2021-01-09T15:44:32+09:00
MacからWindowsへPC名でリモートデスクトップ接続
普段使いは Mac だが Windows の作業機会が増えてきたため、このたび Mac から Windows を操作できるようにしました。
リモートデスクトップ機能は Mac と Windows の端末を個別に持っており、用途によって頻繁に使い分ける必要がある人にオススメの機能です。確認環境
・ macOS:macOS Catalina 10.15.5
・ Windows:Windows Pro 20H2 (OS ビルド 19042.685)
・ Microsoft Remote Desktop:10.5.0(1841)
注意 : リモートデスクトップ接続は Windows Pro のみの機能で Windows Home では利用できません。以前は Windows の PC 名での接続設定は煩雑で IP 指定で接続するドキュメントが多かったようですが、今回試した Windows のバージョンではとても簡単に設定することができるようになっているようです。
事前準備
リモート接続までの事前準備は大きく6ステップ。最初に Windows 側の設定を行い、その後 Mac 側の設定を行います。
- 【Windows側作業】リモート接続の許可設定
- 【Windows側作業】PC名の確認
- 【Windows側作業】PC名で名前解決できることを確認
- 【Mac側作業】PC名.local で名前解決できることを確認
- 【Mac側作業】Microsoft Remote Desktop のインストール
- 【Mac側作業】Microsoft Remote Desktop の設定
Windows側作業
リモート接続の許可設定
Windows の検索フォームに
リモート
と入力し、表示された検索結果からリモート デスクトップの設定
を選択します。
「リモート デスクトップ」が表示されたら
リモートデスクトップを有効にする
の設定をオン
に設定します。
次にリモート接続時に PC がスリープモードにならないように
PCが電源に接続されている場合は....
の横設定の表示
を押下し、 「電源とスリープ」からスリープの設定なし
を選択します。
PC名の確認
Windows の検索フォームに
デバイス名
と入力し、表示された検索結果からPC 名を表示する
を選択します。
デバイス仕様
のデバイス名
がリモート接続する際に利用する PC 名となります。変更したい場合にはこのPCの名前を変更
ボタンから行ってください。
注意 : PC 名は予期せぬトラブルを回避するため英数字を推奨します。
WindowsのPC名の名前解決の確認
Windows の検索フォームに
Power
と入力し、表示された検索結果からWindows PowerShell
を選択します。
表示されたウィンドウに以下コマンドを入力します。
$ Resolve-DnsName PC名以下のような表示がなされれば確認完了です。
PS C:¥> Resolve-DnsName PC名 Name Type TTL Section IPAddress ---- ---- --- ------- --------- ...省略... PC名 A 1200 Question 192.168.1.194Mac 側作業
PC名.local で名前解決できることを確認
Spotlight検索で
Terminal
と入力し、Terminalを起動します。
表示されたウィンドウに以下コマンドを入力します。
$ dns-sd -G v4v6 PC名.local以下のような表示がなされれば確認完了です。
$ dns-sd -G v4v6 PC名.local DATE: ---Sat 09 Jan 2021--- 11:52:04.339 ...STARTING... Timestamp A/R Flags if Hostname Address TTL ...省略... 11:52:04.541 Add 2 5 PC名.local. 192.168.1.194 60Microsoft Remote Desktop のインストール
Mac の App Store で
Microsoft Remote Desktop
を検索して、インストールする。
Microsoft Remote Desktop の設定
Micro Remote Desktop を起動して、
+
ボタンからAdd PC
を選択する。
PC name
に PC名.local を入力し、Add
ボタンを押下する。
リモートデスクトップ接続の実施
接続の開始は Microsoft Remote Desktop で右クリックをし、
Connect
を選択することで行う。接続の際に求められるユーザー名、パスワードはWindowsのものを指定する。
接続に成功すると Mac のウィンドウ上に Windows の画面が表示される。
参考情報
- 投稿日:2021-01-09T15:44:32+09:00
PC名でMacからWindowsにリモートデスクトップ接続する
普段使いは Mac だが Windows の作業機会が増えてきたため、このたび Mac から Windows を操作できるようにしました。
リモートデスクトップ機能は Mac と Windows の端末を個別に持っており、用途によって頻繁に使い分ける必要がある人にオススメの機能です。確認環境
・ macOS:macOS Catalina 10.15.5
・ Windows:Windows Pro 20H2 (OS ビルド 19042.685)
・ Microsoft Remote Desktop:10.5.0(1841)
注意 : リモートデスクトップ接続は Windows Pro のみの機能で Windows Home では利用できません。以前は Windows の PC 名での接続設定は煩雑で IP 指定で接続するドキュメントが多かったようですが、今回試した Windows のバージョンではとても簡単に設定することができるようになっているようです。
事前準備
リモート接続までの事前準備は大きく6ステップ。最初に Windows 側の設定を行い、その後 Mac 側の設定を行います。
- 【Windows側作業】リモート接続の許可設定
- 【Windows側作業】PC名の確認
- 【Windows側作業】PC名で名前解決できることを確認
- 【Mac側作業】PC名.local で名前解決できることを確認
- 【Mac側作業】Microsoft Remote Desktop のインストール
- 【Mac側作業】Microsoft Remote Desktop の設定
Windows側作業
リモート接続の許可設定
Windows の検索フォームに
リモート
と入力し、表示された検索結果からリモート デスクトップの設定
を選択します。
「リモート デスクトップ」が表示されたら
リモートデスクトップを有効にする
の設定をオン
に設定します。
次にリモート接続時に PC がスリープモードにならないように
PCが電源に接続されている場合は....
の横設定の表示
を押下し、 「電源とスリープ」からスリープの設定なし
を選択します。
PC名の確認
Windows の検索フォームに
デバイス名
と入力し、表示された検索結果からPC 名を表示する
を選択します。
デバイス仕様
のデバイス名
がリモート接続する際に利用する PC 名となります。変更したい場合にはこのPCの名前を変更
ボタンから行ってください。
注意 : PC 名は予期せぬトラブルを回避するため英数字を推奨します。
WindowsのPC名の名前解決の確認
Windows の検索フォームに
Power
と入力し、表示された検索結果からWindows PowerShell
を選択します。
表示されたウィンドウに以下コマンドを入力します。
$ Resolve-DnsName PC名以下のような表示がなされれば確認完了です。
PS C:¥> Resolve-DnsName PC名 Name Type TTL Section IPAddress ---- ---- --- ------- --------- ...省略... PC名 A 1200 Question 192.168.1.194Mac 側作業
PC名.local で名前解決できることを確認
Spotlight検索で
Terminal
と入力し、Terminalを起動します。
表示されたウィンドウに以下コマンドを入力します。
$ dns-sd -G v4v6 PC名.local以下のような表示がなされれば確認完了です。
$ dns-sd -G v4v6 PC名.local DATE: ---Sat 09 Jan 2021--- 11:52:04.339 ...STARTING... Timestamp A/R Flags if Hostname Address TTL ...省略... 11:52:04.541 Add 2 5 PC名.local. 192.168.1.194 60Microsoft Remote Desktop のインストール
Mac の App Store で
Microsoft Remote Desktop
を検索して、インストールする。
Microsoft Remote Desktop の設定
Micro Remote Desktop を起動して、
+
ボタンからAdd PC
を選択する。
PC name
に PC名.local を入力し、Add
ボタンを押下する。
リモートデスクトップ接続の実施
接続の開始は Microsoft Remote Desktop で右クリックをし、
Connect
を選択することで行う。接続の際に求められるユーザー名、パスワードはWindowsのものを指定する。
接続に成功すると Mac のウィンドウ上に Windows の画面が表示される。
参考情報
- 投稿日:2021-01-09T13:40:18+09:00
ローカル環境でDrupalを起動するなら、quick-startコマンドが便利
Mac OSのローカル環境でDrupalを起動する最速の方法が見つかりました。
要件
PHP 7.3 以上
ダウンロード
まずComposer経由でDrupalをダウンロードし、作業ディレクトリに移動します。Composerはバージョン1でも2でもどちらでも可能です。
$ composer create-project drupal/recommended-project my-drupal $ cd my-drupalインストール&ログイン
作業ディレクトリに移動したら、以下のコマンドを打ちます。
$ php web/core/scripts/drupal quick-start standard # composer未使用の方は→ php core/scripts/drupal quick-start standard他に引数に指定できるのは
demo_umami
(フードマガジンのデモサイト)、minimal
(最低限のモジュールがインストールされたもの)があります。ブラウザで自動的に http://localhost:8888 にアクセスされます。これで気軽にDrupalを色々いじれますよ!
Composerが未インストールの方は、Drupal.orgからZipファイルをダウンロードすることで同様のことが実現できます。Composer経由でダウンロードする場合とZipファイルではドキュメントルートが異なるので、quick-startコマンドを実行するパスにご注意ください。
$ mkdir my-drupal $ cd my-drupal $ curl -sSL https://www.drupal.org/download-latest/tar.gz | tar -xz --strip-components=1 $ php core/scripts/drupal quick-start standard今までローカルで簡易的にDrupalを起動するのにPHPのビルドインの簡易サーバー(php -S)を直接実行していたのですが、うまくいかない部分があったので、やはりコンテナ(DDEVやLandoなど)使うしかないのか・・でも少し立ち上げに時間がかかるしなぁ・・と感じていていて色々ググったところ、quick-startコマンドを見つけました。と言っても、このコマンドが紹介されているEvaluator Guideは前から知っていたのですが、Umamiデモサイト以外のインストールプロファイルを選択できるのは知りませんでした!
web/core/scripts/drupal ファイルから、web/core/lib/Drupal/Core/Command/ ディレクトリのQuickStartCommand.phpファイル、InstallCommand.phpファイルが順で呼び出されます。
インストールプロファイルは、 web/core/profiles/ ディレクトリと web/profiles/ ディレクトリ(ディストリビューションのプロファイルはこちらのディレクトリに格納される)内から探索され、隠しプロファイル(xx.info.ymlのhidden値がtrueとなっているもの)を除いたインストールプロファイルが選択可能と見なされます。
- 投稿日:2021-01-09T11:35:57+09:00
QEMU on M1 Mac
QEMU on M1 Macの話を独立(2021/01/09)
動いたOS(とその一部感想)
- Windows ARM (aarch64 + hvf)
- 速い(特に起動と終了)。普段の動作もIntel Mac上のエミュで動かしてたWindowsとは桁違いに速い。
- x86_64エミュレーションも動くのでかなりのソフトが動く(Office とか Git とか Pythonとか)
- Ubuntu 20.04LTS (aarch64 + hvf)
- CentOS 7 (aarch64 + hvf)
- どちらも下手な Intel マシンに入れてるより速い。
- Raspberry Pi OS 64bit (aarch64 + tcg)
- 実機(Raspberry Pi 3B)より速い…
- Raspberry Pi OS 32bit (arm + tcg)
- 画面の描画が遅い。起動時にはフリーズしたかと思うぐらい黒い画面で待たされる。
- Lubuntu 20.04LTS (x86_64)
- 画面の描画が遅いが,デスクトップ環境を使わないなら x86_64 のエミュレーションも十分使える感じ。
- Windows 98SE (i386)
- 昔使ってたi386マシンで動かしてた時より速い。
- MacOS X 10.5 Leopard (PPC)
- 遅い・・・
ビルド+インストールの話
全般的に niw さんの Gist が参考になる。ARM 版 Windows 10 を試すだけならこれで十分。Raspberry Pi OSを動かしたり,x86_64やi386ののエミュレーションを動かしたい場合は,UTM.app または UTM.app が公開しているパッチを当てた QEMU がおすすめ。
- ARM 版 Windows 10 を Hypervisor.framework のパッチをあてた QEMU を使って Apple Silicon な Mac で動かす(niwさんのGist)
- utmapp/qemu(GitHub)
色々パッチを当てた最新版
- UTM.app版は色々手が入ってていいんだけど,Hypervisor.frameworkパッチが少し古かったり,ベースが最新じゃなかったりするので,最新の QEMU のソースに色々パッチを当てて作るといい感じ。
- 最新のQEMUのソースに色々とTCG周りの修正が取り込まれ,2番目の手順がちょっとややこしくなった。(2021/01/09追記)
QEMUのソースを本家からとってくる。
shell$ git clone https://git.qemu.org/git/qemu.gitパッチを当てる(2021/01/09更新)
パッチを当てる準備(ディレクトリの移動と新しいブランチの作成)
shell$ cd qemu $ git checkout master -b wip/hvfまずHypervisor.framework周りのパッチを当てる。これで qemu-system-aarch64 で
-accel hvf
オプションが使えるようになる。shell$ curl 'https://patchew.org/QEMU/20201211151300.85322-1-agraf@csgraf.de/mbox' | git am -3次に iOS/macOS 周りのパッチを当てる。ただし,途中2つほどパッチが当たらない。当たらないパッチは以下の2つだが,当てなくても動作に支障ない(多分)ので,その都度
git am --skip
をしてパッチを飛ばす。
- configure: option to disable host block devices
- coroutine: add libucontext as external library
shell$ curl 'https://patchew.org/QEMU/20210105022055.12113-1-j@getutm.app/mbox' | git am -3(Optional)ARM周りのパッチを当てる。特に必要ないけど気分で…
shell$ curl 'https://patchew.org/QEMU/20210108153621.3868-1-peter.maydell@linaro.org/mbox' | git am -3最後に Big Sur の openFile: が deprecate になってることに対応するパッチを当てる。当てなくても特に問題はない。
shell$ curl 'https://patchew.org/QEMU/20210102150718.47618-1-r.bolshakov@yadro.com/mbox' | git am -3ビルドしてインストール(下の例では /opt/QEMU に入れるようにしている。このディレクトリを作成し,書き込み許可を与えておくこと)
shell$ cd qemu $ mkdir build $ cd build $ ../configure --prefix=/opt/QEMU --target-list=aarch64-softmmu,arm-softmmu,x86_64-softmmu,i386-softmmu,ppc-softmmu --enable-cocoa $ make -j (途中の出力略) $ make installHypervisor.framework を利用できるように署名をする。
まず以下のような内容のファイルを作成する(ファイル名はここでは entitlements.plist とする)
entitlements.plist<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.security.hypervisor</key> <true/> </dict> </plist>これを指定して署名をする。
shell$ codesign --entitlements entitlements.plist --force -s - /opt/QEMU/bin/qemu-system-aarch64UTM.app版
- Hypervisor.frameworkパッチは最新ではないけど,パッチを当てたりするのが手間ならこちら。
QEMUのソースを GitHub からクローンする。
shell$ git clone https://github.com/utmapp/qemu.gitビルドしてインストール(下の例では /opt/QEMU に入れるようにしている。このディレクトリを作成し,書き込み許可を与えておくこと)
shell$ cd qemu $ mkdir build $ cd build $ ../configure --prefix=/opt/QEMU --target-list=aarch64-softmmu,arm-softmmu,x86_64-softmmu --enable-cocoa $ make -j (途中の出力略) $ make installHypervisor.framework を利用できるように署名をする。
まず以下のような内容のファイルを作成する(ファイル名はここでは entitlements.plist とする)
entitlements.plist<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.security.hypervisor</key> <true/> </dict> </plist>これを指定して署名をする。
shell$ codesign --entitlements entitlements.plist --force -s - /opt/QEMU/bin/qemu-system-aarch64Hypervisor.frameworkパッチv5版
- 最新の Hypervisor.framework パッチ(2020/12/18時点で v5)を当てたQEMUを作成するには以下の手順で行う。
- これで作成したQEMUではTCGがうまく動かないので ARM(32bit)や i386,x86_64 などのエミュレーションは動かない。
QEMUのソースを patchew プロジェクトからクローンする。
shell$ git clone https://github.com/patchew-project/qemu最新の Hypervisor.framework パッチ当てたブランチを fetch してこれに変更。
shell$ cd qemu $ git fetch https://github.com/patchew-project/qemu tags/patchew/20201211151300.85322-1-agraf@csgraf.de $ git checkout patchew/20201211151300.85322-1-agraf@csgraf.deビルドしてインストール(ここではインストール場所を /opt/QEMU にしている。標準では /usr/local)。
shell$ mkdir build $ ../configure --prefix=/opt/QEMU --target-list=aarch64-softmmu --enable-cocoa $ make -j (経過中略) $ make installこのままでは署名の問題で /opt/QEMU/bin にインストールされた qemu-system-aarch64 が動かないので,署名し直す。
shell$ ../scripts/entitlement.sh ./qemu-system-aarch64-unsigned /opt/QEMU/bin/qemu-system-aarch64 ../accel/hvf/entitlements.plistいろんなOSを動かしてみる
Ubuntu 20.04.1 LTS on QEMU
- QEMU用のEDK II OVMF EFIイメージを以下のサイトからダウンロードしておく。
- 以下の場所にあった 20201217版の focal-desktop-arm64.iso がインストールできてた。今の daily build がうまく動くか分からない。ISOイメージのバージョンが異なるとインストールの最後の段階でクラッシュする場合がある。
EFIイメージからpflashイメージを作成する。
shell$ dd if=/dev/zero of=pflash0.img bs=1m count=64 $ dd if=/dev/zero of=pflash1.img bs=1m count=64 $ dd if=QEMU_EFI.fd of=pflash0.img conv=notrunc $ dd if=QEMU_VARS.fd of=pflash1.img conv=notruncUbuntuをインストールするイメージを作成する(サイズは10GB)。
shell$ qemu-img create -f qcow2 Ubuntu.qcow2 10G以下の手順でISOイメージから起動してインストール。
- イメージへのパスなどは適宜変更する。
- ブート時に TianoCore のロゴが出ているところで ESC を押して Device Manager → OVMF Platform Configuration でブート時の解像度を変更できる(手元では 1440x900 と 1680x1050 は確認している)。
- インストール後は Ubuntu の設定で変更するのでここで変更しなくても良い。
shell$ qemu-system-aarch64 \ -monitor stdio \ -M virt,highmem=off \ -accel hvf \ -display default,show-cursor=on \ -cpu host \ -smp 4 \ -m 4096 \ -drive file=./Ubuntu/pflash0.img,format=raw,if=pflash,readonly=on \ -drive file=./Ubuntu/pflash1.img,format=raw,if=pflash \ -device virtio-gpu-pci \ -device nec-usb-xhci \ -device usb-kbd \ -device usb-tablet \ -device intel-hda -device hda-duplex \ -nic user,model=virtio \ -hda ./Ubuntu/Ubuntu.qcow2 \ -cdrom ./images/focal-desktop-arm64.iso \ -boot order=dインストール後に設定で Ubuntu の解像度を変更できる。
Windows 10 ARM on QEMU
高解像度版EFIイメージの作成
- QEMU上にインストールしたUbuntuを使ってEFIイメージを作成することで,高解像度で Windows 10 ARMを利用することが可能。
- 以下のサイトで高解像度対応のEFIイメージが配布されるようになったので,それで十分であればコンパイルする必要はない(2020/12/20追記)。
- 以下はすべてUbuntu on QEMU上で作業する。
OVMF EDK2のソースコードを GitHub から取ってくる。
shell$ git clone https://github.com/tianocore/edk2.git $ cd edk2 $ git checkout edk2-stable202011 $ git submodule update --initWindows 10 で利用する ramfb ドライバにパッチを当てる。ここでは 1440x900 と 1680x1050 の解像度を追加している。
edk2.diffdiff --git a/OvmfPkg/QemuRamfbDxe/QemuRamfb.c b/OvmfPkg/QemuRamfbDxe/QemuRamfb.c index 0d49d8bbab..d1f1892631 100644 --- a/OvmfPkg/QemuRamfbDxe/QemuRamfb.c +++ b/OvmfPkg/QemuRamfbDxe/QemuRamfb.c @@ -54,6 +54,14 @@ STATIC EFI_GRAPHICS_OUTPUT_MODE_INFORMATION mQemuRamfbModeInfo[] = { 0, // Version 1024, // HorizontalResolution 768, // VerticalResolution + },{^M + 0, // Version^M + 1440, // HorizontalResolution^M + 900, // VerticalResolution^M + },{^M + 0, // Version^M + 1680, // HorizontalResolution^M + 1050, // VerticalResolution^M } };必要なツールをインストールする。
shell$ sudo apt install build-essential # gccのインストール $ sudo apt install iasl python3 python3-distutils uuid-devビルドする。
shell$ source edksetup.sh $ make -C BaseTools $ build -a AARCH64 -t GCC5 -p ArmVirtPkg/ArmVirtQemu.dsc
- Build/ArmVirtQemu-AARCH64/DEBUG_GCC5/FV に QEMU_EFI.fd と QEMU_VARS.fd ができているのでこれをネット経由などでホストの Mac にコピーする。
- 以降はこれを使って,Windows 10 ARMを実行すると高解像度で利用できるようになる。
- 投稿日:2021-01-09T11:13:27+09:00
Mac の隠し設定ファイルで設定すること
前提
railsでの開発を想定。
.bash_profile
- macではterminal起動時にログインシェルが立ち上がり、その際に呼ばれるのが.bash_profile
- ちなみに、sshでLinuxにログインした時はこちら
- 基本terminalからシェルを起動する人はログインシェルで活動してるので、.bashrcも呼んでやればひとまず困らない
- ~/.bashrcで何かを出力してしまうと、rsyncなどのsshパイプで問題が生じることがあるそう
if [ -f ~/.bashrc ]; then . ~/.bashrc fi.bashrc
- peco の導入
- 設定
- https://www.wholenotism.com/blog/2020/05/bashpeco.html#toc3
- READLINE_LINE と READLINE_POINT を利用してコマンドを出力する
- bash のバージョンは 4 系以降を使う
- 3 系だと選択してもコマンドが出力されない
- バージョンを上げる
- ghq と peco の連携
- 設定
ghq get git@github.com:~.git
でリポジトリ取って来れる# rbenv [[ -d ~/.rbenv ]] && \ export PATH=${HOME}/.rbenv/bin:${PATH} && \ eval "$(rbenv init -)" # git alias g='git' # rails alias bgen='bundle exec rails generate' alias bmg='./bin/rails db:migrate' alias bbk='./bin/rails db:rollback' alias bmgre='./bin/rails db:migrate:reset' alias bseed='./bin/rails db:seed' alias brs='./bin/rails server' alias brc='./bin/rails console' alias broutes='./bin/rails routes' # bundler alias be='bundle exec' # rspec alias brspec='bin/rspec' # rubocop alias brcop='bundle exec rubocop' # bundle install alias bi='bundle install --path vendor/bundle' # mysql2 export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/ # ghq function get_target_repo() { if [ $# -eq 1 ]; then echo $1 else echo $(repos) fi } function subl() { open -a Sublime\ Text $(get_target_repo $1) } alias repos='ghq list -p | peco' alias cdrepo='cd $(repos)' # peco peco_search_history() { local l=$(HISTTIMEFORMAT= history | \ sed -E s/^\ *[0-9]\+\ \+// | \ sort | uniq | \ peco) READLINE_LINE="$l" READLINE_POINT=${#l} } bind -x '"\C-r": peco_search_history'.gitconfig
[user] name = xxx email = xxx [ghq] root = /Users/tomita/Desktop/work/src [alias] co = checkout ci = commit cia = commit -a cm = commit --amend --no-edit cam = commit -a --amend --no-edit s = status st = stash stp = stash pop a = add un = reset HEAD cb = checkout -b d = diff dc = diff --cached b = branch ba = branch -a lo = log la = log --oneline l = log -10 --oneline f = fetch --prune pl = !git pull origin `git rev-parse --abbrev-ref HEAD` plo = pull origin plom = pull origin master ps = push pso = push origin psfo = push -f origin psom = push origin master r = rebase ta = log --oneline --all --decorate --graph t = log -10 --oneline --all --decorate --graph p = !git push origin `git rev-parse --abbrev-ref HEAD` delete-merged-branch = !git branch --merged | grep -v \\* | grep -v master | xargs -I % git branch -d % [core] excludesfile = /Users/tomita/.gitignore_global