Upgrade to Pro — share decks privately, control downloads, hide ads and more …

lsblkコマンドのTYPEフィールドの値を自由に変更

 lsblkコマンドのTYPEフィールドの値を自由に変更

以下動画のテキストです
https://youtu.be/D_pecRQXn0k

Satoru Takeuchi

November 26, 2023
Tweet

More Decks by Satoru Takeuchi

Other Decks in Technology

Transcript

  1. lsblkのTYPEフィールドの値を
    自由に変更
    Nov. 28th, 2023
    Satoru Takeuchi
    X: satoru_takeuchi
    1

    View full-size slide

  2. 今回話すこと
    ● 「その59 lsblkのtypeフィールドのしくみ」の続き
    ● lsblkのtypeフィールドの値を自由に変更する方法
    2

    View full-size slide

  3. lsblkコマンドのtypeフィールド
    3

    View full-size slide

  4. TYPEフィールドでたまに困ることがある
    ● ブロックデバイスを扱うコマンドが特定のTYPEを受け付けないことがある
    ○ e.g. ceph-volume lvm preapreコマンドはdisk, part, lvmなど一部しか使えない
    ● 本番環境はさておきテスト用には任意のデバイスを使いたい
    4

    View full-size slide

  5. lsblkのソース
    ● util-linuxの中にある
    ● githubだとgithub.com/util-linux/util-linux
    ● typeを判定しているのはmisc_utils/lsblk.c#get_type()
    ○ https://github.com/util-linux/util-linux/blob/master/misc-utils/lsblk.c#L456-L469
    ● dmデバイスの場合
    ○ UUIDは/sys/block//dm/uuidファイルの値で判断
    ○ UUIDが”-”という形式ならTYPEフィールドの値はを小文字にしたもの
    ■ が”part”で始まっていれば例外的に ”part”になる
    ○ そうでなければ”dm”
    5

    View full-size slide

  6. linearターゲットの場合
    6
    cat test-linear.txt
    sudo dmsetup create test-linear test-linear.txt
    lsblk
    cat /sys/block/dm-X/dm/uuid
    sudo dmsetup remove test-linear

    View full-size slide

  7. linearターゲットの場合
    7
    cat test-linear.txt
    sudo dmsetup create test-linear test-linear.txt
    lsblk
    cat /sys/block/dm-X/dm/uuid
    sudo dmsetup remove test-linear
    NAME MAJ:MIN RM SIZE RO TYPE
    MOUNTPOINTS
    loop0 7:0 0 1G 0 loop
    └─test-linear 253:0 0 1G 0 dm

    View full-size slide

  8. dmデバイスのuuidは作成時に自分で設定できる
    ● dmsetup createに-u オプションを渡せばいい
    ● 例: linearデバイスをdiskとして認識させる
    8
    sudo dmsetup create -u disk-foobar test-linear test-linear.txt
    lsblk
    sudo dmsetup remove test-linear

    View full-size slide

  9. dmデバイスのuuidは作成時に自分で設定できる
    ● dmsetup createに-u オプションを渡せばいい
    ● 例: linearデバイスをdiskとして認識させる
    9
    sudo dmsetup create -u disk-foobar test-linear test-linear.txt
    lsblk
    sudo dmsetup remove test-linear
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
    loop0 7:0 0 1G 0 loop
    └─test-linear 253:0 0 1G 0 disk

    View full-size slide

  10. 悪ふざけもできる
    10
    sudo dmsetup create -u helpme...-foobar test-linear test-linear.txt
    lsblk
    sudo dmsetup remove test-linear

    View full-size slide

  11. 悪ふざけもできる
    11
    sudo dmsetup create -u helpme...-foobar test-linear test-linear.txt
    lsblk
    sudo dmsetup remove test-linear
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
    loop0 7:0 0 1G 0 loop
    └─test-linear 253:0 0 1G 0 helpme...

    View full-size slide

  12. まとめ
    ● lsblkコマンドのTYPEフィールドの値は自由に書き換えられる
    ● 適当にソースコードを読むとちょっとしたハックの方法がわかってうれしい
    12

    View full-size slide