古いPCへのWindows11のインストール(自己責任)

家で使っている古いPCにもWindows11がインストールできるようになったという話を聞いたので実験してみました。Microsoftさんも許容の道をの漕いていただいたみたいなので大変助かりますが、この作業は自己責任のものになりますので安易に行わないようにしましょう。

今回はWindows11のISOファイルをダウンロードし、USBメモリでインストールメディアを作成し、クリーンインストールを行ってみます。

参考

uepon.hatenadiary.com

続きを読む

日経Linux2021年11月号はセキュリティ特集でした

f:id:ueponx:20211013220618p:plain

先日発売された日経Linux2021年11月号ですが内容を確認しながら読んでいます。自分はIT技術とは無縁の業務になっているので、業務中に勉強するのはちょっとむずかしい状況なので、雑誌などで自分の興味のないところを補強していかないとなかなかに新しい知識をインプットすることができない印象があります。特に今回はセキュリティという内容だったので、できるだけ避けてきているところなのでかなり難しいです。

というか、付録である「今どきのLinuxのはじめ方」が厚くてビビりました。

気になった記事などをここでメモっておいて、あとから調べてみようかなと思っています。

続きを読む

Amazon Fire HD10をPCのサブモニター化する

以前、開催されていたAmazonさんのセールでFireHD10を購入しました。キーボードセットもその当時は魅力的ではありましたが、これまでこういう端末でキーボードを購入 しても全く使ってないというようなことがよくあったので、そのときは、買うまいという意思を固めて購入をやめました。その選択肢は予想通りあたり、今はSNSをみたり、動画サービスをみるような端末として大活躍しています。ただ10インチもいる?といわれるとたぶん8インチを選択したほうがよかったのかもなあという気分です。10インチは手持ちするとかなりの大きさなんですよね。

最近は、古いモニタを捨てたこともあり、家での作業でデュアルモニタを使えない状態になっています。そこで、モバイル液晶っぽいモニターがほしいなあと感じていました。2k、13インチぐらいであれば値段もこなれてきているなあとは思ったのですが、折角ある10インチの液晶デバイスFireHD10があるので、これをなんとかできないかと思ってサブモニタ化してみることにしました。サブモニタなので、資料を表示して確認するような用途だったりとか音楽プレーヤなどのGUIを表示しておくなどの用途とします。バリバリとその上で作業をするというよりは一時的なデスクトップという程度でしょうか。

以前は、タブレットiPadなど)の映像をFire Stickに表示するというエントリを書きましたが、今回は逆のことをやっていきます。

使用したアプリケーションはspacedeskになります。

続きを読む

WSL2環境でQEMU実行環境を構築しRaspberryPi OS(GUI環境)を起動する

タイトルがクソ長い…

以前からWindows上でもRaspberryPi OSの動作ができるというQEMUの存在は知っていたのですが、もっと手軽に使えないかなと思っていました。そんな中、最近ネットを検索しているとWSL2環境で構築したQEMU上でもRaspberryPi OSが動作し、X Window Systemも起動できるということを知りました。

f:id:ueponx:20211006134854p:plain

ja.wikipedia.org

e-words.jp

QEMUとは、コンピュータの挙動をソフトウェア的に再現するエミュレータ型の仮想化ソフトの一つ。コンピュータ内で別のコンピュータを起動し、ソフトウェアを実行することができる。(IT用語辞典より引用)

とのこと、アーキテクチャ違いのものでも動くのは気になります。

そこで今回は、以下2つの情報をもとに挑戦してみようと思います。参考情報元の方々ありがとうございます。

【参考】

qiita.com

qiita.com

qiita.com

準備

必要となるファイルの準備

まずは必要となるファイルをダウンロードします。ファイルの保存場所をC:\RaspberryPi3にしようと思いますので、まだ作成していない場合には作成します。Cドライブの直下にしているのはパス名が長くならないようにする工夫です。

github.com

RaspberryPi OSのイメージは以下のサイトなどからダウンロードします。 お気づきかもしれませんが、今回使用しているOSイメージは少し古めです。自分も試してみたのですが、最新のイメージであるraspios_armhf-2021-05-28で動作させようとするとエラーが発生するようです。(参考情報でも似たような現象があるとの話でした)そのため、今回はraspios_armhf-2020-08-24を使用しています。

