SQLite3 をソースコードからインストール(Ubuntu 22.04)
ビルドに必要なパッケージをインストール
$ sudo apt install \ build-essential \ libreadline-dev
ソースコードをダウンロード
ブラウザでSQLite Download pageからソースコードのリンクアドレスをコピーしてwget
でダウンロード。
$ wget https://www.sqlite.org/2024/sqlite-autoconf-3460000.tar.gz
SHA3-256 の確認
$ openssl dgst -sha3-256 sqlite-autoconf-3460000.tar.gz SHA3-256(sqlite-autoconf-3460000.tar.gz)= 83d2acf79453deb7d6520338b1f4585f12e39b27cd370fb08593afa198f471fc
ダウンロードしたファイルを解凍
$ tar xvfz sqlite-autoconf-3460000.tar.gz
解凍したディレクトリに移動
$ cd sqlite-autoconf-3460000
コンパイルとインストール
$ ./configure $ make $ sudo make install
sqliteの確認
$ sqlite3 --version
アンインストール
$ cd sqlite-autoconf-3460000 $ sudo make uninstall
コマンドラインでKVMゲストOSをインストール
virt-install コマンドを使用して、仮想マシンを作成し、ゲストOSをインストールします。
ゲストOSは、Ubuntu 22.04.4 server を使用します。
$ sudo virt-install \ --name ubuntu-2204-server \ --vcpus 1 --memory 2048 \ --cpu mode=host-passthrough \ --network network=default,model=virtio \ --location /path/to/ubuntu-22.04.4-live-server-amd64.iso,kernel=casper/vmlinuz,initrd=casper/initrd \ --os-variant ubuntu22.04 \ --disk size=80,cache=none,format=qcow2 \ --graphics none \ --extra-args 'console=tty0 console=ttyS0,115200n8 --- console=tty0 console=ttyS0,115200n8' \ --boot uefi
あとは、インストーラの指示通りに進んでください。
virt-install オプション
オプションの詳細は、libvirtのドキュメントを参照 Domain XML format
# サブオプションの一覧を表示 $ virt-install --memory=? $ virt-install --memory help
--name ubuntu-2204-server
ゲスト仮想マシンの名称
現在アクティブでないものも含め、すべてのゲスト仮想マシンの中で一意である必要があります。
--memory 2048
ゲスト仮想マシンに割り当てるメモリ量を指定(MiB単位)
--vcpus 1
ゲスト仮想マシンに割り当てられる仮想CPUの数を指定
--cpu mode=host-passthrough
ゲスト仮想マシンのCPUモデルを設定
- mode=host-passthrough:ホストCPUと同じモデルと機能をゲスト仮想マシンに設定します。
--network network=default,model=virtio
ゲスト仮想マシンをホストネットワークに接続する方法を選択
- network=default:「default」という名前の、仮想NATネットワークに接続します。
- model=virtio:ゲストから見たネットワークデバイスのモデル。
「default」ネットワークは、KVMをインストールすると自動的に作成されます。
「default」ネットワーク上の仮想マシンは、ネットワークに完全にアクセスできますが、
ホストPC以外のデバイスはホスト上の仮想マシンと通信できません。
ホストPCだけがゲスト仮想マシンにアクセスできます。
「default」ネットワークの設定は以下のコマンドで確認できます。
$ virsh net-dumpxml default
--location /path/to/ubuntu-22.04.4-live-server-amd64.iso,kernel=casper/vmlinuz,initrd=casper/initrd
インストーラーイメージのパスを指定
- kernel=casper/vmlinuz,initrd=casper/initrd:
virt-installが利用するlibosinfoがkernelとinitrdの場所を知らないときに指定します。
指定しなかった場合、Ubuntu 22.04.4 server では以下のエラーが出てインストールができませんでした。
ERROR Couldn't find hvm kernel for Ubuntu tree.
Couldn't find hvm kernel for Ubuntu tree Autoinstall quick start
--disk size=80,cache=none,format=qcow2
ゲスト仮想マシンが使用するストレージの設定
- size=80:ストレージの容量(GiB単位)
- format=qcow2:ディスクイメージ形式
- cache=none:キャッシュの設定
--graphics none
ゲスト仮想マシンにグラフィカルコンソールを割り当てません。
ゲスト仮想マシンにアクセスするために、
--extra-argsオプションで、ゲスト仮想マシンのシリアルポートにテキストコンソールを設定する必要があります。
--extra-args 'console=tty0 console=ttyS0,115200n8 --- console=tty0 console=ttyS0,115200n8'
最初の console=tty0 console=ttyS0,115200n8 は、
VGAコンソール(console=tty0)またはシリアルコンソール(console=ttyS0)を使用してゲスト仮想マシンを
毎秒115200ビット、パリティビットなし、データビット数8ビット(115200n8)でインストールするように virt-install に指示します。トリプルダッシュ(---)の後の、同じ console=tty0 console=ttyS0,115200n8 は、
インストールされたゲスト仮想マシンのブートローダー/etc/default/grubファイルのGRUB_CMDLINE_LINUX行に追加されます。
--boot uefi
インストール後のブート構成を指定
KVM on Ubuntu 22.04 Desktop
仮想化がサポートされていることを確認
ハードウェアがKVM仮想化をサポートされていることを確認
$ lscpu | grep Virtualization Virtualization: VT-x # 👈 VT-x or AMD-V
出力が空白の場合、BIOS/UEFIで無効になっている可能性があります。
カーネルにKVMモジュールが含まれていることを確認
yまたはmに設定されていれば利用できます。
$ zgrep CONFIG_KVM /boot/config-$(uname -r) CONFIG_KVM_GUEST=y CONFIG_KVM_MMIO=y CONFIG_KVM_ASYNC_PF=y CONFIG_KVM_VFIO=y CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y CONFIG_KVM_COMPAT=y CONFIG_KVM_XFER_TO_GUEST_WORK=y CONFIG_KVM_GENERIC_HARDWARE_ENABLING=y CONFIG_KVM=m CONFIG_KVM_WERROR=y CONFIG_KVM_INTEL=m CONFIG_KVM_AMD=m CONFIG_KVM_AMD_SEV=y CONFIG_KVM_SMM=y CONFIG_KVM_XEN=y CONFIG_KVM_EXTERNAL_WRITE_TRACKING=y
インストール
$ sudo apt update $ sudo apt install qemu-kvm libvirt-daemon-system libvirt-client virtinst
- qemu-kvm : ハードウェアエミュレータと仮想化パッケージ
- libvirt-daemon-system : libvirtデーモンの実行に必要な構成ファイルを提供するパッケージ。仮想マシンとハイパーバイザーを管理し、ライブラリの呼び出しを処理
- libvirt-client : コマンドラインから仮想マシンとハイパーバイザーを管理・制御するためのクライアント側のライブラリとAPI
- virtinst : 仮想マシンのプロビジョニングと変更を行うためのコマンドラインユーティリティ。
- virt-viewr : 実行中の仮想マシンに接続するためのGUIコンソール
- virt-install : 仮想マシンを作成するコマンドライン
- など
必要なら
- virt-manager : libvirtデーモンを介して仮想マシンを管理するためのQtベースのGUI
仮想マシンを作成できる準備ができていることを確認
$ sudo virt-host-validate qemu
WARNの修正
QEMU: Checking for device assignment IOMMU support : WARN (No ACPI DMAR table found, IOMMU either disabled in BIOS or not supported by this hardware platform)
お使いのインテルプロセッサは、VT-x(vmx)機能のみサポートしており、VT-dはサポートしていません。
- VT-dは、PCIeパススルーの機能を実装するために使用します。
- VT-dは、仮想マシンがグラフィックカード、ネットワークアダプタ、ストレージコントローラなどの特定のI/Oデバイスに直接アクセスできるようにします。
サポートされていないので無視しても問題ありません。
QEMU: Checking for secure guest support : WARN (Unknown if this platform has Secure Guest support)
AMD Secure Encrypted Virtualization (SEV) サポートを有効にする。
インテルCPUの場合、この警告は無視しても問題ありません。
libvirt デーモン(サービス)をシステム起動時に自動起動する。
sudo systemctl enable --now libvirtd # 確認する sudo systemctl status libvirtd
Bash プロンプトのカスタマイズ 色
プロンプトに色を付けていきます。下の画像は今回使用する CSI (Control Sequence Introducer) sequences という文字出力を制御する設定の一部で文字に色・太さ・下線などの属性を設定する機能です。
色の変更 \e[nm
\e[
文字出力の制御の設定(CSI)を開始しする合図です。
よく検索すると、\033[ や \x1b[ と出てきますが同じ意味です。前者が8進数、後者が16進数で e の文字を表現しています。
n
制御する属性を0~107の数値(SGR)で設定します。
複数の属性を設定する場合は「;」セミコロンで区切ります。数値を入力せずに「;;」と1つ以上続いた場合、値のない箇所は0が入力されたことになります。
\e[m と n は省略することができます。この場合、全ての属性が初期値にリセットされます。(\e[0m と同じです。)
m
文字の色やスタイルを設定する記号です。
属性を設定するとリセットするか上書きするまで、その属性が生き続きます。必要な場所でリセット(\e[0m)をすると良いでしょう。
n(SGR)属性の設定
これで色が変えられますね。 0〜107の内、色に関係してくるのは以下の表通りです。
文字色 | 背景色 | 備考 |
---|---|---|
30 ~ 47 | 40 ~ 47 | 基本の8色 |
90 ~ 97 | 100 ~ 107 | 明るい8色 |
38;5;n | 48;5;n | 256色。 nに0~255の数値を入力 |
38;2;r;g;b | 38;2;r;g;b | RGB色。r;g;b にはそれぞれ0~255の数値を入力 |
39 | 49 | 39文字色・49背景色を初期値に戻す |
7 | 文字色と背景色を入れ替える |
詳細
Fe Escape sequences
CSI (Control Sequence Introducer) sequences
SGR (Select Graphic Rendition) parameters
色の数
ここまで色を付けてきましたが環境によっては256色、RGB色が使えないということがあります。
- 使っているターミナルアプリケーションが対応していない
- エミュレートしている端末タイプが対応していない
等です。確認するには以下のコマンドを実行してください。
echo $TERM echo $COLORTERM
さらに、Terminal Colors にある次のコマンドでテストしてください。
awk 'BEGIN{ s="/\\/\\/\\/\\/\\"; s=s s s s s s s s; for (colnum = 0; colnum<77; colnum++) { r = 255-(colnum*255/76); g = (colnum*510/76); b = (colnum*255/76); if (g>255) g = 510-g; printf "\033[48;2;%d;%d;%dm", r,g,b; printf "\033[38;2;%d;%d;%dm", 255-r,255-g,255-b; printf "%s\033[0m", substr(s,colnum+1,1); } printf "\n"; }'
TERM の値が *-256color 、COLORTERM の値が truecolor 、
次にテストしたコマンドでグラデーションに段差が出ていなければ、RGBまで対応しています。
グラデーションに段差が出ている場合、アプリケーションが対応していないのでサイトを覗いて確認してください。
truecolorとは
RGB色、#ffffff のこと。R,G,Bをそれぞれ8bit、計24bitで表現
おわりに
次回は見た目をデザインしていきます。
Bash プロンプトのカスタマイズ
普段、Oh My Poshのテーマを利用して綺麗なプロンプトを表示していましたが、
ふと使わずにカスタマイズしたくなりました。
筆が遅いの少しづつ、今回はプロンプトに表示する文字列を見ていきます。
.bashrc ファイルの編集
ホームディレクトリにある ~/.bashrcファイルを開きます。vim を使用しますが、好きなエディタで開いてください。
vim ~/.bashrc
.bashrc は bashの設定ファイルです。
開いたら環境変数 PS1 を最下行に記述し、プロンプトに表示したい文字列を入力し保存します。
文字列は必ずシングルクォート「 ' 」で囲ってください。
PS1='文字列'
PS1='Hello bash!:\u@\h:\w\$'
ターミナルを新しく開いて確認してみましょう。
プロンプトの文字列が下記のようになっています。(UserName、HostNameは使用している環境によって文字が変化します。)
Hello bash!:UserName@HostName:~$
PS1 の詳細
ザックと解説、詳しくは詳細を見てください。
環境変数 PS1
- 環境変数:みんなで共有できる変数。
- PS1:ターミナルを開いたとき、コマンドを入力する前、終わったあとに表示されている文字列(PS0〜PS4までありますが他は滅多に使いません。Prompt Strings の略。)
'文字列' の中身
'Hello bash!:\u@\h:\w\$'
- '(シングルクォート):シングルクォートで文字列を囲むと全て文字として扱いますが、特殊な処理をする文字列があります。下記へ
- \(バックスラッシュ):クォート内でバックスラッシュと英数字・記号の組み合わせで特殊文字を出力できます。\u \h \w \$ など
詳細
man bash
クォート
man bash
プロンプト(特殊文字)
カスタマイズ
あとは自由に文字を組み合わせます。
PS1='\s:\w\n\$'
保存して編集が終わったら、新しくターミナルを開くか、.bashrcを再読込します。
# .bashrcを再読込 source ~/.bashrc
参考サイト
Ubuntu manual:bash
Arch wiki :Bash/プロンプトのカスタマイズ
後記
次回は色を付けていきます。
- 画像を作ってもう少し見やすく説明できるようにする。
- ブログのデザインをカスタマイズする。