chmod チートシート

この記事を書いた動機 単純に普段、linux 環境を使っていて、chmod コマンドの詳しい忘れていることがあり、いちいち調べるのが面倒くさいので、私にとって使いやすい形で記録を取っただけです。 chmod テーブル Permission Octal Decimal — 000 0 –x 001 1 -w- 010 2 -wx 011 3 r– 100 4 r-x 101 5 rw- 110 6 rwx 111 7 参考にしたサイトとか Chmod Command Cheat Sheet & Quick Reference https://quickref.me/chmod.html (2025年4月10日)

April 10, 2025

よく忘れるコマンド集

この記事を作った動機 普段 linux 環境を使っているので、Windows の PowerShell コマンドとか、コマンドプロンプトに疎く、忘れることがあるので、記録を取ってみるところ。 which 相当 Get-command taskmgr CommandType Name Version Source ----------- ---- ------- ------ Application Taskmgr.exe 10.0.2262… C:\WINDOWS\system32\Taskmgr.exe pkill 相当 taskkill /F /IM main.exe 成功: プロセス "main.exe" (PID 10832) は強制終了されました。 gdisk や fdisk 相当 diskpart Microsoft DiskPart バージョン 10.0.22621.1 Copyright (C) Microsoft Corporation. コンピューター: HOSTNAME DISKPART> list disk ディスク 状態 サイズ 空き ダイナ GPT ### ミック ------------ ------------- ------- ------- --- --- ディスク 0 オンライン 931 GB 2048 KB * DISKPART> sel disk 0 ディスク 0 が選択されました。 DISKPART> list part Partition ### Type Size Offset ------------- ------------------ ------- ------- Partition 1 システム 100 MB 1024 KB Partition 2 予約済み 16 MB 101 MB Partition 3 プライマリ 929 GB 117 MB Partition 4 回復 872 MB 929 GB Partition 5 回復 900 MB 930 GB DISKPART> 参考にしたサイトとか taskkill | Microsoft Learn https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/taskkill (2025年4月9日) diskpart | Microsoft Learn https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/diskpart (2025年4月9日) windows - Equivalent of cmd’s “where” in powershell - Super User https://superuser.com/questions/675837/equivalent-of-cmds-where-in-powershell (2025年4月9日)

April 9, 2025

Arch Linux のインストール (UEFI環境)

この記事を作った動機 arch linux をインストールするときに、いちいち忘れたことが出てきては、wiki を見に行くということをしていたので、自分が普段やっている工程をただ書き出そうというだけです。 いつもどうり、とにかく動くこと優先なので、ロケーション設定とか、なんかいろいろ抜けてたりする可能性は大いになります。 ISO ファイルのダウンロード Arch Linux - Downloads ISO ファイルの書き込み linux ここでの、/dev/sda は、USBドライブを意味している。 sudo dd if="archlinux-2025.03.01-x86_64.iso" of=/dev/sda status=progress windows Rufus などのツールなど、なんでもいいのでISOファイルを扱うツールをダウンロードして、USBメモリに書き込む。細かいことは今回は省略する。 USB メモリから起動 ここは各PCに固有の仕様に依存するので省略する。 キーボードレイアウト 日本語キーボードのときは、レイアウト設定を変更しないと、後々キーの記号と入力される記号が異なる(US配列と日本語配列の違い)というめんどくさいことになるので、変更しておく。 loadkeys jp106 wifi につなげる インターネットが必要なので、wifiにつなげる。"[wlan0]“のところには、station listで表示される任意の wifi カードを選択する。 iwctl station list station [wlan0] scan station [wlan0] get-networks station [wlan0] connect [targetNetworkName] # パスワードを入力 exit # ping が通ればOK ping google.com ping 8.8.8.8 ディスクの初期化 ディスク構成の確認 以下の例では、SSD と sd カードが刺さっているときの表示例である。今回は、以下の例 (/dev/nvme0n1) とは異なるが、/dev/sda にインストールするという前提で話を進める。 ...

April 2, 2025

CIFS (SMB、Samba)を快適に使いたい

