スキップしてメイン コンテンツに移動

投稿

debootstrap を使い amd64 機から arm64 機用に Debian13 を新規インストール

ようやく Debian13/trixie がリリースされましたね。そこで古い arm64 機(OrangePi PC 2)があるので腕試しにamd64機を作業PCにして Debian13 for arm64を sd カードにインストールしてみました。なお対象機に加え、SDカードリーダとUSBシリアルコンバーターが必要です。 以下作業内容です。まず初めに必要なパッケージを作業用PCにインストールしておきます。 sudo apt-get install git bison flex gcc-aarch64-linux-gnu python3-setuptools \ swig python3-dev libssl-dev build-essential device-tree-compiler \ gcc-or1k-elf u-boot-tools qemu-utils qemu-user-static gcc-or1k-elfはOpen RISC 1000用のコンパイラで今回の OrangePi PC 2 にのみ必要なパッケージです。 つづいて OrangePi PC 2 用のu-bootをクロスコンパイルしますが、trusted-firmware-a と crust が必要になるので、こちらもクロスコンパイルしておきます。 # trusted-firmware-a のビルド cd /usr/src sudo mkdir TF-A sudo chown YourUID:YourGID TF-A cd /usr/src/TF-A git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git cd trusted-firmware-a make CROSS_COMPILE=aarch64-linux-gnu- PLAT=sun50i_a64 DEBUG=0 bl31 # 成果物 /usr/src/TF-A/trusted-firmware-a/build/sun50i_a64/release/bl31.bin # crust のビルド cd /usr/src sudo mkdir crust sudo chown YourUID:YourGID crust cd crust ...
最近の投稿

Debian 12 を armhf 機でインストーラを起動しインストール

対象は RapsberryPI でも OrangePIでもなくNanoPI M1 という allwinner H3/armhf の 512MB メモリの機種です。作業は こちらのDebianの文書 をもとにしましたが、一部をのぞきほぼ説明通りにしたところOKでした。 なお u-boot のコンパイルは作業用PC(amd64)でクロスコンパイルしました。また、インストーラ MicroSDを作成するにあたり、USBカードリーダーを使いました。さらに、インストール対象となるインストーラとは別のMicroSDカードを用意し、それをUSBカードリーダに差し込んでUSBハブに接続し、インストーラを立ち上げてそこにインストールしました。 以下作業内容です。 # on amd64(作業用PCで) sudo apt-get install git bison flex gcc-arm-linux-gnueabihf python3-setuptools swig python3-dev libssl-dev build-essential cd /usr/src sudo mkdir u-boot sudo chown YourUID:YourGID u-boot cd u-boot git clone https://source.denx.de/u-boot/u-boot.git cd u-boot git checkout v2025.07 mkdir ../u-boot-build make CROSS_COMPILE=arm-linux-gnueabihf- O=../u-boot-build/ nanopi_m1_defconfig cd ../u-boot-build make CROSS_COMPILE=arm-linux-gnueabihf- -j20 # on amd64(作業用PCにて)インストーラ MicroSD card の作成(カードリーダ要) fdisk /dev/sdx #以下コマンドで 先頭1Gに W95 FAT32 (LBA) パーティションを作成 o n # enter # enter # enter +1G t c #残りをパーティション タイプ linux にしておく(使いませんが) n # enter # enter # e...

aptly を使ってレポジトリを作成し自前パッケージを管理する

