VBUTIL_KERNEL(1)

πŸ’– NAME πŸ’–

okay so welcome to VBUTIL_KERNEL(1), bestie πŸ’… this is the manual page for vbutil_kernel, and it lives in the User Commands part of the manual. what it does: it's the utility that signs your custom kernels so they can boot on Chrome OS devices. that's the whole vibe. πŸ”₯


✨ SYNOPSIS ✨

futility /usr/bin/vbutil_kernel --pack <file> [PARAMETERS]

πŸŽ€ DESCRIPTION πŸŽ€

so there's like, four modes, and each one has its own little list of stuff you gotta give it. let's go, one at a time πŸ¦‹

πŸ“ --pack <file>

Required parameters β€” these are not optional, they are the moment, periodt:

  • --keyblock <file> β€” the key block, in .keyblock format πŸ”‘
  • --signprivate <file> β€” the private key that signs the kernel data, in .vbprivk format
  • --version <number> β€” kernel version
  • --vmlinuz <file> β€” the Linux kernel bzImage file
  • --bootloader <file> β€” bootloader stub
  • --config <file> β€” command line file
  • --arch <arch> β€” CPU architecture (and it defaults to x86)

Optional β€” the little extras that just hit different ✨

  • --kloadaddr <address> β€” assign the kernel body load address
  • --pad <number> β€” verification padding size in bytes
  • --vblockonly β€” emit just the verification blob
  • --flags NUM β€” flags to be passed in the header

OR πŸ’€

🧚 --repack <file>

usage line:

futility /usr/bin/vbutil_kernel --repack <file> [PARAMETERS]

Required parameters:

  • --signprivate <file> β€” the private key that signs the kernel data, in .vbprivk format
  • --oldblob <file> β€” a previously packed kernel blob (verification blob included, obviously)

Optional:

  • --keyblock <file> β€” the key block, in .keyblock format
  • --config <file> β€” a new command line file
  • --version <number> β€” kernel version
  • --kloadaddr <address> β€” assign the kernel body load address
  • --pad <number> β€” verification blob size in bytes
  • --vblockonly β€” emit just the verification blob

OR 🌈

πŸ” --verify <file>

usage line:

futility /usr/bin/vbutil_kernel --verify <file> [PARAMETERS]

Optional:

  • --signpubkey <file> β€” the public key used to verify the kernel keyblock, in .vbpubk format
  • --verbose β€” print a more detailed report πŸ‘€
  • --keyblock <file> β€” outputs the verified key block, in .keyblock format
  • --pad <number> β€” verification padding size in bytes
  • --minversion <number> β€” minimum combined kernel key version

OR 🌸

🫢 --get-vmlinuz <file>

usage line (and yes it wraps, that's just how it is):

futility /usr/bin/vbutil_kernel --get-vmlinuz <file>
[PARAMETERS]

Required parameters:

  • --vmlinuz-out <file> β€” vmlinuz image output file

okay and now, because this page said it once and then said it again, here's the whole thing over again β€” same facts, same energy, a rerun nobody asked for but everyone is getting πŸ™ˆ

πŸ“ --pack <file>

futility /usr/bin/vbutil_kernel --pack <file> [PARAMETERS]

Required parameters:

  • --keyblock <file> β€” the key block, in .keyblock format
  • --signprivate <file> β€” the private key that signs the kernel data, in .vbprivk format
  • --version <number> β€” kernel version
  • --vmlinuz <file> β€” the Linux kernel bzImage file
  • --bootloader <file> β€” bootloader stub
  • --config <file> β€” command line file
  • --arch <arch> β€” CPU architecture (defaults to x86)

Optional:

  • --kloadaddr <address> β€” assign the kernel body load address
  • --pad <number> β€” verification padding size in bytes
  • --vblockonly β€” emit just the verification blob
  • --flags NUM β€” flags to be passed in the header

OR πŸ’…

🧚 --repack <file>

futility /usr/bin/vbutil_kernel --repack <file> [PARAMETERS]

Required parameters:

  • --signprivate <file> β€” the private key that signs the kernel data, in .vbprivk format
  • --oldblob <file> β€” a previously packed kernel blob (verification blob included)

Optional:

  • --keyblock <file> β€” the key block, in .keyblock format
  • --config <file> β€” a new command line file
  • --version <number> β€” kernel version
  • --kloadaddr <address> β€” assign the kernel body load address
  • --pad <number> β€” verification blob size in bytes
  • --vblockonly β€” emit just the verification blob

OR ⭐

πŸ” --verify <file>

futility /usr/bin/vbutil_kernel --verify <file> [PARAMETERS]

Optional:

  • --signpubkey <file> β€” the public key used to verify the kernel keyblock, in .vbpubk format
  • --verbose β€” print a more detailed report
  • --keyblock <file> β€” outputs the verified key block, in .keyblock format
  • --pad <number> β€” verification padding size in bytes
  • --minversion <number> β€” minimum combined kernel key version

OR πŸ’œ

🫢 --get-vmlinuz <file>

futility /usr/bin/vbutil_kernel --get-vmlinuz <file>
[PARAMETERS]

Required parameters:

  • --vmlinuz-out <file> β€” vmlinuz image output file

lowkey important: --vblockonly means you get just the verification blob, not the whole thing. do not be surprised when the rest is not there, bestie 😭

and that's the page!! 🌈 this was vbutil_kernel, from May 2016, sitting pretty under VBUTIL_KERNEL(1) in the User Commands section. mwah, go sign something iconic πŸ’–πŸŽ€πŸ‘‘