この記事を作った動機 linux上で、cifsとVPNを使って自分のファイルサーバにアクセスしているのですが、以下のような不満点があり、どうしたらいいか考えてみた結果、いくつか興味深いオプジョンが見つかったので、それを記録しておくだけです。ちなみに、完全な解決とまでは行ってないですが、多少改善が見られた程度って感じです。 大きなファイルをやり取りすると、同時に他のファイル操作をしたときにもっさりする なにかと、特にvpn環境だと理由不明のファイルマネージャ等のプチフリが多発する ちょっとしたまとめ sudo mount -t cifs -o user=username,password="password",gid=1000,uid=1000,vers=3.11,multichannel,max_channels=16,compress //192.168.xxx.xxx/shareName /Path/To/Mount/Point 特に気になったオプション vers=3.11 smbプロトコルのバージョンを指定する項目で、以下のバージョンが選べる模様です。新しいほどいろんな機能が使えるようです。今回の場合は、使いたい機能が、3.11にあるので、それを指定している前提で、その他気になったオプションをリストアップします。 vers=arg SMB protocol version. Allowed values are: • 1.0 - The classic CIFS/SMBv1 protocol. • 2.0 - The SMBv2.002 protocol. This was initially introduced in Windows Vista Service Pack 1, and Windows Server 2008. Note that the initial release version of Windows Vista spoke a slightly different dialect (2.000) that is not supported. • 2.1 - The SMBv2.1 protocol that was introduced in Microsoft Windows 7 and Windows Server 2008R2. • 3.0 - The SMBv3.0 protocol that was introduced in Microsoft Windows 8 and Windows Server 2012. • 3.02 or 3.0.2 - The SMBv3.0.2 protocol that was introduced in Microsoft Windows 8.1 and Windows Server 2012R2. • 3.1.1 or 3.11 - The SMBv3.1.1 protocol that was introduced in Microsoft Windows 10 and Windows Server 2016. • 3 - The SMBv3.0 protocol version and above. • default - Tries to negotiate the highest SMB2+ version supported by both the client and server. If no dialect is specified on mount vers=default is used. To check Di‐ alect refer to /proc/fs/cifs/DebugData Note too that while this option governs the protocol version used, not all features of each version are available. The default since v4.13.5 is for the client and server to negotiate the highest possible version greater than or equal to 2.1. In kernels prior to v4.13, the default was 1.0. For kernels between v4.13 and v4.13.5 the default is 3.0. multichannel manページを読んでいる限り、一つだけでなく複数のデータをやり取りするための、よくわかってないですが、複数のTCPセッション(複数の通信路)みたいなのを開くっぽいです。これを指定して見ると、大きなファイルを操作していても快適にファイルマネージャとか、レスポンスよくいろんなファイル操作が行える傾向にありました。一つだけの通信路では、やはり厳しいものがあるようです。 ...

March 25, 2025

linux 環境で指紋認証ができない

この記事を書いた動機 結構前から指紋認証機能が linux 上で使えないということがあった。それで、とりあえず以下の2つのパッケージをインストールすることで、センサーを認識して動くところまではやっていた。 yay -Qs fprint local/fprintd 1.94.5-1 (fprint) D-Bus service to access fingerprint readers local/libfprint 1.94.9-1 (fprint) Library for fingerprint readers その時は、Gnome の設定画面にも登録画面が出てきて、とりあえず登録することはできるようになった。しかし、結局登録した指紋と一致しないと言われ、認証機能が思ったように動かないことに気づき、めんどくさくなってまた問題をしばらく放置していた。 そして、最近になって、また linux 環境における指紋認証について調べてみたところ、問題の解決には至らなかったが、視覚的にどんな指紋が読み取られているのか確認する方法があることに気づいたので、それを記録してみようというわけです。 環境 Arch Linux linux kernel 6.13.4-arch1-1 Gnome XPS 13 2in1 (9365) 指紋認証センサー VFS7552 libfprint をコンパイルする libfprint 自体に、指紋認証センサーをテストしたりできるツール群が入っているので、それを使う。もしかするとパッケージマネージャ経由でインストールできたりするかもしれないが、GitHub - iafilatov/libfprint: libfrpint driver for a family of Elantech fingerprint sensorsに合わせて、今回は自前でコンパイルすることにした。 ちなみに、このgitリポジトリ 自体は古く、VFS7552 を検出しなかったので、現行のlibfprint / libfprint · GitLabを後にコンパイルし直した。 一応大まかなポイントだけ、ここには記録しておこうと思う。 ツールをいれる gimp # .pgm な画像を表示するために必要 ninja git python libglib2.0-dev libnss3-dev libpixman-1-dev libusb-1.0.0-dev libx11-dev libxv-dev pkg-config リポジトリのクローン mkdir ~/working cd ~/working git clone https://gitlab.freedesktop.org/libfprint/libfprint.git python 仮想環境の構築 # もし、anaconda が入っている場合は、事前に無効化しておく # conda deactivate python3 -m venv venv . venv/bin/activate pip install -U pip pip install meson “ModuleNotFoundError: No module named ‘distutils.util’” と言われてしまう場合は、以下のモジュールもインストールしていおく。 ...