自前パッケージを作成するだけだとレポジトリがないので依存関係のインストールに apt が使えないのでかなり面倒です。一つのパッケージならまだしも複数パッケージを管理するならなおさらです。また、ある自前パッケージに依存する別のパッケージをビルドする場合、ビルドする機材自体に自前パッケージのレポジトリがないとこれも一々手動で対応する必要があるので、これもまた面倒です。 そこで aptly を使ってレポジトリを作成したところほぼ期待通りの環境ができたので備忘録として挙げてみました。 早速設定です。最初は aptly をインストールし aptly の設定を行います。 sudo apt-get install aptly sudo mkdir /srv/aptly sudo chown -R user1000:user1000 /srv/aptly #edit ~/.aptly.conf # --snip root_dir: /srv/aptly # --snip 続いて鍵を生成します。なおビルドおよびaptlyを実行するユーザはuser1000というユーザでおこなっています。 #login as user1000 gpg --full-generate-key Please select what kind of key you want: (1) RSA and RSA # --snip Your selection? 1 RSA keys ay be between 1024 and 4096 bits long. What keysize do you want? (3072) 4096 Please specify how long the key should be valid. #--snip Key is valid for? (0) 3y Key expires at Sun 23 Jul 2028 07:59:17 PM JST Is this correct? (y/N) y Real name: Example Stable Release Key Email address: example-release@example.com Comment: 13/trixie You selected this USER-ID: ...

x11 でノートパソコンの2ボタントラックパッドの右ボタンと中ボタンエミュレーションを入れ替える

x11でのコピペは、ホイール付きのマウスを使っている場合、左ボタンで選択するだけでコピーとなり、ホイールボタンが中ボタンとして機能するのでホイールボタンをクリックすればペースト(貼り付け)できるので問題はないのですが、ノートパソコンの場合だと中ボタンのないものがあります。この場合、左右のボタンを同時に押し下げると中ボタンのエミュレーションになり、ペースト(貼り付け)できるのですが、これがかなり面倒で、windows ターミナルのように左ボタン選択でコピー、右ボタンで貼り付けできないかなと思い調べたところ、xmodmap (x11-xserver-utils パッケージに収録) で物理ボタンのボタンコード番号を入れ替えることができるとのことだったので、早速やってみました。 apt-get install x11-xserver-utils # 右ボタンと中ボタン(エミュレーション)を入れ替える xmodmap -e 'pointer = 1 3 2 4 5 6 7 8 9 10' # 確認 xmodmap -pp 筆者の場合、メインの端末は Debian + mint wm でホイール付きのマウスを使っていて、サブ端末のwindowsノートパソコンは2ボタントラックパッドで、メイン端末にssh経由でx11をフォワードしているのですが、一々コマンドをたたくのは面倒なので、~/.bashrcに以下のような記述を追加し試したところ上手くいきました。 if [ -n "$SSH_CONNECTION" ]; then export DISPLAY=`echo $SSH_CONNECTION | awk '{print $1}'`:0.0  if xhost >& /dev/null; then xmodmap -e 'pointer = 1 3 2 4 5 6 7 8 9 10' fi fi ちなみに、VcXsrvの場合、フォワードされたX11アプリでコピーしたテキストは、windowターミナルにペーストできました。その逆は、windows terminal の設定を以下のように変更することで、windows terminal から フォワードされたX11アプリにペース...

ssh x11 フォワード して Windows 上の VcXsrv で uim mozc を使う

今使っている GUIはDebianのmintデスクトップなのですが、imがibusではなくuimになっていました。なので以前投稿したibusのスクリプトはそのままでは当然使えないのでスクリプトを書き換えることで Windows上のVcXsrv で日本語入力できたので備忘録として挙げてみることにしました。 設定ですが、まずフォワード元のsshdのx11forwardを確認します。 # /etc/ssh/sshd_config X11Forwarding yes 有効になっていなければ変更してsshdを再起動してください。 つづいてフォワード元の.bashrcに以下のようにして処理を追加します。 cat >> ~/.bashrc <<EOF if [ -n "$SSH_CONNECTION" ]; then export DISPLAY=`echo $SSH_CONNECTION | awk '{print $1}'`:0.0 export GTK_IM_MODULE=uim export XMODIFIERS=@im=uim export QT_IM_MODULE=uim export NO_AT_BRIDGE=1 if xhost >& /dev/null; then xset -r 49 if test `ps auxw | grep $USER | grep -v grep | grep "uim-xim" 2> /dev/null | wc -l` -ge 1; then for pid in $(ps auxw | grep $USER | grep -v grep | grep "uim-xim" 2> /dev/null | awk '{print $2}');do disp=$(cat /proc/${pid}/environ --show-nonprinting | sed 's,\^@,\n,g' | grep DISPLAY) if [ "$disp" = "$D...