ftp.jaist.ac.jp

また、起動に際してはOSイメージ以外にもカーネルとデバイスツリーのファイル(Device Treeが記述されたバイナリ(dtb: Device Tree Blob)も必要になります。RaspberryPiへインストールするSDカードイメージからこれらを取り出すことも可能なのですが、以下のGitHubリポジトリを使うことで、かなり容易に準備することができます。

以下のリポジトリからZipファイルをダウンロードします。

qiita.com

リポジトリにアクセスして、以下の操作を行ってZipファイルをダウンロードします。

f:id:ueponx:20211005233519p:plain

ダウンロードしたZipファイルの中にある

qemu-rpi-kernel-master.zip\qemu-rpi-kernel-master\native-emulation\5.4.51 kernelsにある、kernel8.imgをC:\RaspberryPi3にコピーします。

f:id:ueponx:20211005234245p:plain

加えてqemu-rpi-kernel-master.zip\qemu-rpi-kernel-master\native-emulation\dtbsにある、bcm2710-rpi-3-b.dtbをC:\RaspberryPi3にコピーします。

f:id:ueponx:20211005234251p:plain

これで、必要なファイルの準備は完了です。

WSL2の環境にQEMUをインストールする

続いての準備はWSL2上のUbuntu環境にQEMUをインストールしていきます。

WSL2の設定などに関しては過去のエントリを確認して設定を行ってください。(Dockerのことも記載していますが、今回は不要です)

uepon.hatenadiary.com

設定できたらUbuntuのターミナルに接続し、QEMUのインストールしていきます。

Ubuntu 20.04 LTSでQEMEをインストールするときにsudo apt install -y qemu-systemと行うと、QEMU 4.2系がインストールされます。 インストールされるバージョンを確認するには以下のコマンドを実行すればOKです。

$ apt list -a | grep qemu-system

今回はネットワーク機能も使用するため、USBコントローラをサポートしたQEMU 5.1以降のバージョンが必要になります。 そこでUbuntuのサーバーバックポートのPPA(Personal Package Archive)から、QEMU 5.2をインストールしていきます。

【参考】

WSL2(WSLg)上にRaspberry Pi OS(RaspbianBuster)をQEMUエミュレーターで動かす(Raspi3マシン) - Qiita

PPA(Personal Package Archive)を使用して、QEMU 5.2をインストールする

PPAを使用するにはaptコマンド側にインストールパッケージの含まれたリポジトリを追加する必要があります。以下のコマンドを実行することでリポジトリの追加、更新が行われます。最後のコマンドで実際にインストール可能なバージョンに5.2系が含まれるかを確認しています。

$ sudo add-apt-repository ppa:canonical-server/server-backports
$ sudo apt update
$ apt list -a | grep qemu-system

無事にQEMUの5.2系がインストールパッケージに含まれる様になったら、先程述べたインストールコマンドを実行していきます。

$ sudo apt install -y qemu-system

完了したら、念の為バージョンを確認しておきましょう。

$ qemu-system-aarch64 --version

f:id:ueponx:20211006123956p:plain

これで準備は完了です。

QEMUの起動スクリプトを使用してRaspberryPi OSを起動する

QEMUの起動スクリプトは以下のようになります。このスクリプトX Window System環境(以下GUI環境)を起動できます。このスクリプトはCドライブの直下にRaspberryPi3というフォルダを作成し、その中にあるカーネルイメージ、デバイステーブル、OSイメージを配置して、使用するようにしています。WSL2ではWindows上のファイルも/mnt/c/というパスでマウントされているため、WSL環境下のOSのボリューム容量が小さい状態であってもマウントしてあるWindows側のパスを使うことができるというメリットがあります。

今回は以下で設定してあります。これらのファイルはC:\RaspberryPi3というフォルダに保存済です。

  • カーネル … kernel8.img
  • バイスツリーのファイル(dtb: Device Tree Blob) … bcm2710-rpi-3-b.dtb
  • OSイメージ … 2020-08-20-raspios-buster-arm64.img

run.sh

#!/bin/sh
cd `dirname $0`

qemu-system-aarch64 \
-m 1024 \
-M raspi3 \
-kernel /mnt/c/RaspberryPi3/kernel8.img \
-dtb /mnt/c/RaspberryPi3/bcm2710-rpi-3-b.dtb \
-drive format=raw,file=/mnt/c/RaspberryPi3/2020-08-20-raspios-buster-arm64.img \
-append "console=ttyAMA0 root=/dev/mmcblk0p2 rw rootwait rootfstype=ext4 dwc_otg.fiq_fsm_enable=0 bcm2708_fb.fbwidth=1920 bcm2708_fb.fbheight=1080" \
-serial stdio \
-no-reboot \
-device usb-kbd \
-device usb-tablet \
-device usb-net,netdev=net0 \
-netdev user,id=net0,hostfwd=tcp::2222-:22

作成した実行スクリプトは実行権限を与えます。

その後、実行を行うとQEMU上でRaspberryPi OSが起動し以下のように表示されます。私のPCは第6世代のCore-i7ですがXの環境が表示されるまでに8分ほどかかりました。 ログインプロンプトが表示されるまでは4分程度となっています。起動後すぐにGUI側の表示にRaspberryPiのロゴが出てくれるので動作していることはわかりやすいと思います。

起動直後 f:id:ueponx:20211006125941p:plain

ログインプロンプトが表示 f:id:ueponx:20211006130043p:plain

起動完了(Windows画面上に表示されています) f:id:ueponx:20211005231349p:plain

初回起動時のダイアログも表示されます f:id:ueponx:20211005231357p:plain

chromiumを起動してみました f:id:ueponx:20211005231411p:plain

aptで新しいパッケージを入れてみました

f:id:ueponx:20211006132401p:plain

CPUの負荷はかなりあるようです

f:id:ueponx:20211006132442p:plain

ちなみにshutdownするとKernel panicが発生しますw

f:id:ueponx:20211006133803p:plain

CLI環境での起動

GUI環境は負荷が大きいので実用的とは言い難い状況です。そこでCLI環境でも試してみました。 起動スクリプトは以下のようになります。-nographicオプションをつけているところがポイントになります。

runCLI.sh

#!/bin/sh
cd `dirname $0`

qemu-system-aarch64 \
-m 1024 \
-M raspi3 \
-kernel /mnt/c/RaspberryPi3/kernel8.img \
-dtb /mnt/c/RaspberryPi3/bcm2710-rpi-3-b.dtb \
-drive format=raw,file=/mnt/c/RaspberryPi3/2020-08-20-raspios-buster-arm64.img \
-append "console=ttyAMA0 root=/dev/mmcblk0p2 rw rootwait rootfstype=ext4 dwc_otg.fiq_fsm_enable=0 bcm2708_fb.fbwidth=1920 bcm2708_fb.fbheight=1080" \
-nographic \
-device usb-net,netdev=net0 \
-netdev user,id=net0,hostfwd=tcp::2222-:22

f:id:ueponx:20211006133806p:plain

f:id:ueponx:20211006133810p:plain

X環境ほどの負荷はありませんが、起動には2分ほどかかりますね。

おわりに

今回はQEMUを使ってWindows上でもRaspberryPi OSの起動を試してみました。実際に使うのであればQEMUWindows版をインストールした方が負荷が少ないので現実的でしょう。 一度やってみたかったんですよね…っていうネタでした。

超いまさらcron設定を行ってみました

f:id:ueponx:20211005000919p:plain

技術の仕事をしているわけでもないため、普段全くcron処理などをしない人生なのですが、とあるキッカケがありsyslogcronを使うことになりました。基本的にはcronのログ設定なんてデフォルトでされてんだろうと思っていたのですが、違うみたいですね。cronの実験をしているのに全くログファイルが書き込まれず、悩んでいました。いままでの知識はなんだったのか…。

ということで、cron処理を行ったときのログファイルへの書き込み設定をまとめてみます。今後、使うことがあるのかわかりませんが。

最近ではcronではなくsystemdを使った方がいいようなことも目にするんですが実際のところはどうなんでしょうか。実務やっている方に聞いてみたいです。

【参考】

qiita.com

続きを読む