March 14, 2025

ssh 経由でクローンできる git リポジトリを作るメモ

この記事を書いた動機 単に、リポジトリを作るところまではうまく行っていたのですが、リポジトリをクローンするときに、ユーザ名の指定をわかっておらず、ずっと以下のように間違った"git"というユーザを指定し続けていてなかなか気づけなかったということがあったのでメモすることにしました。 git clone git@[serveradress]:/Path/To/Target/Proejct/Root/Folder ちなみに、間違ったユーザを指定していると、ssh接続できないので、ずっと"Permission denied (publickey).“と言われ続けます。。。最初はなんでssh コマンド経由でつながるのに、gitではうまくいかないのかみたいになっていましたが、結局のところ間違ったユーザを意図せず指定し続けていただけなのでした。。。 リポジトリを作る cd /Path/To/Target/Proejct/Root/Folder git init --bare リポジトリをクローン git clone [username]@[serveradress]:/Path/To/Target/Proejct/Root/Folder 参考にしたサイトとか debugging - How can I debug git/git-shell related problems? - Stack Overflow https://stackoverflow.com/questions/6178401/how-can-i-debug-git-git-shell-related-problems (2025年3月10日) Git - Setting Up the Server https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server (2025年3月10日) Why doesn’t my SSH key work for connecting to github? - Stack Overflow https://stackoverflow.com/questions/9960897/why-doesnt-my-ssh-key-work-for-connecting-to-github (2025年3月10日) ChatGPT https://chatgpt.com/ (2025年3月10日)

March 10, 2025

OOBE(Windowsのセットアップ画面) をスキップする

この記事を書いた動機 普段私は、Microsoftが押し付けてくるセットアップ画面が嫌いなので、コマンド経由で直接アカウントを作り、OOBEを回避している。それでそのことも、コマンドライン経由で windows をインストールするの記事を書くついでに、記録することにした次第です。 コマンドプロンプトを開く Shift + F10 アカウントの作成 今回は例として、“main"という名前のアカウントを作り、“password"というパスワードを設定する。ちなみにここで管理者権限をmainというアカウントに付与している。これをしないと、管理者権限が得られないということになりかねないので、気をつける。最悪、Windows を再インストールしたり、パスワードを無理やりこじ開けることになる。 net user main /add net user main password net user localgroup Administrators main /add REM "net user" とだけ打って、コマンドを実行すると現在存在しているユーザを確認できる。 一応、管理者権限をどうあがいても使うことができないということを回避するために、普段私は、Administratorという、もとから管理者権限を持っているアカウントがwindowsでは標準で隠されているので、それも使える様に設定する。用が済んだら無効化することを推奨します。 有効化 net user Administrator /active:yes 無効化 net user Administrator /active:no OOBE をスキップ 管理者権限を持っているアカウントを作成したことを確認してから、OOBEを終わらせる操作をする。“C:\Windows\System32” 配下にいることを想定する。 REM cd C:\Windows\System32 cd OOBE msoobe.exe bypassnro この時点で、以下の画面で永久に強制的に再起動するまで、セットアップが進まなくなるので、しばらく待ってから強制的に再起動する。あまり早とちりしすぎると、またもとのOOBEの画面に戻されるので注意する。もとのOOBEの画面に戻されたときは、再度OOBEを終わらせる操作をやり直す。 アカウントにログイン 今回は、Administrator アカウントも有効にしていてかつパスワードをそのアカウントに対して設定していないため、、まずはそちらの方へ自動ログインされる。 そうすると以下のアカウント初回ログインのセットアップが出てくるので、適当に設定して終わらせる。するとデスクトップ画面が出て、とりあえずWindowsのインストールが成功し、起動するようになったことが確認できる。 ...