kvm の virbr で public な IPv6 アドレスを使う

今回も表題の通りなのですが、下述する ndppd を使わない場合、前提条件があります。それは、ルータが kvmホスト下の IPv6 ネットワークへのルートを保持できることです。具体的には、IPv6 でスタティックルートを設定できること、 もしくは ルータが ripng などを喋り、kvm ホストが virbr0 下のネットワークを広報するなどです。また、ndpproxy (ndppd) を使う方法もあります。ndppdを使う場合は下述のように ndppd の設定だけで外部と接続できますので、IPv6 Router上での lan側インターフェースのアドレスを固定にしてスタティックルートを設定する必要もなく、また、kvm host の lan側アドレスを固定にする必要もなくなり設定としては一番簡単ですが、今回は動作について最も解りやすいスタティックルートの例で説明したいと思います。 まずはじめに、ネットワークの構成についてです。パブリックな IPv6 が使用できる環境ではルータ以下の端末に一般的には /64のアドレスが割り当てられているとおもいますが、/64のサブネットを別に用意することは通常はできませんので、/64 以上の小さなサブネットを用意します。今回は /80 を例にしてみました。図にすると以下のようになります。 IPv6-Internet | | IPv6 Router( lan eno2: 2001:db8:1:a::1/64 ) | | IPv6 kvm host(lan eno1: 2001:db8:1:a::117/64) | | virbr0 (2001:db8:1:a:117::1/80) | | kvm guest (2001:db8:1:a:117::xxxx/80 by dhcp6) この図だと IPv6 Router 上に virbr0 の 80 のサブネット (2001:db8:1:a:117::/80) へのルートを kvm host のアドレス (2001:db8:1:a::117/64) にする必要があります 。(厳密にはサブネットを予約するには、IPv6 Router が radvd で端末にアドレスを取得させるのではなく、dhcp6 でアドレスを配布させる必要がありますが、小規模な環境...

bash のヒアドキュメントで $ を展開させない方法

シェルスクリプトのパッチを作成する場合、diff では何もしなくても$は展開されないので問題はないのですが、diffで作成されたパッチ文をヒアドキュメントでファイルに落とす場合、$が展開されるので、エスケープ処理しない限り、一々コピペするしかないと思い込んでいました。 ですが、ふと"ヒアドキュメント $ そのままで"と検索したところ、cat > test.patch <<'EOF'と EOF をシングルクォート(')で括れば良いとのことでした。 早速試した所、$が確かに展開されず、パッチフィルとして機能しました。 cat > scs_cert_generator.sh.patch <<'EOF' --- scs_cert_generator.sh.orig 2024-07-10 22:03:58.000000000 +0900 +++ scs_cert_generator.sh 2025-05-23 16:26:34.516324152 +0900 @@ -628,8 +628,8 @@ print_msg "Create self-signed Remote Connector certificate." - _GENERATED_CERTIFICATE=$(openssl x509 -req -in <(echo "$_GENERATED_CSR") -sha256 -extfile "$SCS_OPENSSL_CONFIG_FILE" \ - -extensions v3_ca -signkey <(echo "$_PRIVATE_KEY") -out >(cat) -days ${SCS_OPENSSL_DAYS} 2>/dev/null) + _GENERATED_CERTIFICATE=$(openssl x509 -req -sha256 -days ${SCS_OPENSSL_DAYS} -in <(echo "$_GENERATED_CSR") \ + -sign...