March 5, 2025

コマンドライン経由で windows をインストールする

この記事を書いた動機 自分用に、ただどうやって windows をコマンド経由でインストールするか記録するだけです。前提として、インストールメディアから windows インストーラが起動しているところからスタートします。 ちなみに、コマンドライン経由で Windows をインストールすると、インストーラの互換性チェックを完全にスキップできる模様です。TPMとかそういうのをレジストリとかでいちいちバイパスする設定とか無しで、動くかどうかはさておき、現状はこの手法でとりあえずインストールできるようです。 コマンドプロンプトを開く Shift + F10 diskpart でパティーション作成 diskpart list disk sel disk [windowsをインストールするSSDとかを番号で選択] REM 全部データが消えるので注意 clean convert gpt REM uefi で起動するとき読み込まれるパーティションの作成 create part efi size=100 format quick fs=fat32 label="System" create part msr size=16 REM Windowns が保存されるメインパティーションの作成 create part primary format quick fs=ntfs label="Windows" REM ドライブレターを割り当て、エクスプローラーなどから見えるようにする 割り当てる文字は重複してたりしなければ何でも良い list part sel part [System パティーションの番号] assign letter P sel part [Windows パティーションの番号] assign letter Q exit dism で Windows をインストールをする windows インストールメディアのドライブレターの確認 開くなどを押して、windows インストールメディア自体がどんなドライブレターでマウントされているか確認する。例えば、今回であれば、“D:"としてマウントされていた。どんなやり方でもよいが、私は普段メモ帳のファイルダイアログから確認している。 ...

March 5, 2025

Android版 Chrome でデバックする

この記事を書いた動機 自分用のメモとして、実際にやったことを記録し、ノートを取るみたいな感じにしたいと思ったのと、私は、自分用のWebアプリみたいなのを開発しているのだが、その過程でスマホ版のブラウザでのデバックをしたくなったというのがある。 二番煎じではあるが、他のブログでの説明はなんか画像とか少なくて不満があったというのもあり、ならば自分でやってみたらというところも経緯としてある。(自分も人のこと言えたほど大したこと書けないけど。。。) 環境 スマホ側 Pixel 5a 5G Android版 Chrome 131 Android 14 PC側 Windows 11 (linux環境でも同じことはできると思う) Windows版 Chrome 131 イメージ 概要 adb コマンドの環境構築 USBデバックの接続 PCで chrome://inspect/#devicesを開く デバックしたいタブを選択して終わり デバックの仕方 adb をインストールする(PC側) 開発ツールをダウンロード 今回は、以下のページから"platform-tools-latest-windows.zip"をダウンロード SDK Platform-Tools リリースノート | Android Studio | Android Developers 開発ツールを展開と配置する 適当な場所(ダウンロード)とかで展開し、配置する。今回は、“C:"直下に開発者ツールを配置することとする。 # ダウンロードして展開したフォルダの中に入っている、"platform-tools"を以下の様な形になるように配置する (base) PS C:\> ls platform-tools Directory: C:\platform-tools Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2025/01/11 0:20 5969000 adb.exe -a--- 2025/01/11 0:20 108136 AdbWinApi.dll -a--- 2025/01/11 0:20 73320 AdbWinUsbApi.dll -a--- 2025/01/11 0:20 451688 etc1tool.exe -a--- 2025/01/11 0:20 1874536 fastboot.exe -a--- 2025/01/11 0:20 54376 hprof-conv.exe -a--- 2025/01/11 0:20 242968 libwinpthread-1.dll -a--- 2025/01/11 0:20 479848 make_f2fs_casefold.exe -a--- 2025/01/11 0:20 479848 make_f2fs.exe -a--- 2025/01/11 0:20 1157 mke2fs.conf -a--- 2025/01/11 0:20 756840 mke2fs.exe -a--- 2025/01/11 0:20 1089833 NOTICE.txt -a--- 2025/01/11 0:20 38 source.properties -a--- 2025/01/11 0:20 2912360 sqlite3.exe 環境変数を設定する ...

January 10, 2025

linux 休止状態の動作を確認したい

この記事を書いた動機 (Nov 14 あたりの出来事) 最近、HP Proliant ML 150 (9 Gen) の消費電力削減の目的で、休止状態を利用できるようにしようとした過程で、それが正しく機能しているのか調べたくなった。そこで、ただメモリをたくさん指定した量だけ消費するプログラムを作成し、とりあえず動くところまで作ったので、ここに置いておこうというわけである。どこまで意味があるのかは不明。 ちなみに、一応メモリ割り当てに失敗したとき用に、再度メモリ割り当てを試みる機能や、メモリ割り当てに完全に失敗したときにプログラムを終了するなど、セーフティも実装しているが、結局使うことはなかったので正しく動く保証はない。 使い方 プログラムのコンパイル gcc useram.c -o useram プログラムの利用 # 10 GB のメモリを埋めるときの例 useram 10 Too many ram will be allocated by your request. denied operation. と出てくる時 プログラム内の定数 margin の大きさが大きすぎる可能性があるので、適宜調整する。 後は単純に、実装されているメモリサイズより大きなサイズを指定してしまっているので、小さい値で再度プログラムを実行してみる。 プログラム本体 #include <stdio.h> #include <stdlib.h> #include <sys/sysinfo.h> // unit GB #define margin 10 #define retry 3 // Get the amount of entire installed RAM. // No args are required. // return: amount of entire installed RAM int checkRAM(){ unsigned int amount = 0; // GB struct sysinfo info; sysinfo(&info); // convert unit byte to Giga byte (10^9) amount = info.totalram / 1000 / 1000 / 1000; return amount; } // allocate RAM (amount GB) // args:(Unit -> GB) // amount: allocation size unsigned int // maxAmount: entire system RAM amount unsigned int // return: // pointer: pointer to allocated area void* // If all ram allocation attempts are failed, return NULL. void* allocateRAM(unsigned int amount, unsigned int maxAmount){ // find specified allocation size is exceed entire system RAM amount or not. if(amount >= maxAmount - margin){ printf("Too many ram will be allocated by your request. denied operation.\n"); return 0; } // allocate ram but still the allocated area is not utilized. unsigned long allocateSize = (long)sizeof(char) * (long)amount * (long)1000 * (long)1000 * (long)1000; void* pointer = (void*)malloc(allocateSize); // retry ram allcation if it is failed. if(pointer == NULL){ printf("ram allocation is failed. retry %d times\n",retry); int counter = 0; while(pointer == NULL && counter < retry){ printf("retry %d\n",counter); void* pointer = (void*)malloc(allocateSize); counter++; } } // If all ram allocation attempts are failed, return NULL. if(pointer == NULL){ printf("allocation failed!\n"); return NULL; } printf("allocation OK\n"); return pointer; } // amount unit GB void useRAM(void* pointer,unsigned int amount){ // 4 mean size of int unsigned long loopAmount = (long)amount * (long)1000 * (long)1000 * (long)1000 / (long) 4; int* arr = (int*)pointer; // For each loop, fill up the allocated area with random value by 4 byte(size of int) for(unsigned long i = 0; i < loopAmount; i++){ arr[i] = (int)rand(); } printf("Loop amount %lu\n",loopAmount); printf("RAM area is filled up. The process is finished.\n"); return; } int main(int argc,char **argv){ // find entire system ram unsigned int ramAmount = checkRAM(); // If The allocation size is not specified, exit this program. if(argc <= 1){ printf(" The size of ram amount that will be filled up is not specified. (GB)\n"); return -1; } unsigned int amount = atoi(argv[1]); // find correct value is entered or not if(amount != 0){ printf("%d GB\n",amount); }else{ printf("You may enter string or 0 as args. Stop.\n"); return -1; } printf("System info: \n %d GB RAM is installed\n",ramAmount); // ram allocation and filling up process void* pointer = allocateRAM(amount,ramAmount); useRAM(pointer,amount); // If ram allocation is failed, exit this program if(pointer == NULL) { printf("went worng\n"); return -1; } // wait until get user input. // The filled up RAM area will not be free while there is no user input for 'q' key. char input = 'a'; while(input != 'q') scanf("%c",&input); free(pointer); return 0; } 参考にしたサイト How to determine memory size via C code - Stack Overflow https://stackoverflow.com/questions/45259131/how-to-determine-memory-size-via-c-code (2024年12月12日)

December 12, 2024