Skip to content

Instantly share code, notes, and snippets.

@adwait1-g
Last active February 21, 2024 15:53
Show Gist options
  • Star 14 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save adwait1-g/5b4ae85239619e6f94b01cfb1bdb7dd6 to your computer and use it in GitHub Desktop.
Save adwait1-g/5b4ae85239619e6f94b01cfb1bdb7dd6 to your computer and use it in GitHub Desktop.
This gist tells you how to build the kernel and run it on qemu. This is also a way to get started with kernel's internals.

1. Downloading and building the Linux kernel

  1. Clone the github repository onto your local machine.
$ git clone https://github.com/torvalds/linux.git
$ cd linux
  1. Configure the build
linux$ make config
.
.
.
linux$ make menuconfig
  1. Build the kernel
linux$ make -j9
  • The 9 is the number of cores. You can give a suitable number.

It'll take a few minutes to build. You should see the following message at the end of a successful build.

Setup is 16220 bytes (padded to 16384 bytes).
System is 8441 kB
CRC 4aa83d6b
Kernel: arch/x86/boot/bzImage is ready  (#3)

So, the kernel image(binary) is ready to be used.

2. Booting the kernel using qemu

Credits: Booting a Custom Linux Kernel in QEMU and Debugging It With GDB

Follow the long version.

There are a bunch of things I want to explore before going forward.

a. What is initramfs?

Source: About initramfs

  • The only purpose of an initramfs is to mount the root filesystem. The initramfs is a complete set of directories that is found on a normal root fs.

  • At boot time, the bootloader loads the kernel and the initramfs image into memory and starts the kernel.

    • The kernel checks for the presence of initramfs. If it is found, it is mounted as / and /init is executed.
  1. Creating an initdisk
$ mkinitramfs -o ramdisk.img

b. Starting the emulator

linux$ qemu-system-x86_64 \
 -kernel arch/x86_64/boot/bzImage \
 -nographic \
  -append "console=ttyS0 nokaslr" \
 -initrd ramdisk.img \
 -m 512 \
 --enable-kvm \
 -cpu host \
 -s -S

At this point, the qemu emulator has started and is waiting for a gdb-remote to connect. Open up another terminal and connect it.

  • Opening gdb.
linux: gdb -q vmlinux
Reading symbols from vmlinux...done.
warning: File "/home/adwi/ALL/kernel_exploitation/exp/LinuxPure/linux/scripts/gdb/vmlinux-gdb.py" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load:path/to/linux/scripts/gdb/vmlinux-gdb.py".
To enable execution of this file add
	add-auto-load-safe-path /home/adwi/ALL/kernel_exploitation/exp/LinuxPure/linux/scripts/gdb/vmlinux-gdb.py
line to your configuration file "/home/adwi/.gdbinit".
To completely disable this security protection add
	set auto-load safe-path /
line to your configuration file "/home/adwi/.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual.  E.g., run from the shell:
	info "(gdb)Auto-loading safe path"
gdb-peda$ 
  • Let us connect to the remote.
gdb-peda$ target remote :1234
Remote debugging using :1234
Warning: not running or target is remote
0x0000000000000000 in fixed_percpu_data ()
  • Let us break at a function called start_kernel which I think will load the kernel image - need to explore more.
gdb-peda$ hbreak start_kernel 
Hardware assisted breakpoint 1 at 0xffffffff829a6a9b: file init/main.c, line 576.
gdb-peda$
  • Let us continue.
gdb-peda$ continue
Continuing.

For some reason, the continue is screwing up. It is spitting out an error.

gdb-peda$ continue
Continuing.
Remote 'g' packet reply is too long (expected 308 bytes, got 536 bytes): 000000000000000000000000000000002332faf700000000fffb8b0f00000000000000000000000050420100000000000000000000000000503f4082ffffffffffffffff00000000ffffffffffff0000083f4082ffffffffffff0000ffffffff00000000000000000000000000000000000000000000000000000000000000009b6a9a82ffffffff4600000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000801f0000
  • I tried this multiple times. For one time, the continue worked and the I got the initramfs shell. But the rest of the times, I got this error.

  • I'll detach from remote and explore initramfs for a while. The output is damn interesting.

[    0.000000] Linux version 5.3.0-rc5+ (adwi@adwi) (gcc version 5.5.0 20171010 (Ubuntu 5.5.0-12ubuntu1~16.04)) #3 SMP Sun Aug 25 19:25:49 IST 2019
[    0.000000] Command line: console=ttyS0 nokaslr
[    0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[    0.000000] BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001ffdffff] usable
[    0.000000] BIOS-e820: [mem 0x000000001ffe0000-0x000000001fffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] SMBIOS 2.8 present.
[    0.000000] DMI: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
[    0.000000] last_pfn = 0x1ffe0 max_arch_pfn = 0x400000000
[    0.000000] x86/PAT: Configuration [0-7]: WB  WC  UC- UC  WB  WP  UC- WT  
[    0.000000] found SMP MP-table at [mem 0x000f6640-0x000f664f]
[    0.000000] check: Scanning 1 areas for low memory corruption
[    0.000000] Using GB pages for direct mapping
[    0.000000] RAMDISK: [mem 0x1c9ae000-0x1ffdffff]
[    0.000000] ACPI: Early table checksum verification disabled
[    0.000000] ACPI: RSDP 0x00000000000F6460 000014 (v00 BOCHS )
[    0.000000] ACPI: RSDT 0x000000001FFE16EE 000034 (v01 BOCHS  BXPCRSDT 00000001 BXPC 00000001)
[    0.000000] ACPI: FACP 0x000000001FFE0C14 000074 (v01 BOCHS  BXPCFACP 00000001 BXPC 00000001)
[    0.000000] ACPI: DSDT 0x000000001FFE0040 000BD4 (v01 BOCHS  BXPCDSDT 00000001 BXPC 00000001)
[    0.000000] ACPI: FACS 0x000000001FFE0000 000040
[    0.000000] ACPI: SSDT 0x000000001FFE0C88 0009B6 (v01 BOCHS  BXPCSSDT 00000001 BXPC 00000001)
[    0.000000] ACPI: APIC 0x000000001FFE163E 000078 (v01 BOCHS  BXPCAPIC 00000001 BXPC 00000001)
[    0.000000] ACPI: HPET 0x000000001FFE16B6 000038 (v01 BOCHS  BXPCHPET 00000001 BXPC 00000001)
[    0.000000] No NUMA configuration found
[    0.000000] Faking a node at [mem 0x0000000000000000-0x000000001ffdffff]
[    0.000000] NODE_DATA(0) allocated [mem 0x1c9aa000-0x1c9adfff]
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
[    0.000000]   DMA32    [mem 0x0000000001000000-0x000000001ffdffff]
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000001000-0x000000000009efff]
[    0.000000]   node   0: [mem 0x0000000000100000-0x000000001ffdffff]
[    0.000000] Zeroed struct page in unavailable ranges: 98 pages
[    0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x000000001ffdffff]
[    0.000000] ACPI: PM-Timer IO Port: 0x608
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0xff] dfl dfl lint[0x1])
[    0.000000] IOAPIC[0]: apic_id 0, version 17, address 0xfec00000, GSI 0-23
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 high level)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level)
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[    0.000000] smpboot: Allowing 1 CPUs, 0 hotplug CPUs
[    0.000000] PM: Registered nosave memory: [mem 0x00000000-0x00000fff]
[    0.000000] PM: Registered nosave memory: [mem 0x0009f000-0x0009ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000effff]
[    0.000000] PM: Registered nosave memory: [mem 0x000f0000-0x000fffff]
[    0.000000] [mem 0x20000000-0xfeffbfff] available for PCI devices
[    0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1910969940391419 ns
[    0.000000] setup_percpu: NR_CPUS:64 nr_cpumask_bits:64 nr_cpu_ids:1 nr_node_ids:1
[    0.000000] percpu: Embedded 51 pages/cpu s170904 r8192 d29800 u2097152
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 128873
[    0.000000] Policy zone: DMA32
[    0.000000] Kernel command line: console=ttyS0 nokaslr
[    0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.000000] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 429868K/523768K available (14340K kernel code, 1330K rwdata, 3112K rodata, 1316K init, 1216K bss, 93900K reserved, 0K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] Kernel/User page tables isolation: enabled
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu: 	RCU event tracing is enabled.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=1.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[    0.000000] NR_IRQS: 4352, nr_irqs: 256, preallocated irqs: 16
[    0.000000] random: get_random_bytes called from start_kernel+0x310/0x503 with crng_init=0
[    0.000000] Console: colour VGA+ 80x25
[    0.000000] printk: console [ttyS0] enabled
[    0.000000] ACPI: Core revision 20190703
[    0.000000] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604467 ns
[    0.001000] APIC: Switch to symmetric I/O mode setup
[    0.003000] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.011000] tsc: Unable to calibrate against PIT
[    0.011000] tsc: using HPET reference calibration
[    0.012000] tsc: Detected 2194.432 MHz processor
[    0.000005] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x1fa1a6ea0fe, max_idle_ns: 440795233641 ns
[    0.001801] Calibrating delay loop (skipped), value calculated using timer frequency.. 4388.86 BogoMIPS (lpj=2194432)
[    0.002801] pid_max: default: 32768 minimum: 301
[    0.003578] LSM: Security Framework initializing
[    0.003850] SELinux:  Initializing.
[    0.004850] Mount-cache hash table entries: 1024 (order: 1, 8192 bytes, linear)
[    0.005811] Mountpoint-cache hash table entries: 1024 (order: 1, 8192 bytes, linear)
[    0.007627] Last level iTLB entries: 4KB 0, 2MB 0, 4MB 0
[    0.007817] Last level dTLB entries: 4KB 0, 2MB 0, 4MB 0, 1GB 0
[    0.008808] Spectre V1 : Mitigation: usercopy/swapgs barriers and __user pointer sanitization
[    0.009801] Spectre V2 : Mitigation: Full generic retpoline
[    0.010596] Spectre V2 : Spectre v2 / SpectreRSB mitigation: Filling RSB on context switch
[    0.010801] Spectre V2 : Enabling Restricted Speculation for firmware calls
[    0.011803] Spectre V2 : mitigation: Enabling conditional Indirect Branch Prediction Barrier
[    0.012802] Speculative Store Bypass: Mitigation: Speculative Store Bypass disabled via prctl and seccomp
[    0.013805] MDS: Vulnerable: Clear CPU buffers attempted, no microcode
[    0.022596] Freeing SMP alternatives memory: 40K
[    0.022959] smpboot: CPU0: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz (family: 0x6, model: 0x3d, stepping: 0x4)
[    0.023891] Performance Events: Broadwell events, Intel PMU driver.
[    0.024807] ... version:                2
[    0.025409] ... bit width:              48
[    0.025802] ... generic registers:      4
[    0.026386] ... value mask:             0000ffffffffffff
[    0.026803] ... max period:             000000007fffffff
[    0.027683] ... fixed-purpose events:   3
[    0.027803] ... event mask:             000000070000000f
[    0.028930] rcu: Hierarchical SRCU implementation.
[    0.029881] smp: Bringing up secondary CPUs ...
[    0.030826] smp: Brought up 1 node, 1 CPU
[    0.031820] smpboot: Max logical packages: 1
[    0.032646] smpboot: Total of 1 processors activated (4388.86 BogoMIPS)
[    0.032960] devtmpfs: initialized
[    0.033887] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
[    0.034807] futex hash table entries: 256 (order: 2, 16384 bytes, linear)
[    0.035948] PM: RTC time: 14:27:58, date: 2019-08-25
[    0.036901] NET: Registered protocol family 16
[    0.037876] audit: initializing netlink subsys (disabled)
[    0.038918] cpuidle: using governor menu
[    0.039757] ACPI: bus type PCI registered
[    0.039973] PCI: Using configuration type 1 for base access
[    0.041824] audit: type=2000 audit(1566743278.051:1): state=initialized audit_enabled=0 res=1
[    0.044671] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.044958] cryptomgr_test (19) used greatest stack depth: 15504 bytes left
[    0.045835] kworker/u2:0 (21) used greatest stack depth: 14568 bytes left
[    0.046870] kworker/u2:0 (25) used greatest stack depth: 14104 bytes left
[    0.048616] ACPI: Added _OSI(Module Device)
[    0.048810] ACPI: Added _OSI(Processor Device)
[    0.049601] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.049804] ACPI: Added _OSI(Processor Aggregator Device)
[    0.050731] ACPI: Added _OSI(Linux-Dell-Video)
[    0.050858] ACPI: Added _OSI(Linux-Lenovo-NV-HDMI-Audio)
[    0.051667] ACPI: Added _OSI(Linux-HPI-Hybrid-Graphics)
[    0.052393] ACPI: 2 ACPI AML tables successfully acquired and loaded
[    0.053432] ACPI: Interpreter enabled
[    0.053834] ACPI: (supports S0 S3 S4 S5)
[    0.054691] ACPI: Using IOAPIC for interrupt routing
[    0.054938] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.056045] ACPI: Enabled 16 GPEs in block 00 to 0F
[    0.058701] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.058808] acpi PNP0A03:00: _OSC: OS supports [ASPM ClockPM Segments MSI HPX-Type3]
[    0.059811] acpi PNP0A03:00: fail to add MMCONFIG information, can't access extended PCI configuration space under this bridge.
[    0.060870] PCI host bridge to bus 0000:00
[    0.061688] pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7 window]
[    0.061808] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff window]
[    0.062834] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
[    0.063813] pci_bus 0000:00: root bus resource [mem 0x20000000-0xfebfffff window]
[    0.064836] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.065999] pci 0000:00:00.0: [8086:1237] type 00 class 0x060000
[    0.067326] pci 0000:00:01.0: [8086:7000] type 00 class 0x060100
[    0.068450] pci 0000:00:01.1: [8086:7010] type 00 class 0x010180
[    0.070806] pci 0000:00:01.1: reg 0x20: [io  0xc040-0xc04f]
[    0.073135] pci 0000:00:01.1: legacy IDE quirk: reg 0x10: [io  0x01f0-0x01f7]
[    0.073805] pci 0000:00:01.1: legacy IDE quirk: reg 0x14: [io  0x03f6]
[    0.074742] pci 0000:00:01.1: legacy IDE quirk: reg 0x18: [io  0x0170-0x0177]
[    0.074803] pci 0000:00:01.1: legacy IDE quirk: reg 0x1c: [io  0x0376]
[    0.076012] pci 0000:00:01.3: [8086:7113] type 00 class 0x068000
[    0.077315] pci 0000:00:01.3: quirk: [io  0x0600-0x063f] claimed by PIIX4 ACPI
[    0.077813] pci 0000:00:01.3: quirk: [io  0x0700-0x070f] claimed by PIIX4 SMB
[    0.079064] pci 0000:00:02.0: [1234:1111] type 00 class 0x030000
[    0.080842] pci 0000:00:02.0: reg 0x10: [mem 0xfd000000-0xfdffffff pref]
[    0.083859] pci 0000:00:02.0: reg 0x18: [mem 0xfebf0000-0xfebf0fff]
[    0.089467] pci 0000:00:02.0: reg 0x30: [mem 0xfebe0000-0xfebeffff pref]
[    0.090143] pci 0000:00:03.0: [8086:100e] type 00 class 0x020000
[    0.091691] pci 0000:00:03.0: reg 0x10: [mem 0xfebc0000-0xfebdffff]
[    0.092533] pci 0000:00:03.0: reg 0x14: [io  0xc000-0xc03f]
[    0.098173] pci 0000:00:03.0: reg 0x30: [mem 0xfeb80000-0xfebbffff pref]
[    0.099576] ACPI: PCI Interrupt Link [LNKA] (IRQs 5 *10 11)
[    0.099902] ACPI: PCI Interrupt Link [LNKB] (IRQs 5 *10 11)
[    0.100894] ACPI: PCI Interrupt Link [LNKC] (IRQs 5 10 *11)
[    0.101891] ACPI: PCI Interrupt Link [LNKD] (IRQs 5 10 *11)
[    0.102881] ACPI: PCI Interrupt Link [LNKS] (IRQs *9)
[    0.104116] pci 0000:00:02.0: vgaarb: setting as boot VGA device
[    0.104799] pci 0000:00:02.0: vgaarb: VGA device added: decodes=io+mem,owns=io+mem,locks=none
[    0.104814] pci 0000:00:02.0: vgaarb: bridge control possible
[    0.105808] vgaarb: loaded
[    0.106779] SCSI subsystem initialized
[    0.106904] ACPI: bus type USB registered
[    0.107610] usbcore: registered new interface driver usbfs
[    0.107821] usbcore: registered new interface driver hub
[    0.108722] usbcore: registered new device driver usb
[    0.108830] pps_core: LinuxPPS API ver. 1 registered
[    0.109716] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.109807] PTP clock support registered
[    0.110565] EDAC MC: Ver: 3.0.0
[    0.111015] Advanced Linux Sound Architecture Driver Initialized.
[    0.111820] PCI: Using ACPI for IRQ routing
[    0.112803] NetLabel: Initializing
[    0.113419] NetLabel:  domain hash size = 128
[    0.113813] NetLabel:  protocols = UNLABELED CIPSOv4 CALIPSO
[    0.114637] NetLabel:  unlabeled traffic allowed by default
[    0.115847] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
[    0.116551] hpet0: 3 comparators, 64-bit 100.000000 MHz counter
[    0.120822] clocksource: Switched to clocksource tsc-early
[    0.192795] VFS: Disk quotas dquot_6.6.0
[    0.193521] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.194938] pnp: PnP ACPI init
[    0.196229] pnp: PnP ACPI: found 6 devices
[    0.197742] thermal_sys: Registered thermal governor 'step_wise'
[    0.197742] thermal_sys: Registered thermal governor 'user_space'
[    0.203225] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[    0.205625] pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7 window]
[    0.206562] pci_bus 0000:00: resource 5 [io  0x0d00-0xffff window]
[    0.207796] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window]
[    0.209420] pci_bus 0000:00: resource 7 [mem 0x20000000-0xfebfffff window]
[    0.210849] NET: Registered protocol family 2
[    0.211934] tcp_listen_portaddr_hash hash table entries: 256 (order: 0, 4096 bytes, linear)
[    0.213613] TCP established hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.215175] TCP bind hash table entries: 4096 (order: 4, 65536 bytes, linear)
[    0.216561] TCP: Hash tables configured (established 4096 bind 4096)
[    0.217869] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
[    0.219161] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
[    0.220519] NET: Registered protocol family 1
[    0.221980] RPC: Registered named UNIX socket transport module.
[    0.223434] RPC: Registered udp transport module.
[    0.224413] RPC: Registered tcp transport module.
[    0.225436] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.227674] pci 0000:00:01.0: PIIX3: Enabling Passive Release
[    0.229103] pci 0000:00:00.0: Limiting direct PCI/PCI transfers
[    0.230118] pci 0000:00:01.0: Activating ISA DMA hang workarounds
[    0.231412] pci 0000:00:02.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff]
[    0.233049] PCI: CLS 0 bytes, default 64
[    0.233899] Unpacking initramfs...
[    1.076433] Freeing initrd memory: 55496K
[    1.077384] check: Scanning for low memory corruption every 60 seconds
[    1.078749] Initialise system trusted keyrings
[    1.079439] workingset: timestamp_bits=56 max_order=17 bucket_order=0
[    1.083578] NFS: Registering the id_resolver key type
[    1.084486] Key type id_resolver registered
[    1.085151] Key type id_legacy registered
[    1.090976] Key type asymmetric registered
[    1.092096] Asymmetric key parser 'x509' registered
[    1.093018] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[    1.094388] io scheduler mq-deadline registered
[    1.095392] io scheduler kyber registered
[    1.096491] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
[    1.097580] ACPI: Power Button [PWRF]
[    1.098324] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    1.122971] 00:05: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    1.126101] Non-volatile memory driver v1.3
[    1.126873] Linux agpgart interface v0.103
[    1.129089] loop: module loaded
[    1.130946] scsi host0: ata_piix
[    1.131514] scsi host1: ata_piix
[    1.132019] ata1: PATA max MWDMA2 cmd 0x1f0 ctl 0x3f6 bmdma 0xc040 irq 14
[    1.133002] ata2: PATA max MWDMA2 cmd 0x170 ctl 0x376 bmdma 0xc048 irq 15
[    1.134326] e100: Intel(R) PRO/100 Network Driver, 3.5.24-k2-NAPI
[    1.135313] e100: Copyright(c) 1999-2006 Intel Corporation
[    1.136100] e1000: Intel(R) PRO/1000 Network Driver - version 7.3.21-k8-NAPI
[    1.138083] e1000: Copyright (c) 1999-2006 Intel Corporation.
[    1.155273] PCI Interrupt Link [LNKC] enabled at IRQ 11
[    1.293704] ata2.00: ATAPI: QEMU DVD-ROM, 2.5+, max UDMA/100
[    1.295838] scsi 1:0:0:0: CD-ROM            QEMU     QEMU DVD-ROM     2.5+ PQ: 0 ANSI: 5
[    1.328875] sr 1:0:0:0: [sr0] scsi3-mmc drive: 4x/4x cd/rw xa/form2 tray
[    1.329915] cdrom: Uniform CD-ROM driver Revision: 3.20
[    1.331370] sr 1:0:0:0: Attached scsi generic sg0 type 5
[    1.509116] e1000 0000:00:03.0 eth0: (PCI:33MHz:32-bit) 52:54:00:12:34:56
[    1.510358] e1000 0000:00:03.0 eth0: Intel(R) PRO/1000 Network Connection
[    1.511536] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
[    1.512371] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    1.513563] sky2: driver version 1.30
[    1.514626] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.515853] ehci-pci: EHCI PCI platform driver
[    1.516765] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    1.518001] ohci-pci: OHCI PCI platform driver
[    1.518902] uhci_hcd: USB Universal Host Controller Interface driver
[    1.520224] usbcore: registered new interface driver usblp
[    1.521423] usbcore: registered new interface driver usb-storage
[    1.522686] i8042: PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12
[    1.525108] serio: i8042 KBD port at 0x60,0x64 irq 1
[    1.526118] serio: i8042 AUX port at 0x60,0x64 irq 12
[    1.527486] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input1
[    1.529555] rtc_cmos 00:00: RTC can wake from S4
[    1.532913] rtc_cmos 00:00: registered as rtc0
[    1.533830] rtc_cmos 00:00: alarms up to one day, 114 bytes nvram, hpet irqs
[    1.535350] device-mapper: ioctl: 4.40.0-ioctl (2019-01-18) initialised: dm-devel@redhat.com
[    1.536885] intel_pstate: CPU model not supported
[    1.538344] hidraw: raw HID events driver (C) Jiri Kosina
[    1.539480] usbcore: registered new interface driver usbhid
[    1.540455] usbhid: USB HID core driver
[    1.541436] Initializing XFRM netlink socket
[    1.542304] NET: Registered protocol family 10
[    1.543271] Segment Routing with IPv6
[    1.543956] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    1.545235] NET: Registered protocol family 17
[    1.546166] Key type dns_resolver registered
[    1.547306] sched_clock: Marking stable (1559304100, -12200755)->(1607529233, -60425888)
[    1.549968] registered taskstats version 1
[    1.550898] Loading compiled-in X.509 certificates
[    1.552135] PM:   Magic number: 15:302:486
[    1.552996] printk: console [netcon0] enabled
[    1.553888] netconsole: network logging started
[    1.554861] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[    1.558955] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[    1.560298] ALSA device list:
[    1.560930] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[    1.562686] cfg80211: failed to load regulatory.db
[    1.563649]   No soundcards found.
[    1.567840] Freeing unused kernel image memory: 1316K
[    1.569858] Write protecting the kernel read-only data: 20480k
[    1.574547] Freeing unused kernel image memory: 2004K
[    1.577039] Freeing unused kernel image memory: 984K
[    1.577905] Run /init as init process
Loading, please wait...
starting version 229
[    1.591237] random: udevadm: uninitialized urandom read (16 bytes read)
[    1.592967] random: systemd-udevd: uninitialized urandom read (16 bytes read)
[    1.594213] random: udevadm: uninitialized urandom read (16 bytes read)
[    1.687890] e1000 0000:00:03.0 enp0s3: renamed from eth0
[    1.741724] ata_id (145) used greatest stack depth: 13800 bytes left
[    1.744352] systemd-udevd (136) used greatest stack depth: 13496 bytes left
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... [    2.133276] tsc: Refined TSC clocksource calibration: 2194.901 MHz
[    2.136096] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x1fa3621f89d, max_idle_ns: 440795264002 ns
[    2.140831] clocksource: Switched to clocksource tsc
[    2.157739] input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input3
done.
Begin: Will now check  file system ... fsck from util-linux 2.27.1
Checking all file systems.
done.
mount: can't find /root in /etc/fstab
done.
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... mount: mounting /dev on /root/dev failed: No such file or directory
done.
mount: mounting /run on /root/run failed: No such file or directory
run-init: current directory on the same filesystem as the root: error 0
Target filesystem doesn't have requested /sbin/init.
run-init: current directory on the same filesystem as the root: error 0
[    6.804142] random: fast init done
run-init: current directory on the same filesystem as the root: error 0
run-init: current directory on the same filesystem as the root: error 0
run-init: current directory on the same filesystem as the root: error 0
run-init: current directory on the same filesystem as the root: error 0
No init found. Try passing init= bootarg.


BusyBox v1.22.1 (Ubuntu 1:1.22.0-15ubuntu1.4) built-in shell (ash)
Enter 'help' for a list of built-in commands.

(initramfs) 

  • What I understand from here is that the /init present in initramfs is executed. Looks like it is giving an error above. I'll run it manually and see what it gives.
(initramfs) ./init
mount: mounting sysfs on /sys failed: Device or resource busy
mount: mounting proc on /proc failed: Device or resource busy
Loading, please wait...
mount: mounting udev on /dev failed: Device or resource busy
W: devtmpfs not available, falling back to tmpfs for /dev
starting version 229
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... ln: /tmp/mountroot-fail-hooks.d/20-lvm2: File exists
done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... done.
Begin: Will now check  file system ... fsck from util-linux 2.27.1
Checking all file systems.
done.
mount: can't find /root in /etc/fstab
done.
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... mount: mounting /dev on /root/dev failed: No such file or directory
done.
mount: mounting /run on /root/run failed: No such file or directory
run-init: current directory on the same filesystem as the root: error 0
Target filesystem doesn't have requested /sbin/init.
run-init: current directory on the same filesystem as the root: error 0
run-init: current directory on the same filesystem as the root: error 0
run-init: current directory on the same filesystem as the root: error 0
run-init: current directory on the same filesystem as the root: error 0
run-init: current directory on the same filesystem as the root: error 0
chvt: can't open console
No init found. Try passing init= bootarg.
Couldn't get a file descriptor referring to the console


BusyBox v1.22.1 (Ubuntu 1:1.22.0-15ubuntu1.4) built-in shell (ash)
Enter 'help' for a list of built-in commands.

(initramfs) 
  • Basically, init is unable to mount a bunch of things. Let us resolve this.

  • Good insights from this stackoverflow answer

    • Looks like I understood the problem. The accepted answer clarifies it. I need more than just the kernel image(which I have - vmlinux) to boot a linux system. For qemu, I need a root filesystem. This root filesystem contains programs to which the kernel "hands control" when it is done booting - usually the systemd program starts running.
    • So, I need to create a virtual disk which looks like a filesystem.
  • qemu-img to the rescue.

    1. Let us create a disk of size 15GB.
     : qemu-img create rootfs.img 15G
     Formatting 'rootfs.img', fmt=raw size=16106127360
    
    • The rootfs.img is just one fat file with 0s in it.
    1. Let us create a qcow2 image - at this point, I am not sure what I am doing.
     linux: qemu-img create -f qcow2 -o size=15G rootfs.img
     Formatting 'rootfs.img', fmt=qcow2 size=16106127360 encryption=off cluster_size=65536 lazy_refcounts=off refcount_bits=16
    
  • Now that I have the qemu-disk image, I'll go back to that stackoverflow answer.

linux: qemu-system-x86_64 \
-kernel arch/x86_64/boot/bzImage \
-nographic  \
-append "console=ttyS0 nokaslr root=/dev/sda1" \
-initrd ramdisk.img \
-m 512 \
--enable-kvm \
-cpu host\
-s \
-hda rootfs.img
  • Okay. Something different happened. But, not quite there I guess. The following is the output.
Begin: Waiting for root file system ... Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.[   23.302310] random: fast init done

Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.

Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
done.
Gave up waiting for root device.  Common problems:
 - Boot args (cat /proc/cmdline)
    - Check rootdelay= (did the system wait long enough?)
       - Check root= (did the system wait for the right device?)
        - Missing modules (cat /proc/modules; ls /dev)
	ALERT!  /dev/sda1 does not exist.  Dropping to a shell!


	BusyBox v1.22.1 (Ubuntu 1:1.22.0-15ubuntu1.4) built-in shell (ash)
	Enter 'help' for a list of built-in commands.

(initramfs) 
  • A bunch of mount errors are gone. But it says: "Gave up waiting for root device". /dev/sda1 does not exist.

  • Changes:

    • The /dev directory has way more files and stuff than before. Adding that -hda option definitely did something.
    • I see there is a sda in /dev. Look at this.
     oop-control        vcs3
     tty4                tty40               loop0               vcsu3
     tty5                tty41               loop1               vcsa3
     tty6                tty42               loop2               vcs4
     tty7                tty43               loop3               vcsu4
     tty8                tty44               loop4               vcsa4
     tty9                tty45               loop5               vcs5
     tty10               tty46               loop6               vcsu5
     tty11               tty47               loop7               vcsa5
     tty12               tty48               sg0                 vcs6
     tty13               tty49               bsg                 vcsu6
     tty14               tty50               sda                 vcsa6
     tty15               tty51               sr0
     tty16               tty52               sg1
     tty17               tty53               usbmon0
    
    • So, I'll try with /dev/sda instead of /dev/sda1.
  • Trying to start qemu like this.

nux: qemu-system-x86_64 -kernel arch/x86_64/boot/bzImage -nographic  -append "console=ttyS0 nokaslr root=/dev/sda" -initrd ramdisk.img -m 512 --enable-kvm -cpu host -s -hda rootfs.img
  • That didn't work. It gave the error:
ALERT!  /dev/sda does not exist.  Dropping to a shell!
  • This is wierd, because it actually exists and we know it.

There is something very interesting I observed. The bootloader always passes some arguments to execute the kernel. For the bootloader, kernel is an executable. For qemu, I gave the following arguments.

(initramfs) cat /proc/cmdline 
console=ttyS0 nokaslr root=/dev/sda
  • Console, nokaslr and root-dir.

I had a look at my laptop's /proc/cmdline. It should also have something similar.

linux: cat /proc/cmdline 
BOOT_IMAGE=/boot/vmlinuz-4.15.0-46-generic root=UUID=e022d867-a8ac-48d7-b8bc-c2f02bfa9c38 ro quiet splash vt.handoff=7

One VERY IMPORTANT thing to notice is that when I try coming out of (initramfs) shell, the system is not panicing anymore. I get the initramfs shell back. I believe this is some progress.

(initramfs) Gave up waiting for root device.  Common problems:
 - Boot args (cat /proc/cmdline)
    - Check rootdelay= (did the system wait long enough?)
       - Check root= (did the system wait for the right device?)
        - Missing modules (cat /proc/modules; ls /dev)
	ALERT!  /dev/sda does not exist.  Dropping to a shell!


	BusyBox v1.22.1 (Ubuntu 1:1.22.0-15ubuntu1.4) built-in shell (ash)
	Enter 'help' for a list of built-in commands.

(initramfs)

FOUND IT!!!

I found a method to make a linux filesystem. The following steps will help.

  1. Make a qemu image.
linux: qemu-img create rootfs.img 20G

At this point, a raw image exists. What we need is a proper filesystem. Let us use the mkfs command to do that.

linux: mkfs -t ext4 ./rootfs.img
mke2fs 1.42.13 (17-May-2015)
Discarding device blocks: done                            
Creating filesystem with 5242880 4k blocks and 1310720 inodes
Filesystem UUID: c277c877-5d05-48c0-a69d-4fc78eaaba3c
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

adwi@adwi:~/ALL/kernel_exploitation/exp/LinuxPure/linux:

We have a filesystem. I need to verify it somehow.

linux: file rootfs.img 
rootfs.img: Linux rev 1.0 ext4 filesystem data, UUID=c277c877-5d05-48c0-a69d-4fc78eaaba3c (extents) (large files) (huge files)

Let us run the emulator again.

linux: qemu-system-x86_64 -kernel arch/x86_64/boot/bzImage -nographic  -append "console=ttyS0 nokaslr root=/dev/sda" -initrd ramdisk.img -m 512 --enable-kvm -cpu host -s -hda rootfs.img

Fail!

But I got a clue which helps make progress. The following were the first prints of qemu.

WARNING: Image format was not specified for 'rootfs.img' and probing guessed raw.
         Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
	          Specify the 'raw' format explicitly to remove the restrictions.

  • It says image format was not specified for "rootfs.img" and probing guessed raw. But it is not raw. It is a proper ext4 filesystem. I need to specify that.

  • The following doesn't panic when I try to exit out of initramfs.

linux: qemu-system-x86_64 -kernel arch/x86_64/boot/bzImage -nographic  -append "console=ttyS0 nokaslr root=/dev/sda1" -initrd ramdisk.img -m 512 --enable-kvm -cpu host -s -drive file=rootfs.img
  • But, I have not specified the file format. Let me specify and run again.
/linux: qemu-system-x86_64 -kernel arch/x86_64/boot/bzImage -nographic  -append "console=ttyS0 nokaslr root=/dev/sda1" -initrd ramdisk.img -m 512 --enable-kvm -cpu host -s -drive "format=ext4 file=rootfs.img"
qemu-system-x86_64: Device needs media, but drive is empty
qemu-system-x86_64: Initialization of device ide-hd failed: Device initialization failed.

I think I understand what exactly I need to do. The kernel needs a filesystem. My filesystem is in the form of a file now - and it has only 1 directory lost+found. Let me see why. I also verified by mounting rootfs.img and entering it.

linux# mkdir vfs
linux# mount rootfs.img vfs
linux# cd vfs
linux/vfs# ls
lost+found
linux/vfs# cd ..
linux# umount rootfs.img 
linux# rmdir vfs
  • From this, it is clear that only "lost+found" is present. Where are all the other directories???

Let me start with one directory it absolutely needs now - the "media" directory.

linux# mount rootfs.img vfs
linux# cd vfs
linux/vfs# mkdir media
linux/vfs# cd ..
linux# umount rootfs.img

This way, there is a /media directory in rootfs.img. Let us run qemu again.

linux: qemu-system-x86_64 -kernel arch/x86_64/boot/bzImage -nographic  -append "console=ttyS0 nokaslr root=/dev/sda1" -initrd ramdisk.img -m 512 --enable-kvm -cpu host -s -drive "format=ext4 file=rootfs.img"
qemu-system-x86_64: Device needs media, but drive is empty
qemu-system-x86_64: Initialization of device ide-hd failed: Device initialization failed.

Again the same error.

I want to try something different. I am currently going through this resource.

I got more clarity on what is required to get the emulation working.

We have the hardware(eumulated by qemu), bootloader(provided by qemu). We built a initramfs and kernel. Once the kernel is initialized, it invokes a bunch of userland programs which will take over control - like systemd or initd. Along with that, there are a lot of other things too. The entire root filesystem is needed for the OS to function properly. The root filesystem has binaries, etc, compilers, developer tools, system-essential stuff.

Just having kernel is not enough. We need complete userland stuff(I don't know a better word) to use the OS, to write programs etc.,

  • buildroot helps in building that filesystem. I now understand why it is GNU/Linux. I always thought kernel is the ultimate software and other stuff is just there supporting it. But it doesn't work that way. Files in the rootfs are as important as the kernel to make the whole system usable.

I think I have a new definition for Operating System.

OS = Kernel + Necessary userland programs to help people use hardware properly.

  • So, Kernel is not OS. It is a subset of OS.

Building buildroot

  1. Choose the appropriate hardware architecture.
$ make menuconfig

And choose the right options.

  1. Build it
$ make

This took about half an hour on a 2-core i5 machine.

At the end of the build, the output was stored in buildroot-versionXXXX/output/images/rootfs.tar. This has literally all the directories like lib, media and what not. ALL the directories a root filesystem should have.

I realized I need to do the following:

  1. Mount the ext4 filesystem I had created.
linux# mount rootfs.img vfs
linux# cd vfs
linux/vfs# 
  1. Now, I have to extract the rootfs.tar contents into that filesystem - basically I am populating my empty filesystem with the buildroot output. Let us go!
linux/vfs# tar -xvf ../../buildroot-versionXXXX/output/images/rootfs.tar
  1. Now, I believe our filesystem is ready. I can unmount it.
linux/vfs# cd ..
linux# umount rootfs.img

The following articles helped me come to this stage.

  1. Build a buildroot userspace
  2. buildroot and qemu - the quickest recipe for your own linux
  3. The Kernel Boot Process

Now, let me try running qemu.


linux: qemu-system-x86_64 -kernel arch/x86_64/boot/bzImage -nographic  -append "console=ttyS0 nokaslr root=/dev/sda" -initrd ramdisk.img -m 512 --enable-kvm -cpu host -s -hda rootfs.img 

And..

WARNING: Image format was not specified for 'rootfs.img' and probing guessed raw.
         Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
         Specify the 'raw' format explicitly to remove the restrictions.
.
.
.

.
Begin: Will now check root file system ... fsck from util-linux 2.27.1
[   11.584895] random: fast init done
[/sbin/fsck.ext4 (1) -- /dev/sda] fsck.ext4 -a -C0 /dev/sda 
/dev/sda: clean, 366/1310720 files, 126668/5242880 blocks
done.
[   11.634488] EXT4-fs (sda): mounted filesystem with ordered data mode. Opts: (null)
done.
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... done.
mount: mounting proc on /proc failed: Device or resource busy
[   11.713478] EXT4-fs (sda): re-mounted. Opts: (null)
Starting syslogd: OK
Starting klogd: OK
Initializing random number generator... done.
Starting network: OK

Welcome to Buildroot
buildroot login: root
# 
# 
# 
# ls
# ls -al
total 12
drwx------    2 root     root          4096 Aug 25 19:42 .
drwxr-xr-x   18 root     root          4096 Aug 25 18:36 ..
-rw-------    1 root     root            10 Aug 25 19:42 .ash_history
# c[   35.051094] random: crng init done
[   35.053334] random: 7 urandom warning(s) missed due to ratelimiting

# 
# 
# pwd
/root

  • Something awesome happened. I don't know what this is. I got a root shell. I know that much.

I'll try creating a new user and see if that is possible or not.

# adduser
BusyBox v1.29.3 (2019-08-26 00:05:51 IST) multi-call binary.

Usage: adduser [OPTIONS] USER [GROUP]

Create new user, or add USER to GROUP

	-h DIR		Home directory
	-g GECOS	GECOS field
	-s SHELL	Login shell
	-G GRP		Group
	-S		Create a system user
	-D		Don't assign a password
	-H		Don't create home directory
	-u UID		User id
	-k SKEL		Skeleton directory (/etc/skel)
# adduser dummy
Changing password for dummy
New password: 
Retype password: 
passwd: password for dummy changed by root
#

pwd: qwerty1234 - for my reference

  • Now, I'll try logging as dummy.
# exit

Welcome to Buildroot
buildroot login: dummy
Password: 
$ 
$ pwd
/home/dummy

Perfect! Now I believe everything is working fine. There is bare minimum functionality.

Goal was to do kernel debugging. I ended up exploring building linux and running using qemu.

Actually, I want a proper system with atleast C compiler.

So, instead of copying buildroot's rootfs which is NOTHING but busybox doing everything, I'll copy stuff from my baremetal's filesystem. Let us see if it works or not.

I won't disturb rootfs.img which is working perfectly using buildroot. I'll make another rootfs_2.img and try out stuff on it.

linux: qemu-img create rootfs_2.img 20G
Formatting 'rootfs_2.img', fmt=raw size=21474836480
linux: mkfs.ext4 rootfs_2.img 
mke2fs 1.42.13 (17-May-2015)
Discarding device blocks: done                            
Creating filesystem with 5242880 4k blocks and 1310720 inodes
Filesystem UUID: f0f7d01b-85c3-46ce-8449-6e8b35f912a8
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

linux:

FileSystem done. Now, I have to mount it and copy stuff into it.

linux# mount rootfs_2.img vfs

Now, I'll copy every necessary directory into vfs. Done copying necessary stuff. I'll try my luck booting with the new vfs.

linux: qemu-system-x86_64 -kernel arch/x86_64/boot/bzImage -nographic  -append "console=ttyS0 nokaslr root=/dev/sda" -initrd ramdisk.img -m 512 --enable-kvm -cpu host -s -hda rootfs_2.img
WARNING: Image format was not specified for 'rootfs_2.img' and probing guessed raw.
         Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
         Specify the 'raw' format explicitly to remove the restrictions.

And..

Begin: Will now check root file system ... fsck from util-linux 2.27.1
[    7.506495] random: fast init done
[/sbin/fsck.ext4 (1) -- /dev/sda] fsck.ext4 -a -C0 /dev/sda 
/dev/sda: recovering journal
/dev/sda: clean, 83656/1310720 files, 1792398/5242880 blocks
done.
[    7.715390] EXT4-fs (sda): mounted filesystem with ordered data mode. Opts: (null)
done.
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... done.
run-init: /sbin/init: No such file or directory
Target filesystem doesn't have requested /sbin/init.
run-init: /sbin/init: No such file or directory
run-init: /etc/init: No such file or directory
run-init: /bin/init: No such file or directory
/bin/sh: 0: Can't open nokaslr
[    7.788058] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00
[    7.789688] CPU: 0 PID: 1 Comm: sh Not tainted 5.3.0-rc5+ #3
[    7.790558] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
[    7.792136] Call Trace:
[    7.792575]  dump_stack+0x46/0x5b
[    7.793157]  panic+0xf3/0x2b6
[    7.793672]  do_exit+0xb98/0xbd0
[    7.794228]  do_group_exit+0x35/0x90
[    7.794841]  __x64_sys_exit_group+0xf/0x10
[    7.795540]  do_syscall_64+0x43/0x110
[    7.796170]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
[    7.797034] RIP: 0033:0x7f20e673e748
[    7.797644] Code: Bad RIP value.
[    7.798239] RSP: 002b:00007ffe6acab478 EFLAGS: 00000202 ORIG_RAX: 00000000000000e7
[    7.799772] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f20e673e748
[    7.801248] RDX: 000000000000007f RSI: 000000000000003c RDI: 000000000000007f
[    7.803007] RBP: 000055ecd7abf6c0 R08: 00000000000000e7 R09: ffffffffffffff98
[    7.804461] R10: 0000000000000007 R11: 0000000000000202 R12: 000055ecd7abbb30
[    7.805916] R13: 00007ffe6acab760 R14: 0000000000000000 R15: 0000000000000000
[    7.807325] Kernel Offset: disabled
[    7.807938] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00 ]---

Kernel Panic!!

I had forgotten to copy /sbin directory which the init executable - which is the systemd executable. I have copied now. Let me see if it works.

linux: qemu-system-x86_64 -kernel arch/x86_64/boot/bzImage -nographic  -append "console=ttyS0 nokaslr root=/dev/sda" -initrd ramdisk.img -m 512 --enable-kvm -cpu host -s -hda rootfs_2.img

Too good! init / systemd got executed and the following is the output.

Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... [    2.965540] tsc: Refined TSC clocksource calibration: 2195.025 MHz
[    2.968214] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x1fa3d6f1671, max_idle_ns: 440795216136 ns
[    2.970586] clocksource: Switched to clocksource tsc
[    3.032823] input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input3
done.
Begin: Will now check root file system ... fsck from util-linux 2.27.1
[    7.692119] random: fast init done
[/sbin/fsck.ext4 (1) -- /dev/sda] fsck.ext4 -a -C0 /dev/sda 
/dev/sda: clean, 106657/1310720 files, 2060657/5242880 blocks
done.
[    7.742668] EXT4-fs (sda): mounted filesystem with ordered data mode. Opts: (null)
done.
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... done.
[    7.866983] systemd[1]: systemd 229 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN)
[    7.870129] systemd[1]: Detected virtualization qemu.
[    7.871027] systemd[1]: Detected architecture x86-64.
[    7.871919] systemd[1]: Running with unpopulated /etc.

Welcome to Ubuntu 16.04.6 LTS!

[    7.881687] systemd[1]: No hostname configured.
[    7.882743] systemd[1]: Set hostname to <localhost>.
[    7.884320] systemd[1]: System cannot boot: Missing /etc/machine-id and /etc is mounted read-only.
[    7.886002] systemd[1]: Booting up is supported only when:
[    7.886985] systemd[1]: 1) /etc/machine-id exists and is populated.
[    7.887913] systemd[1]: 2) /etc/machine-id exists and is empty.
[    7.963139] LVM: Failed to initialize library context for activation generator.
[  OK  ] Listening on Journal Audit Socket.
[  OK  ] Listening on /dev/initctl Compatibility Named Pipe.
[  OK  ] Listening on Journal Socket.
[  OK  ] Created slice System Slice.
         Starting Load/Save Random Seed...
         Mounting Debug File System...
         Starting Set console keymap...
         Starting Apply Kernel Variables...
[  OK  ] Created slice User and Session Slice.
[  OK  ] Reached target Slices.
[  OK  ] Listening on Journal Socket (/dev/log).
         Mounting POSIX Message Queue File System...
[  OK  ] Set up automount Arbitrary Executab...ats File System Automount Point.
         Mounting Huge Pages File System...
[  OK  ] Started Forward Password Requests to Wall Directory Watch.
         Starting Create Static Device Nodes in /dev...
[  OK  ] Created slice system-serial\x2dgetty.slice.
[  OK  ] Listening on udev Kernel Socket.
[  OK  ] Reached target Swap.
[  OK  ] Listening on udev Control Socket.
         Starting udev Coldplug all Devices...
         Starting Journal Service...
[  OK  ] Mounted Huge Pages File System.
[  OK  ] Mounted Debug File System.
[  OK  ] Mounted POSIX Message Queue File System.
[FAILED] Failed to start Load/Save Random Seed.[    8.165567] systemd-journald[217]: Failed to open runtime journal: No such file or directory

See 'systemctl status systemd-random-seed.service' for details.
[FAILED] Failed to start Set console keymap.
See 'systemctl status keyboard-setup.service' for details.
[  OK  ] Started Apply Kernel Variables.
[FAILED] Failed to start Create Static Device Nodes in /dev.
See 'systemctl status systemd-tmpfiles-setup-dev.service' for details.
[FAILED] Failed to start Journal Service.
See 'systemctl status systemd-journald.service' for details.
[DEPEND] Dependency failed for Flush Journal to Persistent Storage.
[  OK  ] Stopped Journal Service.
         Starting Journal Service...
         Starting udev Kernel Device Manager...
[  OK  ] Started udev Coldplug all Devices.[    8.249896] systemd-journald[223]: Failed to open runtime journal: No such file or directory

[FAILED] Failed to start Journal Service.
See 'systemctl status systemd-journald.service' for details.
[  OK  ] Stopped Journal Service.
         Starting Journal Service...
         Starting udev Wait for Complete Device Initialization...
[    8.284658] systemd-journald[226]: Failed to open runtime journal: No such file or directory
[FAILED] Failed to start Journal Service.
See 'systemctl status systemd-journald.service' for details.
[  OK  ] Stopped Journal Service.
         Starting Journal Service...
[    8.307957] systemd-journald[229]: Failed to open runtime journal: No such file or directory
[FAILED] Failed to start Journal Service.
See 'systemctl status systemd-journald.service' for details.
[  OK  ] Stopped Journal Service.
         Starting Journal Service...
[    8.328838] systemd-journald[231]: Failed to open runtime journal: No such file or directory
[FAILED] Failed to start Journal Service.
See 'systemctl status systemd-journald.service' for details.
[  OK  ] Stopped Journal Service.
[FAILED] Failed to start Journal Service.
See 'systemctl status systemd-journald.service' for details.
[    8.357923] systemd-udevd[224]: specified group 'netdev' unknown
[  OK  ] Started udev Kernel Device Manager.
[  OK  ] Started Dispatch Password Requests to Console Directory Watch.
[  OK  ] Reached target Paths.
[    8.449866] random: crng init done
[    8.450455] random: 7 urandom warning(s) missed due to ratelimiting
[  OK  ] Found device /dev/ttyS0.
[    8.573722] systemd-udevd[240]: Process 'console-setup-tty fbcon' failed with exit code 2.
[  OK  ] Listening on Load/Save RF Kill Switch Status /dev/rfkill Watch.
[    8.612137] systemd-udevd[237]: Process 'console-setup-tty /dev/tty1' failed with exit code 2.
[    8.635716] systemd-udevd[236]: Process 'console-setup-tty /dev/tty2' failed with exit code 2.
[    8.646194] systemd-udevd[234]: Process 'console-setup-tty /dev/tty3' failed with exit code 2.
[    8.654739] systemd-udevd[237]: Process 'console-setup-tty /dev/tty4' failed with exit code 2.
[    8.660814] systemd-udevd[240]: Process 'console-setup-tty /dev/tty5' failed with exit code 2.
[    8.671935] systemd-udevd[242]: Process 'console-setup-tty /dev/tty6' failed with exit code 2.
[  OK  ] Started udev Wait for Complete Device Initialization.
         Starting Activation of LVM2 logical volumes...
[FAILED] Failed to start Activation of LVM2 logical volumes.
See 'systemctl status lvm2-activation-early.service' for details.
[  OK  ] Reached target Encrypted Volumes.
         Starting Activation of LVM2 logical volumes...
[FAILED] Failed to start Activation of LVM2 logical volumes.
See 'systemctl status lvm2-activation.service' for details.
[  OK  ] Reached target Local File Systems (Pre).
[  OK  ] Reached target Local File Systems.
         Starting Tell Plymouth To Write Out Runtime Data...
         Starting Create Volatile Files and Directories...
         Starting Set console font and keymap...
[    9.209608] systemd-tmpfiles[307]: [/usr/lib/tmpfiles.d/00rsyslog.conf:6] Unknown group 'syslog'.
[    9.212734] systemd-tmpfiles[307]: [/usr/lib/tmpfiles.d/elasticsearch.conf:1] Unknown user 'elasticsearch'.
[FAILED] Failed to start Set console font and keymap.
See 'systemctl status console-setup.service' for details.
[    9.221111] systemd-tmpfiles[307]: [/usr/lib/tmpfiles.d/journal-nocow.conf:26] Failed to replace specifiers: /var/log/journal/%m
[    9.225542] systemd-tmpfiles[307]: [/usr/lib/tmpfiles.d/man-db.conf:1] Unknown user 'man'.
[    9.226960] systemd-tmpfiles[307]: [/usr/lib/tmpfiles.d/postgresql.conf:2] Unknown user 'postgres'.
[  OK  ] Started Tell Plymouth To Write Out Runtime Data.
[    9.231158] systemd-tmpfiles[307]: [/usr/lib/tmpfiles.d/postgresql.conf:4] Unknown group 'postgres'.
[    9.237201] systemd-tmpfiles[307]: [/usr/lib/tmpfiles.d/screen-cleanup.conf:1] Unknown group 'utmp'.
[    9.241208] systemd-tmpfiles[307]: [/usr/lib/tmpfiles.d/systemd.conf:11] Unknown group 'utmp'.
[    9.242690] systemd-tmpfiles[307]: [/usr/lib/tmpfiles.d/systemd.conf:19] Unknown user 'systemd-network'.
[    9.244563] systemd-tmpfiles[307]: [/usr/lib/tmpfiles.d/systemd.conf:20] Unknown user 'systemd-network'.
[    9.247538] printk: systemd-tmpfile: 19 output lines suppressed due to ratelimiting
[FAILED] Failed to start Create Volatile Files and Directories.
See 'systemctl status systemd-tmpfiles-setup.service' for details.
         Starting Update UTMP about System Boot/Shutdown...
[  OK  ] Started Update UTMP about System Boot/Shutdown.
[  OK  ] Reached target System Initialization.
[  OK  ] Listening on D-Bus System Message Bus Socket.
[  OK  ] Reached target Sockets.
[  OK  ] Reached target Basic System.
         Starting Permit User Sessions...
[  OK  ] Started Daily Cleanup of Temporary Directories.
[  OK  ] Reached target Timers.
         Starting Login Service...
[  OK  ] Started D-Bus System Message Bus.
[   34.288879] systemd[1]: Failed to subscribe to NameOwnerChanged signal for 'org.freedesktop.login1': Connection timed out
[   34.296713] systemd[1]: Failed to subscribe to activation signal: Connection timed out
[   34.300339] systemd[1]: Failed to register name: Connection timed out
[   34.301744] systemd[1]: Failed to set up API bus: Connection timed out
[   34.303829] systemd[1]: Started Permit User Sessions.
[  OK  ] Started Permit User Sessions.
[   34.305994] systemd[1]: dbus.service: Main process exited, code=exited, status=1/FAILURE
[   34.329499] systemd[1]: dbus.service: Unit entered failed state.
[   34.330637] systemd[1]: dbus.service: Failed with result 'exit-code'.
[   34.344343] systemd-logind[315]: Failed to add match for JobRemoved: Connection timed out
[   34.345937] systemd-logind[315]: Failed to fully start up daemon: Connection timed out
[   34.353454] systemd[1]: systemd-logind.service: Main process exited, code=exited, status=1/FAILURE
[   34.355463] systemd[1]: Failed to start Login Service.
[FAILED] Failed to start Login Service.
See 'systemctl status systemd-logind.service' for details.
[   40.257742] systemd[1]: Looping too fast. Throttling execution a little.
[   41.681929] systemd[1]: Looping too fast. Throttling execution a little.
.
.
.

And it continues. So, if login service cannot be loaded, it loops around something - "Looping too fast".

Let me see where that login service is. I believe the login service is /bin/login.

Looks like all required files are present. Not sure what I am missing. Let us see. The filesystem is basically build as root. I am wondering if that is the problem. I'll run qemu as root and see.

linux: sudo su root
linux# qemu-system-x86_64 -kernel arch/x86_64/boot/bzImage -nographic  -append "console=ttyS0 nokaslr root=/dev/sda" -initrd ramdisk.img -m 512 --enable-kvm -cpu host -s -hda rootfs_2.img

I screwed up. The etc directory is supposed to make passwd, shadow etc., I had not copied anything. I have copied and the following is the error I got.

Welcome to emergency mode! After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, "systemctl default" or ^D to
try again to boot into default mode.
sulogin: cannot open password database
Welcome to emergency mode! After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, "systemctl default" or ^D to
try again to boot into default mode.
sulogin: cannot open password database

I guess it is searching for adwi username but I have deleted it. I'll copy it back. Let us see if anything changes.

Thank god!

[  OK  ] Started Emergency Shell.
[  OK  ] Reached target Emergency Mode.
         Starting Nameserver information manager...
[  OK  ] Started Set console scheme.
[  OK  ] Started Tell Plymouth To Write Out Runtime Data.
[FAILED] Failed to start Create Volatile Files and Directories.
See 'systemctl status systemd-tmpfiles-setup.service' for details.
[  OK  ] Started Nameserver information manager.
root@adwi:~# root@adwi:~# root@adwi:~# 
root@adwi:~# 
root@adwi:~# 
root@adwi:~# 
root@adwi:~# 
root@adwi:~# root@adwi:~# root@adwi:~# root@adwi:~# 
root@adwi:~# 
root@adwi:~# 
root@adwi:~# exit

It barely booted! But it did!

I'll try it once again.

Press Enter for maintenance
(or press Control-D to continue): 
root@adwi:~# root@adwi:~# root@adwi:~# root@adwi:~# root@adwi:~# root@adwi:~# root@adwi:~# root@adwi:/# Sorry, command-not-found has crashed! Please file a bug report at:
https://bugs.launchpad.net/command-not-found/+filebug
Please include the following information with the report:

command-not-found version: 0.3
Python version: 3.5.2 final 0
Traceback (most recent call last):
  File "/usr/bin/lsb_release", line 25, in <module>
    import lsb_release
ImportError: No module named 'lsb_release'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 145, in apport_excepthook
    os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o640), 'wb') as f:
FileNotFoundError: [Errno 2] No such file or directory: '/var/crash/_usr_bin_lsb_release.0.crash'

Original exception was:
Traceback (most recent call last):
  File "/usr/bin/lsb_release", line 25, in <module>
    import lsb_release
ImportError: No module named 'lsb_release'
Exception information:

[Errno 2] No such file or directory: '/usr/share/command-not-found/programs.d'
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/CommandNotFound/util.py", line 24, in crash_guard
    callback()
  File "/usr/lib/command-not-found", line 89, in main
    cnf = CommandNotFound(options.data_dir)
  File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 131, in __init__
    for filename in os.listdir(os.path.sep.join([data_dir, self.programs_dir])):
FileNotFoundError: [Errno 2] No such file or directory: '/usr/share/command-not-found/programs.d'
root@adwi:/# /
root@adwi:/# root@adwi:/# root@adwi:/# root@adwi:/# root@adwi:/# /
root@adwi:/# root@adwi:/# /
root@adwi:/# bin  etc  lib64       media  proc  run	 sys  usr
dev  lib  lost+found  mnt    root  sbin  tmp  var
root@adwi:/# root@adwi:/# root@adwi:/# root@adwi:/# 

Got a proper root-shell. From here, I can take over.

I'll try writing a hello world program. Nah! The editor is fucking up. Have a look at this. It is unable to open a file for writing.

Now I think I know the problem. The complete filesystem is owned by baremetal-root but qemu is a stupid adwi. I'll try running it with root and see what happens.

linux# qemu-system-x86_64 -kernel arch/x86_64/boot/bzImage -nographic  -append "console=ttyS0 nokaslr root=/dev/sda" -initrd ramdisk.img -m 512 --enable-kvm -cpu host -s -hda rootfs_2.img
WARNING: Image format was not specified for 'rootfs_2.img' and probing guessed raw.
         Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
         Specify the 'raw' format explicitly to remove the restrictions.

It still can't open the file for writing. Not sure what the problem is.

I have some understanding of what is happening, but need more clarity.

Now, I am going into deep-exploration mode. Instead of using systemd, I'll let the kernel execute my hello-world program and exit. Let us see if this works or not.

Let us use the buildroot fs. I'll use my crazy-code to develop nostdlib-only syscall code. That should help. The following is the program used.

$ cat init.c
#include "../crazy_infra/mysyscall.h"
#include "../crazy_infra/generic.h"


int main() {
	
	long int rv;
	unsigned long int argv[] = {
				0,
				0,
				0,
				0,
				0,
				0
	};
	char buffer[] = "Hello World!\n";
	argv[0] = 1;
	argv[1] = (unsigned long int)buffer;
	argv[2] = 13;

	rv = mysyscall(NR_write, 3, argv);
	if(rv == -1) {
		return -1;
	}

	return 0;
}

FUCK YES!!!!! It worked! Look at this beauty.

n: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... done.
Hello World!
[   10.734091] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000
[   10.736659] CPU: 0 PID: 1 Comm: init Not tainted 5.3.0-rc5+ #3
[   10.738231] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
[   10.740055] Call Trace:
[   10.740458]  dump_stack+0x46/0x5b
[   10.741786]  panic+0xf3/0x2b6
[   10.742452]  do_exit+0xb98/0xbd0
[   10.743358]  __x64_sys_exit+0x12/0x20
[   10.743937]  do_syscall_64+0x43/0x110
[   10.744565]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
[   10.745474] RIP: 0033:0x4001bb
[   10.746074] Code: Bad RIP value.
[   10.746630] RSP: 002b:00007ffc33ed4970 EFLAGS: 00000213 ORIG_RAX: 000000000000003c
[   10.747926] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00000000004001bb
[   10.749152] RDX: 00007ffc33ed4920 RSI: 0000000000000003 RDI: 0000000000000000
[   10.750528] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[   10.752299] R10: 0000000000000000 R11: 0000000000000213 R12: 0000000000000000
[   10.754583] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
[   10.756214] Kernel Offset: disabled
[   10.756740] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000 ]---
  • There is that Hello World!

  • So it is confirmed that I can take over from here and do whatever I want. I am in software land now!

  • It panicd because init was killed(it only returned). If there was an infinite loop, it would be peaceful!

I'll try adding an infinite loop and check. The following are the changes.

rv = mysyscall(NR_write, 3, argv);
	if(rv == -1) {
		/* Panic if write failed */
		return -1;
	}
	
	/* else, Fall into an infinite loop */
	while(1);

Run qemu.

linux: qemu-system-x86_64 -kernel arch/x86_64/boot/bzImage -nographic  -append "console=ttyS0 nokaslr root=/dev/sda" -initrd ramdisk.img -m 512 --enable-kvm -cpu host -s -hda rootfs.img

The following is the output.

Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... done.
Hello World!


As expected! It is at peace now.

I learnt a lot in this process. I have lot of clarity over what exactly happens right after the kernel is executed.

I'll be back tomorrow.

26th August 2019, Monday

I am back.

I wanted to see what was the bare minimum files-directories needed to boot properly and execute our beloved /sbin/init program. It was nothing. Look at the following.

Checkout rootfs_3.img. It has NOTHING except a bunch of empty directories and our "/sbin/init" program which is a hello world program. Take a look.

linux/vfs# ls -l *
dev:
total 0

media:
total 0

proc:
total 0

root:
total 0

run:
total 0

sbin:
total 4
-rwxr-xr-x 1 root root 2328 Aug 26 03:29 init

sys:
total 0
  • This is amazing. I can actually build this wrapper all by myself.

Debugging with gdb

At this point, I know some stuff, but not with full clarity. Things like how exactly does the bootloader load the bzImage, how exactly are these directories mounted, how exactly is the "/sbin/init" program executed.

Now that the system is booting, I'll try again with gdb. I'll be using rootfs_3.img because it is the bare-minimum needed - easy to manage.

linux# qemu-system-x86_64 -kernel arch/x86_64/boot/bzImage -nographic  -append "console=ttyS0 nokaslr root=/dev/sda" -initrd ramdisk.img -m 512 --enable-kvm -cpu host -s -S -hda "rootfs_3.img"
WARNING: Image format was not specified for 'rootfs_3.img' and probing guessed raw.
         Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
         Specify the 'raw' format explicitly to remove the restrictions.

It is waiting for gdb to connect remotely.

linux: gdb -q vmlinux
Reading symbols from vmlinux...done.
warning: File "/home/adwi/ALL/kernel_exploitation/exp/LinuxPure/linux/scripts/gdb/vmlinux-gdb.py" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load:path/to/linux/scripts/gdb/vmlinux-gdb.py".
To enable execution of this file add
	add-auto-load-safe-path /home/adwi/ALL/kernel_exploitation/exp/LinuxPure/linux/scripts/gdb/vmlinux-gdb.py
line to your configuration file "/home/adwi/.gdbinit".
To completely disable this security protection add
	set auto-load safe-path /
line to your configuration file "/home/adwi/.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual.  E.g., run from the shell:
	info "(gdb)Auto-loading safe path"
gdb-peda$ 

  • Connect to remote.
gdb-peda$ target remote :1234
Remote debugging using :1234
Warning: not running or target is remote
0x0000000000000000 in fixed_percpu_data ()
gdb-peda$ 

We are connected. Let us continue.

gdb-peda$ c
Continuing.

On the emulator terminal, kernel was loaded and "Hello World!" was printed.

We are at fixed_percpu_data(). Let us go instruction by instruction now.

Let us start the emulation.

linux: qemu-system-x86_64 -kernel arch/x86_64/boot/bzImage -nographic  -append "console=ttyS0 nokaslr root=/dev/sda" -initrd ramdisk.img -m 512 --enable-kvm -cpu host -s -S -hda "rootfs_3.img"
  • Let us connect to it using gdb.
linux: gdb -q vmlinux
Reading symbols from vmlinux...done.
warning: File "/home/adwi/ALL/kernel_exploitation/exp/LinuxPure/linux/scripts/gdb/vmlinux-gdb.py" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load:path/to/linux/scripts/gdb/vmlinux-gdb.py".
To enable execution of this file add
	add-auto-load-safe-path /home/adwi/ALL/kernel_exploitation/exp/LinuxPure/linux/scripts/gdb/vmlinux-gdb.py
line to your configuration file "/home/adwi/.gdbinit".
To completely disable this security protection add
	set auto-load safe-path /
line to your configuration file "/home/adwi/.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual.  E.g., run from the shell:
	info "(gdb)Auto-loading safe path"
gdb-peda$ target remote :1234
Remote debugging using :1234
Warning: not running or target is remote
0x0000000000000000 in fixed_percpu_data ()
gdb-peda$ hbreak start_kernel
Hardware assisted breakpoint 1 at 0xffffffff829a6a9b: file init/main.c, line 576.
gdb-peda$ run
The "remote" target does not support "run".  Try "help target" or "continue".
gdb-peda$ c
Continuing.
Remote 'g' packet reply is too long (expected 308 bytes, got 536 bytes): 000000000000000000000000000000002332faf700000000fffb8b0f00000000000000000000000050420100000000000000000000000000503f4082ffffffffffffffff00000000ffffffffffff0000083f4082ffffffffffff0000ffffffff00000000000000000000000000000000000000000000000000000000000000009b6a9a82ffffffff4600000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000801f0000
gdb-peda$ quit
Detaching from program: /home/adwi/ALL/kernel_exploitation/exp/LinuxPure/linux/vmlinux, Remote target
Ending remote debugging.
[Inferior 1 (Remote target) detached]
  • It is failing.

Following Debugging kernel and modules via gdb.

  1. Load vmlinux into gdb.
linux: gdb -q vmlinux
Reading symbols from vmlinux...done.

gdb-peda$ 
gdb-peda$ 
gdb-peda$ target remote 127.0.0.1:1234
Remote debugging using 127.0.0.1:1234
Warning: not running or target is remote
0x0000000000000000 in fixed_percpu_data ()
gdb-peda$ lx-symbols 
loading vmlinux
scanning for modules in /home/adwi/ALL/kernel_exploitation/exp/LinuxPure/linux
no module object found for ''
no module object found for ''
.
.
.
  1. Set breakpoint at start_kernel.
gdb-peda$ b start_kernel 
Breakpoint 1 at 0xffffffff829a6a9b: file init/main.c, line 576.
  1. Continued
gdb-peda$ continue
Continuing.

On the emulation terminal, it didn't break at start_kernel. Hello World got printed.

There is something I am missing.

Going again with a different break-point.

(gdb) b btrfs_init_sysfs

Didn't work.

(gdb) b btrfs_init_sysfs
Function "btrfs_init_sysfs" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (btrfs_init_sysfs) pending.
(gdb) c
Continuing.

None of them worked.

Another resource related to this - I'll follow this.

  1. Starting the emulation.
linux: qemu-system-x86_64  -s -S -kernel arch/x86_64/boot/bzImage -nographic  -append "console=ttyS0 nokaslr root=/dev/sda rw" -initrd ramdisk.img -m 512 --enable-kvm -cpu host -hda rootfs_3.img -net none

27th August 2019, Tuesday

  1. Starting gdb


1. What is vmlinux, bzImage?

  • vmlinux is a proper ELF Executable.
linux: file vmlinux
vmlinux: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=458cb54df1fe35425629f81b2e7df09ded2d333a, not stripped
linux: readelf -h vmlinux
ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x1000000
  Start of program headers:          64 (bytes into file)
  Start of section headers:          155767264 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         5
  Size of section headers:           64 (bytes)
  Number of section headers:         77
  Section header string table index: 74
  • It cannot be used for booting. It must be made bootable by adding multiboot header and bootsector.

  • vmlinuz is vmlinux compressed with gzip.

Why do we even need a bootsector?

vmlinux's Wikipage gives an answer.

  • The bootsector is the /boot directory - has ALL boot related files, kernel image.

Another amazing resource

2. Insight into how the init process is executed.

From the experience I have above, I know that kernel searches for "/sbin/init" and runs it. So, I searched for the string "/sbin/init" in /init/main.c and found something interesting. Have a look at this.

The function kernel_init is very interesting. Let us have a code walk-through.

  1. The first few lines go like this.
static int __ref kernel_init(void *unused)
{
        int ret;

        kernel_init_freeable();
        /* need to finish all async __init code before freeing the memory */
        async_synchronize_full();
        ftrace_free_init_mem();
        free_initmem();
        mark_readonly();
  1. I am interested in that ```kernel_init_freeable()** function. Let us get into it.

    • It does some initialization. It tries opening the /dev/console with read-write permissions.
            /* Open the /dev/console on the rootfs, this should never fail */
        if (ksys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
                pr_err("Warning: unable to open an initial console.\n");
    • Then it does something related to initramfs. There was one point where I kept getting the (initramfs) shell. When I tried to run /init present in it's filesystem, the kernel panicked. The ramdisk_execute_command is updated to /init here.
    if (!ramdisk_execute_command)
                ramdisk_execute_command = "/init";
  2. Back to kernel_init. It'll try running ramdisk_execute_command.

        if (ramdisk_execute_command) {
                ret = run_init_process(ramdisk_execute_command);
                if (!ret)
                        return 0;
                pr_err("Failed to execute %s (error %d)\n",
                       ramdisk_execute_command, ret);
        }
  • If it succeeds, we'll return. If it doesn't, execute the init all by myself.
  1. I think we can pass the "init" program we want the kernel to execute through the bootloader. The following lines says it.
if (execute_command) {
                ret = run_init_process(execute_command);
                if (!ret)
                        return 0;
                panic("Requested init %s failed (error %d).",
                      execute_command, ret);
        }
  • Look around on how execute_command is populated.
  1. The final resort.
if (!try_to_run_init_process("/sbin/init") ||
            !try_to_run_init_process("/etc/init") ||
            !try_to_run_init_process("/bin/init") ||
            !try_to_run_init_process("/bin/sh"))
                return 0;
  • It'll try to execute atmost 4 things. I need to verify all this.

  • Interesting thing is that the kernel executing shell as the 4th option. There is a reason for it.

	/*
         * We try each of these until one succeeds.
         *
         * The Bourne shell can be used instead of init if we are
         * trying to recover a really broken machine.
         */
  • If a machine is completely proken and it needs help, fuck init, fuck systemd, fuck everything. Give a goddamn root shell and may it save the world!
  1. IF this function still doesn't return, just panic to death!
panic("No working init found.  Try passing init= option to kernel. "
              "See Linux Documentation/admin-guide/init.rst for guidance.");
  • See. There is an option to pass my own init program. It says "Try passing init= option to kernel```.

Now that I have read some code, I want to try it hands-on.

Let me start by adding a bunch of pr_notice statements everywhere to catch hold of the control flow.

  • Building and running qemu with the new bzImage. It gave Hello World!. Time to look at the logs. The following is the most interesting.
[    2.670594] ADWAITH: ramdisk_execute_command = /init
[    2.670596] Run /init as init process
Loading, please wait...
starting version 229
[    2.683316] random: udevadm: uninitialized urandom read (16 bytes read)
[    2.685332] random: systemd-udevd: uninitialized urandom read (16 bytes read)
[    2.686882] random: udevadm: uninitialized urandom read (16 bytes read)
[    2.778650] e1000 0000:00:03.0 enp0s3: renamed from eth0
[    2.834534] ata_id (137) used greatest stack depth: 13800 bytes left
[    2.869007] systemd-udevd (125) used greatest stack depth: 13384 bytes left
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... [    3.175199] tsc: Refined TSC clocksource calibration: 2194.923 MHz
[    3.178498] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x1fa376a6b7e, max_idle_ns: 440795221973 ns
[    3.183271] clocksource: Switched to clocksource tsc
[    3.249609] input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input3
done.
Begin: Will now check root file system ... fsck from util-linux 2.27.1
[    7.904632] random: fast init done
[/sbin/fsck.ext4 (1) -- /dev/sda] fsck.ext4 -a -C0 /dev/sda 
/dev/sda: recovering journal
/dev/sda: clean, 18/1310720 files, 126293/5242880 blocks
done.
[    8.062488] EXT4-fs (sda): mounted filesystem with ordered data mode. Opts: (null)
done.
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... done.
Hello World!
  • The /init process of initramfs invoked /sbin/init.

So, I think this is the normal behavior. Let us change it.

  1. I'll keep programs in 4 places - "/sbin/init", "/etc/init", "/bin/init" and "/bin/sh".

  2. Making changes in rootfs_3.img. I'll be adding /bin, /etc directories.

  3. Done with changes. The ramdisk's "/init" will get executed anyway now. I want these to get executed.

    • I'll comment that part of code which execute ramdisk_execute_command.
    • Building and running.
    • Ended in a kernel-panic. Nice!
  • Take a look at the logs.
[    2.062927] ADWAITH: /init ramdisk_execute_command failed to execute. That 	is why we are here.
[    2.062927] ADWAITH: last resort. execute atmost 4 programs
[    2.064440] Run /sbin/init as init process
[    2.066137] Run /etc/init as init process
[    2.066864] Run /bin/init as init process
[    2.067572] Run /bin/sh as init process
/bin/sh: can't open 'nokaslr'
[    2.069308] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000200
  • As expected, "/init" ramdisk command failed - we wanted that to happen.

  • Wierd part is, "/sbin/init" failed to run as an init process. Same with "/etc/init", "/bin/init". Finally "/bin/sh"'s turn came. And not sure what happened.

    • nokaslr option was give to the kernel. Why is the kernel passing it to "/bin/sh"? It says: "/bin/sh: can't open 'nokaslr'".
  • I want to know why "/sbin/init" failed.

Let us get into try_to_run_init_process() function.

  • Present in /init/main.c itself.
static int try_to_run_init_process(const char *init_filename)
{
        int ret;

	 ret = run_init_process(init_filename);

	if (ret && ret != -ENOENT) {
		pr_err("Starting init: %s exists but couldn't execute it (error %d)\n",
	               init_filename, ret);
       }

       return ret;
}
  • This function is interesting. That pr_err never got executed. It is executed when the file exists but kernel couldn't execute it.

    • This means kernel found the file - I have put it!
    • Let us print the return values of this function.
    • The following is interesting.
     [    5.053414] ADWAITH: /init ramdisk_execute_command failed to execute. That 			is why we are here.
     [    5.053419] ADWAITH: last resort. execute atmost 4 programs
     [    5.056263] Run /sbin/init as init process
     [    5.059445] ADWAITH: try_to_run_init_process: (/sbin/init, -2)
     [    5.059448] Run /etc/init as init process
     [    5.061880] ADWAITH: try_to_run_init_process: (/etc/init, -2)
     [    5.061881] Run /bin/init as init process
     [    5.063952] ADWAITH: try_to_run_init_process: (/bin/init, -2)
     [    5.063952] Run /bin/sh as init process
     /bin/sh: can't open 'nokaslr'
     [    5.066046] ADWAITH: try_to_run_init_process: (/bin/sh, 0)
     [    5.067078] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000200
    
    • The first 3 processes failed.
    • /bin/sh was executed successfully. But it panicked saying "/bin/sh: can't open 'nokaslr'". Need to see why.
    • One more interesting thing is, the panic print statement
      panic("No working init found.  Try passing init= option to kernel. "
                    "See Linux Documentation/admin-guide/init.rst for guidance.");
    
    • This never got printed. So control MOSTLY was transferred to "/bin/sh".
    • I want to write a minimal shell now and see what is happening. Later!
  • This is how it looks like now.

linux/vfs/bin# ls
bin_init  bin_sh  init  sh
linux/vfs/bin# ls -l init
lrwxrwxrwx 1 root root 8 Aug 27 08:40 init -> bin_init
  • So, there is a soft-link "init" pointing to "bin_init" which is the actual executable. I am not sure if this soft-link is being resolved properly.

  • Let me remove the soft-link for "/sbin/init" and run qemu again.

linux/vfs/sbin# ls
init
  • Nope. Failed. I wonder why!
[    2.640786] ADWAITH: /init ramdisk_execute_command failed to execute. That 			is why we are here.
[    2.640788] ADWAITH: last resort. execute atmost 4 programs
[    2.642528] Run /sbin/init as init process
[    2.645120] ADWAITH: try_to_run_init_process: (/sbin/init, -2)
[    2.645122] Run /etc/init as init process
[    2.647066] ADWAITH: try_to_run_init_process: (/etc/init, -2)
[    2.647067] Run /bin/init as init process
[    2.648738] ADWAITH: try_to_run_init_process: (/bin/init, -2)
[    2.648738] Run /bin/sh as init process
/bin/sh: can't open 'nokaslr'
[    2.650467] ADWAITH: try_to_run_init_process: (/bin/sh, 0)
  • The "/bin/sh" is being executed properly - with return value 0.

  • So, better to leave the init execution to ramdisk_execute_command part - SAFE!

I wanted to see if the "init = " works as the kernel option. I'll try with "init = "/bin/sh". I removed the comments to that ramdisk_execute_command part.

linux: qemu-system-x86_64 -kernel arch/x86_64/boot/bzImage -nographic  -append "console=ttyS0 nokaslr root=/dev/sda rw init=/bin/sh" -initrd ramdisk.img -m 512 --enable-kvm -cpu host -hda rootfs_3.img

The following is the output.

[    4.372779] ADWAITH: ramdisk_execute_command = /init
[    4.372779] Run /init as init process
Loading, please wait...
.
.
.
.
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... done.
I am /bin/sh


Okay. That worked fine.

I have always wondered about that thin line between hardware and software which connects each other. Similarly, now there is a thin line between kernel-mode and user-mode.

  • The execution of the "init" program(could be /sbin/init, /bin/init or anything) is the beginning of user-land stuff. This happens through a function called run_init_process. I am interested how this function works. It is present in /init/main.c.
static int run_init_process(const char *init_filename)
{
        argv_init[0] = init_filename;
        pr_info("Run %s as init process\n", init_filename);
        return do_execve(getname_kernel(init_filename),
                (const char __user *const __user *)argv_init,
                (const char __user *const __user *)envp_init);
}
  • It is executing something called do_execve - sounds like our execve system call.
  • I love ctags!!

Let us see what do_execve does. Let us go to its definition. It is present in /fs/exec.c.

int do_execve(struct filename *filename,
        const char __user *const __user *__argv,
        const char __user *const __user *__envp)
{
        struct user_arg_ptr argv = { .ptr.native = __argv };
        struct user_arg_ptr envp = { .ptr.native = __envp };
        return do_execveat_common(AT_FDCWD, filename, argv, envp, 0);
}
  • That internally executes do_execveat_common which is present in the same file - /fs/exec.c.
static int do_execveat_common(int fd, struct filename *filename,
                              struct user_arg_ptr argv,
                              struct user_arg_ptr envp,
                              int flags)
{
        return __do_execve_file(fd, filename, argv, envp, flags, NULL);
}
  • Looks like this is an internal function - it is a static function.

We hit a gold-mine. We are now looking at sys_execve which is also named as __do_execve_file. It is also present in /fs/exec.c. Take a look.

/*
 * sys_execve() executes a new program.
 */
static int __do_execve_file(int fd, struct filename *filename,
                            struct user_arg_ptr argv,
                            struct user_arg_ptr envp,
                            int flags, struct file *file)
{
  • This looks good!

So, transition from kernel to user-space is as simple as it can be. It is one simple execve system call. Only difference is, the kernel is calling this whereas in general, user programs request for it.

We are clear from that end.

Now we know how exactly our init process is executed.

3. Some insight into how the "init" process gets PID 1.

We saw that the init program is indirectly executed by kernel_init function present in /init/main.c. Let us see who calls this function and explore more.

A small search tells that rest_init spawns a kernel_thread with kernel_init as it's dispatch function. Take a look. rest_init is present in /init/main.c.

noinline void __ref rest_init(void)
{
        struct task_struct *tsk;
        int pid;

        rcu_scheduler_starting();
        /*
         * We need to spawn init first so that it obtains pid 1, however
         * the init task will end up wanting to create kthreads, which, if
         * we schedule it before we create kthreadd, will OOPS.
         */
        pid = kernel_thread(kernel_init, NULL, CLONE_FS);
  • Now, who calls rest_init? Take a look.
void __init __weak arch_call_rest_init(void)
{
        rest_init();
}
  • Who calls arch_call_rest_init?
    • This is the best part. When the kernel is ALL ALIVE, it is called. arch_call_rest_init is the LAST FUNCTION called by start_kernel. Take a look.
     	/* Do the rest non-__init'ed, we're now alive */
         	arch_call_rest_init();
    
     }

So, that is how init program(first user-land) program gets called.

4. The first few processes after kernel is loaded...

We need to take a look at first few processes. To find this, we'll run qemu with rootfs.img - the buildroot fs which gives a shell.

Run.

linux: qemu-system-x86_64 -kernel arch/x86_64/boot/bzImage -nographic  -append "console=ttyS0 nokaslr root=/dev/sda rw" -initrd ramdisk.img -m 512 --enable-kvm -cpu host -hda rootfs.img

This should give a bare-minimum system with a shell - helps to explore these things. The first few processes are as follows.

# ps
PID   USER     COMMAND
    1 root     init
    2 root     [kthreadd]
    3 root     [rcu_gp]
    4 root     [rcu_par_gp]
    5 root     [kworker/0:0-eve]
    6 root     [kworker/0:0H-kb]
    7 root     [kworker/u2:0-ev]
    8 root     [mm_percpu_wq]
    9 root     [ksoftirqd/0]
   10 root     [rcu_sched]
   11 root     [migration/0]
   12 root     [cpuhp/0]
   13 root     [kdevtmpfs]
   14 root     [netns]
   15 root     [kauditd]
   16 root     [oom_reaper]
   17 root     [writeback]
   18 root     [kcompactd0]
   20 root     [kworker/u2:1-ev]
   26 root     [kworker/0:1-eve]
   65 root     [kblockd]
   66 root     [ata_sff]
   67 root     [md]
   68 root     [edac-poller]
   69 root     [rpciod]
   70 root     [kworker/u3:0]
   71 root     [xprtiod]
   72 root     [cfg80211]
   73 root     [kswapd0]
   74 root     [nfsiod]
   77 root     [acpi_thermal_pm]
   78 root     [scsi_eh_0]
   79 root     [scsi_tmf_0]
   80 root     [scsi_eh_1]
   81 root     [scsi_tmf_1]
   82 root     [kworker/u2:2]
   83 root     [kworker/u2:3]
   84 root     [kworker/0:1H-kb]
   85 root     [kworker/0:2-eve]
   86 root     [ipv6_addrconf]
  138 root     [kworker/0:3-ata]
  165 root     [jbd2/sda-8]
  166 root     [ext4-rsv-conver]
  196 root     /sbin/syslogd -n
  200 root     /sbin/klogd -n
  213 root     -sh
  215 root     ps
# 
  1. The first process is ofcourse our init program - mostly /sbin/init. It is initiated in rest_init function present in /init/main.c.
        /*
         * We need to spawn init first so that it obtains pid 1, however
         * the init task will end up wanting to create kthreads, which, if
         * we schedule it before we create kthreadd, will OOPS.
         */
        pid = kernel_thread(kernel_init, NULL, CLONE_FS);
  1. Second is kthreadd which looks like a daemon. It is spawned as a kernel_thread in rest_init.
pid = kernel_thread(kthreadd, NULL, CLONE_FS | CLONE_FILES);
  • My question is, there should be an executable present with name kthreadd. We'll see where it is present - checking my laptop. Looks like there is no executable named kthreadd. Then htf is a process present?

  • Let us move ahead. Third process is rcu_gp in qemu. I am searching for it in the linux-source using grep -r.

5. Why is initramfs present? How does it work?

The manpage of mkinitramfs says: The initramfs is a compressed cpio archive.

At boottime, the kernel unpacks that archive into RAM disk, mounts and uses it as initial root fs. Why? Why can't it just use the actual root fs? Not sure. Let me explore!

Let us see what cpio archive is. Check this out.

linux: file ramdisk.img 
ramdisk.img: ASCII cpio archive (SVR4 with no CRC)
  • It says - ASCII cpio archive. Let us see what it has inside - total binary.

  • Let us see what strings it has. Nothing interesting.

  • Let us see what mkinitramfs has.

: which mkinitramfs
/usr/sbin/mkinitramfs
  • It is a shell script.

Found this amazing resource.

  • To pass system control, the bootloader loads both the kenrel and an initial RAM-based file system(initramfs) into memory. The contents of the initial ramfs can be used by the kernel directly. The initramfs contains a small executable called init that handles the mounting of the real root filesystem.

  • The init program: init handles the actual booting of the system through several different levels providing different functionality.

Let us get into deeper details now.

  • The purpose of init of initramfs is to prepare the mounting of and access to the real root filesystem. It does the following.
  1. It loads the needed drivers - like the filesystem drivers to access the root filesystem.

  2. Managing Network Configuration: If it a network-mounted root filesystem(mounted via NFS), init must make sure that the proper network drivers are loaded and that they are set up to allow access to the root filesystem.

What does init do?

  1. init starts with a minimum set of drivers that can be used with most hardware configurations. There is a set of modules in INITRD_MODULES. Need to check that out. I am "grep -r"ing for "INITRD". Didn't search completely.

At this point, I want to have a look at the init executable present in the ```initramfs**. It is doing some interesting stuff.

  • Looking at how to forcefully get an initramfs shell.

  • Nope. I'm trying to look at the contents of ramdisk.img. Because it is a filesystem, I should be able to mount it or something like that which will allow me to look at its contents.

  • ramdisk.img is a ASCII cpio archive.

linux: file ramdisk.img 
ramdisk.img: ASCII cpio archive (SVR4 with no CRC)
ramdisk: cpio -idv < ramdisk.img 
.
kernel
kernel/x86
kernel/x86/microcode
kernel/x86/microcode/AuthenticAMD.bin
56 blocks
  • So it has one file - AuthenticAMD.bin. And I guess it is run.

Let us explore what this file is.

ramdisk/kernel/x86/microcode: file AuthenticAMD.bin 
AuthenticAMD.bin: data
  • So, the file command is unable to recognize the file. Let me search online.

  • Found this stackoverflow answer.

  • The lsinitramfs did the magic.

ramdisk: lsinitramfs ramdisk.img 
ramdisk.img
.
kernel
kernel/x86
kernel/x86/microcode
kernel/x86/microcode/AuthenticAMD.bin
.
conf
conf/conf.d
conf/conf.d/resume
conf/arch.conf
conf/initramfs.conf
scripts
scripts/local-premount
scripts/local-premount/ntfs_3g
scripts/local-premount/resume
scripts/local-premount/ORDER
scripts/local-premount/fixrtc
scripts/local-block
scripts/local-block/ORDER
scripts/local-block/lvm2
scripts/local-bottom
scripts/local-bottom/ntfs_3g
scripts/local-bottom/ORDER
scripts/local-top
scripts/local-top/ORDER
scripts/local-top/lvm2
scripts/init-top
scripts/init-top/blacklist
scripts/init-top/udev
scripts/init-top/ORDER
scripts/init-top/all_generic_ide
scripts/nfs
scripts/functions
scripts/panic
scripts/panic/keymap
scripts/panic/ORDER
scripts/panic/console_setup
scripts/local
scripts/init-premount
scripts/init-premount/ORDER
scripts/init-premount/lvm2
scripts/init-bottom
scripts/init-bottom/udev
scripts/init-bottom/ORDER
scripts/init-bottom/lvm2
var
var/cache
var/cache/fontconfig
var/lib
var/lib/dhcp
run
bin
bin/ntfs-3g
bin/minips
bin/fstype
bin/dd
bin/ipconfig
bin/kbd_mode
bin/run-init
bin/setfont
bin/resume
bin/reboot
bin/run-parts
bin/date
bin/mksh
bin/nuke
bin/halt
bin/dmesg
bin/plymouth
bin/losetup
bin/nfsmount
bin/pivot_root
bin/cpio
bin/loadkeys
bin/poweroff
bin/udevadm
bin/kmod
bin/kill
bin/tail
bin/lzop
bin/mkfifo
bin/switch_root
bin/tee
bin/ln
bin/[
bin/acpid
bin/gunzip
bin/[[
bin/printf
bin/uniq
bin/chroot
bin/devmem
bin/hwclock
bin/umount
bin/modinfo
bin/unlzop
bin/chvt
bin/dnsdomainname
bin/loadkmap
bin/fdflush
bin/ash
bin/env
bin/mknod
bin/sync
bin/rmdir
bin/echo
bin/wget
bin/ip
bin/dumpkmap
bin/sleep
bin/pwd
bin/hostname
bin/expr
bin/fbset
bin/cmp
bin/openvt
bin/stat
bin/uname
bin/true
bin/mktemp
bin/seq
bin/ifconfig
bin/test
bin/stty
bin/fgrep
bin/readlink
bin/grep
bin/which
bin/ps
bin/pidof
bin/lzopcat
bin/tty
bin/sort
bin/basename
bin/mv
bin/blockdev
bin/egrep
bin/zcat
bin/sh
bin/awk
bin/cut
bin/yes
bin/cp
bin/gzip
bin/static-sh
bin/clear
bin/wc
bin/more
bin/du
bin/busybox
bin/rm
bin/find
bin/mount
bin/deallocvt
bin/sed
bin/touch
bin/cat
bin/false
bin/mkdir
bin/ls
bin/mkswap
bin/tr
bin/chmod
bin/df
bin/reset
bin/loadfont
bin/fstrim
bin/setkeycodes
init
lib64
lib64/ld-linux-x86-64.so.2
etc
etc/console-setup
etc/console-setup/cached.kmap.gz
etc/console-setup/Uni2-Fixed16.psf.gz
etc/passwd
etc/fstab
etc/ld.so.conf
etc/ld.so.cache
etc/dhcp
etc/dhcp/dhclient.conf
etc/dhcp/dhclient-enter-hooks.d
etc/dhcp/dhclient-enter-hooks.d/config
etc/mtab
etc/udev
etc/udev/udev.conf
etc/nsswitch.conf
etc/os-release
etc/plymouth
etc/modprobe.d
etc/modprobe.d/qemu-system-x86.conf
etc/modprobe.d/iwlwifi.conf
etc/modprobe.d/blacklist-firewire.conf
etc/modprobe.d/mlx4.conf
etc/modprobe.d/blacklist-modem.conf
etc/modprobe.d/intel-microcode-blacklist.conf
etc/modprobe.d/fbdev-blacklist.conf
etc/modprobe.d/alsa-base.conf
etc/modprobe.d/amd64-microcode-blacklist.conf
etc/modprobe.d/blacklist-watchdog.conf
etc/modprobe.d/blacklist.conf
etc/modprobe.d/blacklist-oss.conf
etc/modprobe.d/blacklist-rare-network.conf
etc/modprobe.d/blacklist-ath_pci.conf
etc/modprobe.d/blacklist-framebuffer.conf
etc/modprobe.d/dkms.conf
etc/lvm
etc/lvm/lvm.conf
etc/e2fsck.conf
etc/fonts
etc/fonts/conf.d
etc/fonts/conf.d/60-latin.conf
etc/fonts/fonts.conf
etc/default
etc/default/console-setup
etc/default/keyboard
etc/ld.so.conf.d
etc/ld.so.conf.d/libc.conf
etc/ld.so.conf.d/zz_x32-biarch-compat.conf
etc/ld.so.conf.d/x86_64-linux-gnu.conf
etc/ld.so.conf.d/zz_i386-biarch-compat.conf
etc/ld.so.conf.d/zz_amd64-biarch-compat.conf
etc/ld.so.conf.d/i386-linux-gnu.conf
etc/ld.so.conf.d/fakeroot-x86_64-linux-gnu.conf
etc/ld.so.conf.d/i386-linux-gnu_GL.conf
etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf
etc/ld.so.conf.d/radare.conf
etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf
usr
usr/share
usr/share/plymouth
usr/share/plymouth/ubuntu-logo.png
usr/share/plymouth/themes
usr/share/plymouth/themes/ubuntu-logo
usr/share/plymouth/themes/ubuntu-logo/ubuntu-logo.png
usr/share/plymouth/themes/ubuntu-logo/password-field.png
usr/share/plymouth/themes/ubuntu-logo/ubuntu-logo-scale-2.script
usr/share/plymouth/themes/ubuntu-logo/ubuntu-logo.grub
usr/share/plymouth/themes/ubuntu-logo/progress-dot-on.png
usr/share/plymouth/themes/ubuntu-logo/password-field16.png
usr/share/plymouth/themes/ubuntu-logo/progress-dot-off16.png
usr/share/plymouth/themes/ubuntu-logo/ubuntu-logo.plymouth
usr/share/plymouth/themes/ubuntu-logo/ubuntu-logo.script
usr/share/plymouth/themes/ubuntu-logo/ubuntu-logo16.png
usr/share/plymouth/themes/ubuntu-logo/ubuntu-logo-scale-2.plymouth
usr/share/plymouth/themes/ubuntu-logo/progress-dot-off.png
usr/share/plymouth/themes/ubuntu-logo/progress-dot-on16.png
usr/share/plymouth/themes/default.plymouth
usr/share/plymouth/themes/ubuntu-text
usr/share/plymouth/themes/ubuntu-text/ubuntu-text.plymouth
usr/share/plymouth/themes/ubuntu-text/ubuntu-text.plymouth.in
usr/share/plymouth/themes/details
usr/share/plymouth/themes/details/details.plymouth
usr/share/plymouth/themes/text.plymouth
usr/share/fonts
usr/share/fonts/truetype
usr/share/fonts/truetype/dejavu
usr/share/fonts/truetype/dejavu/DejaVuSans.ttf
usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf
usr/lib
usr/lib/x86_64-linux-gnu
usr/lib/x86_64-linux-gnu/libdrm.so.2
usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0
usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0
usr/lib/x86_64-linux-gnu/libXau.so.6
usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
usr/lib/x86_64-linux-gnu/libXdmcp.so.6
usr/lib/x86_64-linux-gnu/libpango-1.0.so.0
usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0
usr/lib/x86_64-linux-gnu/libpixman-1.so.0
usr/lib/x86_64-linux-gnu/libgraphite2.so.3
usr/lib/x86_64-linux-gnu/libfontconfig.so.1
usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
usr/lib/x86_64-linux-gnu/libpng12.so.0
usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0.3800.1
usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0.3800.1
usr/lib/x86_64-linux-gnu/libdatrie.so.1
usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
usr/lib/x86_64-linux-gnu/libharfbuzz.so.0.10000.1
usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
usr/lib/x86_64-linux-gnu/libthai.so.0.2.4
usr/lib/x86_64-linux-gnu/libxcb-render.so.0
usr/lib/x86_64-linux-gnu/plymouth
usr/lib/x86_64-linux-gnu/plymouth/renderers
usr/lib/x86_64-linux-gnu/plymouth/renderers/drm.so
usr/lib/x86_64-linux-gnu/plymouth/renderers/frame-buffer.so
usr/lib/x86_64-linux-gnu/plymouth/ubuntu-text.so
usr/lib/x86_64-linux-gnu/plymouth/label.so
usr/lib/x86_64-linux-gnu/plymouth/text.so
usr/lib/x86_64-linux-gnu/plymouth/script.so
usr/lib/x86_64-linux-gnu/plymouth/details.so
usr/lib/x86_64-linux-gnu/libXext.so.6
usr/lib/x86_64-linux-gnu/libxcb-shm.so.0
usr/lib/x86_64-linux-gnu/libgraphite2.so.3.0.1
usr/lib/x86_64-linux-gnu/libxcb-render.so.0.0.0
usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.2
usr/lib/x86_64-linux-gnu/libcairo.so.2
usr/lib/x86_64-linux-gnu/libxcb.so.1
usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0
usr/lib/x86_64-linux-gnu/libpango-1.0.so.0.3800.1
usr/lib/x86_64-linux-gnu/libfreetype.so.6.12.1
usr/lib/x86_64-linux-gnu/libthai.so.0
usr/lib/x86_64-linux-gnu/libXrender.so.1
usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
usr/lib/x86_64-linux-gnu/libfreetype.so.6
usr/lib/x86_64-linux-gnu/libffi.so.6
usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0
usr/lib/x86_64-linux-gnu/libdatrie.so.1.3.3
usr/lib/x86_64-linux-gnu/libharfbuzz.so.0
usr/lib/x86_64-linux-gnu/libX11.so.6
usr/lib/x86_64-linux-gnu/libpixman-1.so.0.33.6
lib
lib/libnss_files-2.23.so
lib/modules
lib/modules/4.15.0-46-generic
lib/modules/4.15.0-46-generic/modules.builtin
lib/modules/4.15.0-46-generic/modules.softdep
lib/modules/4.15.0-46-generic/modules.dep.bin
lib/modules/4.15.0-46-generic/modules.symbols
lib/modules/4.15.0-46-generic/modules.alias.bin
lib/modules/4.15.0-46-generic/modules.builtin.bin
lib/modules/4.15.0-46-generic/modules.order
lib/modules/4.15.0-46-generic/kernel
lib/modules/4.15.0-46-generic/kernel/sound
lib/modules/4.15.0-46-generic/kernel/sound/soc
lib/modules/4.15.0-46-generic/kernel/sound/soc/snd-soc-core.ko
lib/modules/4.15.0-46-generic/kernel/sound/soundcore.ko
lib/modules/4.15.0-46-generic/kernel/sound/core
lib/modules/4.15.0-46-generic/kernel/sound/core/snd-seq-device.ko
lib/modules/4.15.0-46-generic/kernel/sound/core/snd-compress.ko
lib/modules/4.15.0-46-generic/kernel/sound/core/snd-pcm-dmaengine.ko
lib/modules/4.15.0-46-generic/kernel/sound/core/snd-timer.ko
lib/modules/4.15.0-46-generic/kernel/sound/ac97_bus.ko
lib/modules/4.15.0-46-generic/kernel/virt
lib/modules/4.15.0-46-generic/kernel/virt/lib
lib/modules/4.15.0-46-generic/kernel/virt/lib/irqbypass.ko
lib/modules/4.15.0-46-generic/kernel/net
lib/modules/4.15.0-46-generic/kernel/net/llc
lib/modules/4.15.0-46-generic/kernel/net/llc/llc.ko
lib/modules/4.15.0-46-generic/kernel/net/vmw_vsock
lib/modules/4.15.0-46-generic/kernel/net/vmw_vsock/vsock.ko
lib/modules/4.15.0-46-generic/kernel/net/mac802154
lib/modules/4.15.0-46-generic/kernel/net/mac802154/mac802154.ko
lib/modules/4.15.0-46-generic/kernel/net/802
lib/modules/4.15.0-46-generic/kernel/net/802/stp.ko
lib/modules/4.15.0-46-generic/kernel/net/sunrpc
lib/modules/4.15.0-46-generic/kernel/net/sunrpc/sunrpc.ko
lib/modules/4.15.0-46-generic/kernel/net/core
lib/modules/4.15.0-46-generic/kernel/net/core/devlink.ko
lib/modules/4.15.0-46-generic/kernel/net/ipv4
lib/modules/4.15.0-46-generic/kernel/net/ipv4/gre.ko
lib/modules/4.15.0-46-generic/kernel/net/ipv4/udp_tunnel.ko
lib/modules/4.15.0-46-generic/kernel/net/psample
lib/modules/4.15.0-46-generic/kernel/net/psample/psample.ko
lib/modules/4.15.0-46-generic/kernel/net/ieee802154
lib/modules/4.15.0-46-generic/kernel/net/ieee802154/ieee802154.ko
lib/modules/4.15.0-46-generic/kernel/net/ipv6
lib/modules/4.15.0-46-generic/kernel/net/ipv6/ip6_udp_tunnel.ko
lib/modules/4.15.0-46-generic/kernel/net/ceph
lib/modules/4.15.0-46-generic/kernel/net/ceph/libceph.ko
lib/modules/4.15.0-46-generic/kernel/net/dsa
lib/modules/4.15.0-46-generic/kernel/net/dsa/dsa_core.ko
lib/modules/4.15.0-46-generic/kernel/net/bridge
lib/modules/4.15.0-46-generic/kernel/net/bridge/bridge.ko
lib/modules/4.15.0-46-generic/kernel/arch
lib/modules/4.15.0-46-generic/kernel/arch/x86
lib/modules/4.15.0-46-generic/kernel/arch/x86/kvm
lib/modules/4.15.0-46-generic/kernel/arch/x86/kvm/kvm.ko
lib/modules/4.15.0-46-generic/kernel/lib
lib/modules/4.15.0-46-generic/kernel/lib/crc8.ko
lib/modules/4.15.0-46-generic/kernel/lib/lru_cache.ko
lib/modules/4.15.0-46-generic/kernel/lib/842
lib/modules/4.15.0-46-generic/kernel/lib/842/842_decompress.ko
lib/modules/4.15.0-46-generic/kernel/lib/crc7.ko
lib/modules/4.15.0-46-generic/kernel/lib/zstd
lib/modules/4.15.0-46-generic/kernel/lib/zstd/zstd_compress.ko
lib/modules/4.15.0-46-generic/kernel/lib/raid6
lib/modules/4.15.0-46-generic/kernel/lib/raid6/raid6_pq.ko
lib/modules/4.15.0-46-generic/kernel/lib/parman.ko
lib/modules/4.15.0-46-generic/kernel/lib/libcrc32c.ko
lib/modules/4.15.0-46-generic/kernel/lib/crc-itu-t.ko
lib/modules/4.15.0-46-generic/kernel/crypto
lib/modules/4.15.0-46-generic/kernel/crypto/xor.ko
lib/modules/4.15.0-46-generic/kernel/crypto/async_tx
lib/modules/4.15.0-46-generic/kernel/crypto/async_tx/async_pq.ko
lib/modules/4.15.0-46-generic/kernel/crypto/async_tx/async_raid6_recov.ko
lib/modules/4.15.0-46-generic/kernel/crypto/async_tx/async_xor.ko
lib/modules/4.15.0-46-generic/kernel/crypto/async_tx/async_memcpy.ko
lib/modules/4.15.0-46-generic/kernel/crypto/async_tx/async_tx.ko
lib/modules/4.15.0-46-generic/kernel/fs
lib/modules/4.15.0-46-generic/kernel/fs/reiserfs
lib/modules/4.15.0-46-generic/kernel/fs/reiserfs/reiserfs.ko
lib/modules/4.15.0-46-generic/kernel/fs/jfs
lib/modules/4.15.0-46-generic/kernel/fs/jfs/jfs.ko
lib/modules/4.15.0-46-generic/kernel/fs/nfs
lib/modules/4.15.0-46-generic/kernel/fs/nfs/nfsv4.ko
lib/modules/4.15.0-46-generic/kernel/fs/nfs/nfs.ko
lib/modules/4.15.0-46-generic/kernel/fs/nfs/nfsv2.ko
lib/modules/4.15.0-46-generic/kernel/fs/nfs/nfsv3.ko
lib/modules/4.15.0-46-generic/kernel/fs/btrfs
lib/modules/4.15.0-46-generic/kernel/fs/btrfs/btrfs.ko
lib/modules/4.15.0-46-generic/kernel/fs/xfs
lib/modules/4.15.0-46-generic/kernel/fs/xfs/xfs.ko
lib/modules/4.15.0-46-generic/kernel/fs/nls
lib/modules/4.15.0-46-generic/kernel/fs/nls/nls_iso8859-1.ko
lib/modules/4.15.0-46-generic/kernel/fs/nfs_common
lib/modules/4.15.0-46-generic/kernel/fs/nfs_common/nfs_acl.ko
lib/modules/4.15.0-46-generic/kernel/fs/nfs_common/grace.ko
lib/modules/4.15.0-46-generic/kernel/fs/isofs
lib/modules/4.15.0-46-generic/kernel/fs/isofs/isofs.ko
lib/modules/4.15.0-46-generic/kernel/fs/fscache
lib/modules/4.15.0-46-generic/kernel/fs/fscache/fscache.ko
lib/modules/4.15.0-46-generic/kernel/fs/udf
lib/modules/4.15.0-46-generic/kernel/fs/udf/udf.ko
lib/modules/4.15.0-46-generic/kernel/fs/lockd
lib/modules/4.15.0-46-generic/kernel/fs/lockd/lockd.ko
lib/modules/4.15.0-46-generic/kernel/drivers
lib/modules/4.15.0-46-generic/kernel/drivers/hv
lib/modules/4.15.0-46-generic/kernel/drivers/hv/hv_vmbus.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hv/hv_utils.ko
lib/modules/4.15.0-46-generic/kernel/drivers/clk
lib/modules/4.15.0-46-generic/kernel/drivers/clk/clk-cs2000-cp.ko
lib/modules/4.15.0-46-generic/kernel/drivers/clk/clk-pwm.ko
lib/modules/4.15.0-46-generic/kernel/drivers/clk/clk-palmas.ko
lib/modules/4.15.0-46-generic/kernel/drivers/clk/clk-cdce706.ko
lib/modules/4.15.0-46-generic/kernel/drivers/clk/clk-si5351.ko
lib/modules/4.15.0-46-generic/kernel/drivers/clk/clk-wm831x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/clk/clk-s2mps11.ko
lib/modules/4.15.0-46-generic/kernel/drivers/clk/clk-twl6040.ko
lib/modules/4.15.0-46-generic/kernel/drivers/video
lib/modules/4.15.0-46-generic/kernel/drivers/video/fbdev
lib/modules/4.15.0-46-generic/kernel/drivers/video/fbdev/core
lib/modules/4.15.0-46-generic/kernel/drivers/video/fbdev/core/syscopyarea.ko
lib/modules/4.15.0-46-generic/kernel/drivers/video/fbdev/core/sysimgblt.ko
lib/modules/4.15.0-46-generic/kernel/drivers/video/fbdev/core/sysfillrect.ko
lib/modules/4.15.0-46-generic/kernel/drivers/video/fbdev/core/fb_sys_fops.ko
lib/modules/4.15.0-46-generic/kernel/drivers/video/fbdev/vga16fb.ko
lib/modules/4.15.0-46-generic/kernel/drivers/video/vgastate.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block
lib/modules/4.15.0-46-generic/kernel/drivers/block/xen-blkback
lib/modules/4.15.0-46-generic/kernel/drivers/block/xen-blkback/xen-blkback.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/aoe
lib/modules/4.15.0-46-generic/kernel/drivers/block/aoe/aoe.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/brd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/pktcdvd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/virtio_blk.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/rsxx
lib/modules/4.15.0-46-generic/kernel/drivers/block/rsxx/rsxx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/umem.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/floppy.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/mtip32xx
lib/modules/4.15.0-46-generic/kernel/drivers/block/mtip32xx/mtip32xx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/pt.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/bpck.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/on20.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/fit3.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/pg.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/fit2.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/frpw.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/dstr.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/kbic.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/epia.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/comm.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/on26.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/epat.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/friq.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/pcd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/pf.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/paride.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/aten.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/ktti.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/paride/pd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/rbd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/skd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/cryptoloop.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/drbd
lib/modules/4.15.0-46-generic/kernel/drivers/block/drbd/drbd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/sx8.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/null_blk.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/nbd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/DAC960.ko
lib/modules/4.15.0-46-generic/kernel/drivers/block/zram
lib/modules/4.15.0-46-generic/kernel/drivers/block/zram/zram.ko
lib/modules/4.15.0-46-generic/kernel/drivers/dca
lib/modules/4.15.0-46-generic/kernel/drivers/dca/dca.ko
lib/modules/4.15.0-46-generic/kernel/drivers/md
lib/modules/4.15.0-46-generic/kernel/drivers/md/dm-region-hash.ko
lib/modules/4.15.0-46-generic/kernel/drivers/md/dm-log.ko
lib/modules/4.15.0-46-generic/kernel/drivers/md/dm-raid.ko
lib/modules/4.15.0-46-generic/kernel/drivers/md/dm-bufio.ko
lib/modules/4.15.0-46-generic/kernel/drivers/md/dm-snapshot.ko
lib/modules/4.15.0-46-generic/kernel/drivers/md/dm-mirror.ko
lib/modules/4.15.0-46-generic/kernel/drivers/md/raid456.ko
lib/modules/4.15.0-46-generic/kernel/drivers/nvme
lib/modules/4.15.0-46-generic/kernel/drivers/nvme/target
lib/modules/4.15.0-46-generic/kernel/drivers/nvme/target/nvmet-rdma.ko
lib/modules/4.15.0-46-generic/kernel/drivers/nvme/target/nvmet-fc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/nvme/target/nvme-loop.ko
lib/modules/4.15.0-46-generic/kernel/drivers/nvme/target/nvmet.ko
lib/modules/4.15.0-46-generic/kernel/drivers/nvme/host
lib/modules/4.15.0-46-generic/kernel/drivers/nvme/host/nvme.ko
lib/modules/4.15.0-46-generic/kernel/drivers/nvme/host/nvme-rdma.ko
lib/modules/4.15.0-46-generic/kernel/drivers/nvme/host/nvme-fc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/nvme/host/nvme-fabrics.ko
lib/modules/4.15.0-46-generic/kernel/drivers/nvme/host/nvme-core.ko
lib/modules/4.15.0-46-generic/kernel/drivers/acpi
lib/modules/4.15.0-46-generic/kernel/drivers/acpi/video.ko
lib/modules/4.15.0-46-generic/kernel/drivers/parport
lib/modules/4.15.0-46-generic/kernel/drivers/parport/parport.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/advansys.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/esp_scsi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/qla1280.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/scsi_transport_spi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/osd
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/osd/osd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/osd/libosd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/csiostor
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/csiostor/csiostor.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/hpsa.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/scsi_transport_srp.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/scsi_debug.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/libsas
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/libsas/libsas.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/iscsi_boot_sysfs.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/ses.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/fcoe
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/fcoe/libfcoe.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/fcoe/fcoe.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/am53c974.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/ips.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/sym53c8xx_2
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/sym53c8xx_2/sym53c8xx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/aic7xxx
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/aic7xxx/aic79xx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/aic7xxx/aic7xxx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/qla2xxx
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/qla2xxx/tcm_qla2xxx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/qla2xxx/qla2xxx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/initio.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/aic94xx
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/aic94xx/aic94xx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/gdth.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/qedf
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/qedf/qedf.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/smartpqi
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/smartpqi/smartpqi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/pmcraid.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/be2iscsi
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/be2iscsi/be2iscsi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/BusLogic.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/raid_class.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/pm8001
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/pm8001/pm80xx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/qlogicfas408.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/vmw_pvscsi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/3w-sas.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/cxgbi
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/cxgbi/libcxgbi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/cxgbi/cxgb4i
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/cxgbi/cxgb4i/cxgb4i.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/cxgbi/cxgb3i
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/cxgbi/cxgb3i/cxgb3i.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/libiscsi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/pcmcia
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/pcmcia/qlogic_cs.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/pcmcia/fdomain_cs.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/pcmcia/sym53c500_cs.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/pcmcia/aha152x_cs.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/iscsi_tcp.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/dc395x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/ppa.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/libiscsi_tcp.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/megaraid
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/megaraid/megaraid_sas.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/megaraid/megaraid_mm.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/megaraid/megaraid_mbox.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/fnic
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/fnic/fnic.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/libfc
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/libfc/libfc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/dpt_i2o.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/eata.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/st.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/isci
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/isci/isci.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/fdomain.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/atp870u.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/scsi_transport_fc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/qla4xxx
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/qla4xxx/qla4xxx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/aacraid
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/aacraid/aacraid.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/ipr.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/megaraid.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/a100u2w.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/osst.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/imm.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/mvumi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/device_handler
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/device_handler/scsi_dh_emc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/device_handler/scsi_dh_rdac.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/device_handler/scsi_dh_hp_sw.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/device_handler/scsi_dh_alua.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/mvsas
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/mvsas/mvsas.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/arcmsr
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/arcmsr/arcmsr.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/virtio_scsi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/ufs
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/ufs/ufshcd-pci.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/ufs/ufshcd-pltfrm.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/ufs/ufshcd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/ufs/tc-dwc-g210-pci.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/ufs/ufshcd-dwc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/ufs/tc-dwc-g210-pltfrm.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/ufs/tc-dwc-g210.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/scsi_transport_sas.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/bnx2fc
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/bnx2fc/bnx2fc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/snic
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/snic/snic.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/esas2r
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/esas2r/esas2r.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/hv_storvsc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/bfa
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/bfa/bfa.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/wd719x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/scsi_transport_iscsi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/qedi
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/qedi/qedi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/stex.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/3w-xxxx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/hptiop.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/ch.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/xen-scsifront.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/lpfc
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/lpfc/lpfc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/3w-9xxx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/mpt3sas
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/mpt3sas/mpt3sas.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/bnx2i
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/bnx2i/bnx2i.ko
lib/modules/4.15.0-46-generic/kernel/drivers/scsi/dmx3191d.ko
lib/modules/4.15.0-46-generic/kernel/drivers/message
lib/modules/4.15.0-46-generic/kernel/drivers/message/fusion
lib/modules/4.15.0-46-generic/kernel/drivers/message/fusion/mptsas.ko
lib/modules/4.15.0-46-generic/kernel/drivers/message/fusion/mptbase.ko
lib/modules/4.15.0-46-generic/kernel/drivers/message/fusion/mptscsih.ko
lib/modules/4.15.0-46-generic/kernel/drivers/message/fusion/mptfc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/message/fusion/mptspi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ssb
lib/modules/4.15.0-46-generic/kernel/drivers/ssb/ssb.ko
lib/modules/4.15.0-46-generic/kernel/drivers/platform
lib/modules/4.15.0-46-generic/kernel/drivers/platform/x86
lib/modules/4.15.0-46-generic/kernel/drivers/platform/x86/wmi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/platform/x86/mxm-wmi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/core
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/core/sdio_uart.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/core/mmc_block.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/host
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/host/sdhci-acpi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/host/cb710-mmc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/host/toshsd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/host/mtk-sd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/host/sdhci.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/host/tifm_sd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/host/sdricoh_cs.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/host/sdhci-xenon-driver.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/host/vub300.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/host/wbsd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/host/mmc_spi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/host/rtsx_usb_sdmmc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/host/via-sdmmc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/host/ushc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/host/usdhi6rol0.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/host/sdhci-pltfm.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/host/rtsx_pci_sdmmc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mmc/host/sdhci-pci.ko
lib/modules/4.15.0-46-generic/kernel/drivers/vhost
lib/modules/4.15.0-46-generic/kernel/drivers/vhost/vringh.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_triflex.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_rz1000.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_atp867x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_acpi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_atiixp.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_opti.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_platform.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_it821x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_rdc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_ns87410.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_netcell.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_sch.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/acard-ahci.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_oldpiix.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/sata_svw.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/sata_dwc_460ex.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_ninja32.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_hpt366.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_sl82c105.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_via.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_optidma.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_hpt3x2n.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/sata_sil24.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_artop.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/sata_sil.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/sata_vsc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_pcmcia.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_efar.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_ns87415.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_serverworks.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/sata_promise.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/sata_sx4.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_amd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_it8213.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/sata_inic162x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_ali.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_cmd64x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_hpt37x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/sata_sis.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/ahci_platform.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/sata_via.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_cypress.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/libahci_platform.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/sata_uli.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/libahci.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_mpiix.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_piccolo.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pdc_adma.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_radisys.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/ahci.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_cmd640.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/sata_qstor.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_pdc202xx_old.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_legacy.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_jmicron.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_hpt3x3.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/sata_nv.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_marvell.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_pdc2027x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/pata_sil680.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ata/sata_mv.ko
lib/modules/4.15.0-46-generic/kernel/drivers/pcmcia
lib/modules/4.15.0-46-generic/kernel/drivers/pcmcia/pcmcia.ko
lib/modules/4.15.0-46-generic/kernel/drivers/pcmcia/pcmcia_core.ko
lib/modules/4.15.0-46-generic/kernel/drivers/phy
lib/modules/4.15.0-46-generic/kernel/drivers/phy/marvell
lib/modules/4.15.0-46-generic/kernel/drivers/phy/marvell/phy-pxa-28nm-hsic.ko
lib/modules/4.15.0-46-generic/kernel/drivers/phy/marvell/phy-pxa-28nm-usb2.ko
lib/modules/4.15.0-46-generic/kernel/drivers/phy/motorola
lib/modules/4.15.0-46-generic/kernel/drivers/phy/motorola/phy-cpcap-usb.ko
lib/modules/4.15.0-46-generic/kernel/drivers/phy/ti
lib/modules/4.15.0-46-generic/kernel/drivers/phy/ti/phy-tusb1210.ko
lib/modules/4.15.0-46-generic/kernel/drivers/phy/samsung
lib/modules/4.15.0-46-generic/kernel/drivers/phy/samsung/phy-exynos-usb2.ko
lib/modules/4.15.0-46-generic/kernel/drivers/phy/qualcomm
lib/modules/4.15.0-46-generic/kernel/drivers/phy/qualcomm/phy-qcom-usb-hs.ko
lib/modules/4.15.0-46-generic/kernel/drivers/phy/qualcomm/phy-qcom-usb-hsic.ko
lib/modules/4.15.0-46-generic/kernel/drivers/phy/broadcom
lib/modules/4.15.0-46-generic/kernel/drivers/phy/broadcom/phy-bcm-kona-usb2.ko
lib/modules/4.15.0-46-generic/kernel/drivers/pps
lib/modules/4.15.0-46-generic/kernel/drivers/pps/pps_core.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net
lib/modules/4.15.0-46-generic/kernel/drivers/net/slip
lib/modules/4.15.0-46-generic/kernel/drivers/net/slip/slip.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/virtio_net.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/mdio.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/hyperv
lib/modules/4.15.0-46-generic/kernel/drivers/net/hyperv/hv_netvsc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/vmxnet3
lib/modules/4.15.0-46-generic/kernel/drivers/net/vmxnet3/vmxnet3.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/vxlan.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/sungem_phy.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/plip
lib/modules/4.15.0-46-generic/kernel/drivers/net/plip/plip.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/gtp.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/tap.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/fjes
lib/modules/4.15.0-46-generic/kernel/drivers/net/fjes/fjes.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/eql.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ntb_netdev.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ppp
lib/modules/4.15.0-46-generic/kernel/drivers/net/ppp/pptp.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ppp/ppp_deflate.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ppp/bsd_comp.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ppp/pppox.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ppp/pppoe.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ppp/ppp_async.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ppp/ppp_mppe.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ppp/ppp_synctty.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/cicada.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/spi_ks8995.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/ste10Xp.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/icplus.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/dp83640.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/mdio-bitbang.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/mdio-cavium.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/aquantia.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/bcm7xxx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/xilinx_gmii2rgmii.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/amd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/rockchip.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/smsc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/marvell10g.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/qsemi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/vitesse.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/mdio-gpio.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/dp83867.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/mdio-thunder.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/davicom.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/teranetics.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/bcm-phy-lib.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/microchip.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/bcm87xx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/et1011c.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/mscc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/uPD60620.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/broadcom.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/dp83848.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/marvell.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/realtek.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/lxt.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/at803x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/cortina.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/intel-xway.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/national.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/micrel.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/phy/dp83822.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/rionet.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ipvlan
lib/modules/4.15.0-46-generic/kernel/drivers/net/ipvlan/ipvlan.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ipvlan/ipvtap.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/macsec.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/geneve.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/fddi
lib/modules/4.15.0-46-generic/kernel/drivers/net/fddi/skfp
lib/modules/4.15.0-46-generic/kernel/drivers/net/fddi/skfp/skfp.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/fddi/defxx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ieee802154
lib/modules/4.15.0-46-generic/kernel/drivers/net/ieee802154/cc2520.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ieee802154/atusb.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ieee802154/ca8210.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ieee802154/fakelb.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ieee802154/at86rf230.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ieee802154/adf7242.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ieee802154/mrf24j40.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/vrf.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/mii.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/fujitsu
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/fujitsu/fmvj18x_cs.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/via
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/via/via-velocity.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/via/via-rhine.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/marvell
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/marvell/sky2.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/marvell/skge.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/marvell/mvmdio.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/sun
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/sun/niu.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/sun/sunhme.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/sun/cassini.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/sun/sungem.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/8390
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/8390/ne2k-pci.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/8390/8390.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/8390/axnet_cs.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/8390/pcnet_cs.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/rocker
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/rocker/rocker.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/myricom
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/myricom/myri10ge
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/myricom/myri10ge/myri10ge.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/ec_bhf.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/silan
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/silan/sc92031.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/ethoc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/atheros
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/atheros/atl1e
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/atheros/atl1e/atl1e.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/atheros/atl1c
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/atheros/atl1c/atl1c.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/atheros/alx
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/atheros/alx/alx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/atheros/atlx
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/atheros/atlx/atl2.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/atheros/atlx/atl1.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/amd
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/amd/nmclan_cs.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/amd/xgbe
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/amd/xgbe/amd-xgbe.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/amd/pcnet32.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/amd/amd8111e.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/netronome
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/netronome/nfp
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/netronome/nfp/nfp.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/3com
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/3com/typhoon.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/3com/3c574_cs.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/3com/3c59x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/3com/3c589_cs.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/neterion
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/neterion/s2io.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/neterion/vxge
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/neterion/vxge/vxge.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/brocade
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/brocade/bna
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/brocade/bna/bna.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/micrel
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/micrel/ks8851_mll.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/micrel/ksz884x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/micrel/ks8851.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/micrel/ks8842.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/qlogic
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/qlogic/qede
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/qlogic/qede/qede.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/qlogic/qed
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/qlogic/qed/qed.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/qlogic/qlcnic
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/qlogic/qlcnic/qlcnic.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/qlogic/qla3xxx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/qlogic/netxen
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/qlogic/netxen/netxen_nic.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/qlogic/qlge
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/qlogic/qlge/qlge.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/ti
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/ti/tlan.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/ti/cpsw_ale.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/chelsio
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/chelsio/cxgb4vf
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/chelsio/cxgb
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/chelsio/cxgb/cxgb.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/chelsio/cxgb3
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/chelsio/cxgb3/cxgb3.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/chelsio/libcxgb
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/chelsio/libcxgb/libcxgb.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/chelsio/cxgb4
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/chelsio/cxgb4/cxgb4.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/agere
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/agere/et131x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/synopsys
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/synopsys/dwc-xlgmac.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/xircom
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/xircom/xirc2ps_cs.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/amazon
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/amazon/ena
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/amazon/ena/ena.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/sis
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/sis/sis190.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/sis/sis900.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/cadence
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/cadence/macb.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/cadence/macb_pci.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/hp
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/hp/hp100.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/rdc
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/rdc/r6040.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/smsc
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/smsc/smc91c92_cs.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/smsc/epic100.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/smsc/smsc911x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/smsc/smsc9420.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/dlink
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/dlink/sundance.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/dlink/dl2k.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/altera
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/altera/altera_tse.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/cisco
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/cisco/enic
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/cisco/enic/enic.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/stmicro
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/stmicro/stmmac
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-generic.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac-platform.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/samsung
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/samsung/sxgbe
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/samsung/sxgbe/samsung-sxgbe.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/alacritech
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/alacritech/slicoss.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/qualcomm
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/qualcomm/emac
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/qualcomm/emac/qcom-emac.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/qualcomm/rmnet
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/qualcomm/rmnet/rmnet.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/sfc
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/sfc/falcon
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/sfc/falcon/sfc-falcon.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/sfc/sfc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/adaptec
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/adaptec/starfire.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/tehuti
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/tehuti/tehuti.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/nvidia
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/nvidia/forcedeth.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/packetengines
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/packetengines/hamachi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/packetengines/yellowfin.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/fealnx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/emulex
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/emulex/benet
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/emulex/benet/be2net.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/broadcom
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/broadcom/bnx2x
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/broadcom/bnx2x/bnx2x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/broadcom/cnic.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/broadcom/bnxt
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/broadcom/bnxt/bnxt_en.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/broadcom/b44.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/broadcom/tg3.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/broadcom/bnx2.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/wiznet
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/wiznet/w5100.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/wiznet/w5300.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/wiznet/w5100-spi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/alteon
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/alteon/acenic.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/cavium
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/cavium/thunder
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/cavium/thunder/thunder_bgx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/cavium/thunder/nicvf.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/cavium/thunder/nicpf.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/cavium/thunder/thunder_xcv.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/cavium/liquidio
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/cavium/liquidio/liquidio_vf.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/cavium/liquidio/liquidio.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/microchip
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/microchip/encx24j600-regmap.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/microchip/encx24j600.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/microchip/enc28j60.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/realtek
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/realtek/8139cp.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/realtek/atp.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/realtek/8139too.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/realtek/r8169.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/dnet.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/dec
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/dec/tulip
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/dec/tulip/xircom_cb.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/dec/tulip/de2104x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/dec/tulip/de4x5.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/dec/tulip/dmfe.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/dec/tulip/uli526x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/dec/tulip/winbond-840.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/dec/tulip/tulip.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/aquantia
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/aquantia/atlantic
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/aquantia/atlantic/atlantic.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/natsemi
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/natsemi/natsemi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/natsemi/ns83820.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/jme.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/huawei
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/huawei/hinic
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/huawei/hinic/hinic.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/i40e
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/i40e/i40e.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/ixgbevf
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/ixgbevf/ixgbevf.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/ixgbe
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/e1000
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/ixgb
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/ixgb/ixgb.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/igbvf
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/igbvf/igbvf.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/i40evf
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/i40evf/i40evf.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/fm10k
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/fm10k/fm10k.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/e1000e
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/e100.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/igb
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/intel/igb/igb.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/aurora
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/aurora/nb8800.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/mellanox
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/mellanox/mlxfw
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/mellanox/mlxfw/mlxfw.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/mellanox/mlxsw
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_core.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_minimal.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_switchx2.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_switchib.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/mellanox/mlx4
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_core.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/mellanox/mlx5
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/mellanox/mlx5/core
lib/modules/4.15.0-46-generic/kernel/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/thunderbolt-net.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/caif
lib/modules/4.15.0-46-generic/kernel/drivers/net/caif/cfspi_slave.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/caif/caif_hsi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/caif/caif_virtio.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/caif/caif_serial.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/dsa
lib/modules/4.15.0-46-generic/kernel/drivers/net/dsa/lan9303_i2c.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/dsa/qca8k.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/dsa/lan9303-core.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/dsa/mt7530.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/dsa/mv88e6060.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/dsa/microchip
lib/modules/4.15.0-46-generic/kernel/drivers/net/dsa/microchip/ksz_common.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/dsa/microchip/ksz_spi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/dsa/lan9303_mdio.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/dsa/mv88e6xxx
lib/modules/4.15.0-46-generic/kernel/drivers/net/dsa/mv88e6xxx/mv88e6xxx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/dsa/b53
lib/modules/4.15.0-46-generic/kernel/drivers/net/dsa/b53/b53_srab.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/dsa/b53/b53_common.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/dsa/b53/b53_mmap.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/dsa/b53/b53_spi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/dsa/b53/b53_mdio.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/vsockmon.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/nlmon.ko
lib/modules/4.15.0-46-generic/kernel/drivers/net/netconsole.ko
lib/modules/4.15.0-46-generic/kernel/drivers/input
lib/modules/4.15.0-46-generic/kernel/drivers/input/mouse
lib/modules/4.15.0-46-generic/kernel/drivers/input/mouse/psmouse.ko
lib/modules/4.15.0-46-generic/kernel/drivers/input/serio
lib/modules/4.15.0-46-generic/kernel/drivers/input/serio/hyperv-keyboard.ko
lib/modules/4.15.0-46-generic/kernel/drivers/input/ff-memless.ko
lib/modules/4.15.0-46-generic/kernel/drivers/input/rmi4
lib/modules/4.15.0-46-generic/kernel/drivers/input/rmi4/rmi_core.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/hisilicon
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/hisilicon/hibmc
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/hisilicon/hibmc/hibmc-drm.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/udl
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/udl/udl.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/drm.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/amd
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/amd/amdkfd
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/amd/amdkfd/amdkfd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/amd/lib
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/amd/lib/chash.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/amd/amdgpu
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/radeon
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/radeon/radeon.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/ast
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/ast/ast.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/nouveau
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/qxl
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/qxl/qxl.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/virtio
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/virtio/virtio-gpu.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/vgem
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/vgem/vgem.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/i2c
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/i2c/tda998x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/i2c/ch7006.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/i2c/sil164.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/ttm
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/ttm/ttm.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/cirrus
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/cirrus/cirrus.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/mgag200
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/mgag200/mgag200.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/vmwgfx
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/i915
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/i915/gvt
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/i915/gvt/kvmgt.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/i915/i915.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/gma500
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/gma500/gma500_gfx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/tinydrm
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/tinydrm/st7586.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/tinydrm/repaper.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/tinydrm/core
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/tinydrm/core/tinydrm.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/tinydrm/mipi-dbi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/tinydrm/mi0283qt.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/bridge
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/bridge/analogix-anx78xx.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/drm_kms_helper.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/panel
lib/modules/4.15.0-46-generic/kernel/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-bd9571mwv.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-mc33880.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-lp873x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-sch.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-ucb1400.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-pisosr.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-twl4030.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-mb86s7x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-da9055.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-max7301.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-lp3943.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-pca953x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-kempld.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-sch311x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-axp209.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-dwapb.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-xra1403.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-ws16c48.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-amdpt.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-arizona.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-tps65086.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-wm8350.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-dln2.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-adp5588.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-generic.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-max732x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-tps65912.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-wcove.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-pcf857x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-janz-ttl.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-ml-ioh.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-pci-idio-16.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-exar.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-max3191x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-104-idio-16.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-f7188x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-gpio-mm.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-viperboard.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-amd8111.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-wm831x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-twl6040.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-max7300.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-vx855.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-104-idi-48.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-max730x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-it87.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-104-dio-48e.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-adp5520.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-wm8994.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-crystalcove.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-da9052.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-menz127.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-ich.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-tpic2810.ko
lib/modules/4.15.0-46-generic/kernel/drivers/gpio/gpio-rdc321x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mtd
lib/modules/4.15.0-46-generic/kernel/drivers/mtd/mtd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/target
lib/modules/4.15.0-46-generic/kernel/drivers/target/target_core_mod.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ntb
lib/modules/4.15.0-46-generic/kernel/drivers/ntb/ntb_transport.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ntb/ntb.ko
lib/modules/4.15.0-46-generic/kernel/drivers/i2c
lib/modules/4.15.0-46-generic/kernel/drivers/i2c/algos
lib/modules/4.15.0-46-generic/kernel/drivers/i2c/algos/i2c-algo-bit.ko
lib/modules/4.15.0-46-generic/kernel/drivers/iommu
lib/modules/4.15.0-46-generic/kernel/drivers/iommu/amd_iommu_v2.ko
lib/modules/4.15.0-46-generic/kernel/drivers/thunderbolt
lib/modules/4.15.0-46-generic/kernel/drivers/thunderbolt/thunderbolt.ko
lib/modules/4.15.0-46-generic/kernel/drivers/firewire
lib/modules/4.15.0-46-generic/kernel/drivers/firewire/firewire-sbp2.ko
lib/modules/4.15.0-46-generic/kernel/drivers/firewire/firewire-ohci.ko
lib/modules/4.15.0-46-generic/kernel/drivers/firewire/firewire-core.ko
lib/modules/4.15.0-46-generic/kernel/drivers/pinctrl
lib/modules/4.15.0-46-generic/kernel/drivers/pinctrl/pinctrl-mcp23s08.ko
lib/modules/4.15.0-46-generic/kernel/drivers/pinctrl/intel
lib/modules/4.15.0-46-generic/kernel/drivers/pinctrl/intel/pinctrl-broxton.ko
lib/modules/4.15.0-46-generic/kernel/drivers/pinctrl/intel/pinctrl-lewisburg.ko
lib/modules/4.15.0-46-generic/kernel/drivers/pinctrl/intel/pinctrl-geminilake.ko
lib/modules/4.15.0-46-generic/kernel/drivers/pinctrl/intel/pinctrl-cedarfork.ko
lib/modules/4.15.0-46-generic/kernel/drivers/pinctrl/intel/pinctrl-denverton.ko
lib/modules/4.15.0-46-generic/kernel/drivers/pinctrl/intel/pinctrl-sunrisepoint.ko
lib/modules/4.15.0-46-generic/kernel/drivers/misc
lib/modules/4.15.0-46-generic/kernel/drivers/misc/enclosure.ko
lib/modules/4.15.0-46-generic/kernel/drivers/misc/eeprom
lib/modules/4.15.0-46-generic/kernel/drivers/misc/eeprom/eeprom_93cx6.ko
lib/modules/4.15.0-46-generic/kernel/drivers/misc/cardreader
lib/modules/4.15.0-46-generic/kernel/drivers/misc/cardreader/rtsx_pci.ko
lib/modules/4.15.0-46-generic/kernel/drivers/misc/cardreader/rtsx_usb.ko
lib/modules/4.15.0-46-generic/kernel/drivers/misc/tifm_core.ko
lib/modules/4.15.0-46-generic/kernel/drivers/misc/cb710
lib/modules/4.15.0-46-generic/kernel/drivers/misc/cb710/cb710.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mfd
lib/modules/4.15.0-46-generic/kernel/drivers/mfd/kempld-core.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mfd/retu-mfd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mfd/lp3943.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mfd/mc13xxx-core.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mfd/dln2.ko
lib/modules/4.15.0-46-generic/kernel/drivers/media
lib/modules/4.15.0-46-generic/kernel/drivers/media/media.ko
lib/modules/4.15.0-46-generic/kernel/drivers/media/v4l2-core
lib/modules/4.15.0-46-generic/kernel/drivers/media/v4l2-core/videobuf2-core.ko
lib/modules/4.15.0-46-generic/kernel/drivers/media/v4l2-core/videobuf2-v4l2.ko
lib/modules/4.15.0-46-generic/kernel/drivers/media/v4l2-core/videobuf2-memops.ko
lib/modules/4.15.0-46-generic/kernel/drivers/media/v4l2-core/videodev.ko
lib/modules/4.15.0-46-generic/kernel/drivers/media/v4l2-core/videobuf2-vmalloc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/char
lib/modules/4.15.0-46-generic/kernel/drivers/char/agp
lib/modules/4.15.0-46-generic/kernel/drivers/char/agp/sis-agp.ko
lib/modules/4.15.0-46-generic/kernel/drivers/vfio
lib/modules/4.15.0-46-generic/kernel/drivers/vfio/vfio_iommu_type1.ko
lib/modules/4.15.0-46-generic/kernel/drivers/vfio/vfio.ko
lib/modules/4.15.0-46-generic/kernel/drivers/vfio/mdev
lib/modules/4.15.0-46-generic/kernel/drivers/vfio/mdev/vfio_mdev.ko
lib/modules/4.15.0-46-generic/kernel/drivers/vfio/mdev/mdev.ko
lib/modules/4.15.0-46-generic/kernel/drivers/uio
lib/modules/4.15.0-46-generic/kernel/drivers/uio/uio.ko
lib/modules/4.15.0-46-generic/kernel/drivers/mcb
lib/modules/4.15.0-46-generic/kernel/drivers/mcb/mcb.ko
lib/modules/4.15.0-46-generic/kernel/drivers/ptp
lib/modules/4.15.0-46-generic/kernel/drivers/ptp/ptp.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb
lib/modules/4.15.0-46-generic/kernel/drivers/usb/storage
lib/modules/4.15.0-46-generic/kernel/drivers/usb/storage/uas.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/storage/ums-freecom.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/storage/ums-onetouch.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/storage/ums-datafab.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/storage/ums-isd200.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/storage/usb-storage.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/storage/ums-alauda.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/storage/ums-cypress.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/storage/ums-realtek.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/storage/ums-jumpshot.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/storage/ums-sddr55.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/storage/ums-sddr09.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/storage/ums-karma.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/storage/ums-eneub6250.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/storage/ums-usbat.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/phy
lib/modules/4.15.0-46-generic/kernel/drivers/usb/phy/phy-isp1301.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/phy/phy-gpio-vbus-usb.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/phy/phy-tahvo.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/phy/phy-generic.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/common
lib/modules/4.15.0-46-generic/kernel/drivers/usb/common/ulpi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/musb
lib/modules/4.15.0-46-generic/kernel/drivers/usb/musb/musb_hdrc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/gadget
lib/modules/4.15.0-46-generic/kernel/drivers/usb/gadget/udc
lib/modules/4.15.0-46-generic/kernel/drivers/usb/gadget/udc/udc-core.ko
lib/modules/4.15.0-46-generic/kernel/drivers/usb/host
lib/modules/4.15.0-46-generic/kernel/drivers/usb/host/xhci-plat-hcd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/dma
lib/modules/4.15.0-46-generic/kernel/drivers/dma/dw
lib/modules/4.15.0-46-generic/kernel/drivers/dma/dw/dw_dmac_core.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/wm8400-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/wm831x-dcdc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/as3711-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/da9210-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/tps65086-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/max14577-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/arizona-micsupp.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/pv88080-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/max8907-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/da9062-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/88pm800.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/tps65090-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/lp3971.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/wm8994-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/mc13xxx-regulator-core.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/wm831x-ldo.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/lp3972.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/fixed.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/tps65912-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/arizona-ldo1.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/da9211-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/max8660.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/mc13892-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/anatop-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/da9055-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/tps65023-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/pfuze100-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/pcap-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/rt5033-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/tps6524x-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/rc5t583-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/pv88060-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/s2mpa01.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/tps6586x-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/fan53555.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/max8952.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/mt6311-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/ltc3589.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/da9052-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/bd9571mwv-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/axp20x-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/s5m8767.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/userspace-consumer.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/mc13783-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/88pm8607.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/isl6271a-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/pwm-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/wm8350-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/act8865-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/bcm590xx-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/ad5398.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/max8997-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/pv88090-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/tps80031-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/tps6105x-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/lp8788-buck.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/max8649.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/tps62360-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/qcom_spmi-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/gpio-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/max8998.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/wm831x-isink.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/tps51632-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/da9063-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/mt6323-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/pcf50633-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/tps6507x-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/lp872x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/mt6397-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/ltc3676.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/twl6030-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/max77693-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/lm363x-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/sky81452-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/twl-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/lp8788-ldo.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/lp8755.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/isl9305.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/aat2870-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/virtual.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/max1586.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/max8925-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/tps65132-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/tps65910-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/palmas-regulator.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/ab3100.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/s2mps11.ko
lib/modules/4.15.0-46-generic/kernel/drivers/regulator/da903x.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-cp2112.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-roccat-ryos.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-gfrm.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/intel-ish-hid
lib/modules/4.15.0-46-generic/kernel/drivers/hid/intel-ish-hid/intel-ishtp-hid.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/intel-ish-hid/intel-ish-ipc.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/intel-ish-hid/intel-ishtp.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-sunplus.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-plantronics.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-cherry.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-microsoft.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-holtek-mouse.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-chicony.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-roccat-isku.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-lenovo.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/uhid.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-ezkey.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-nti.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-roccat-arvo.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-holtek-kbd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-primax.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-aureal.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/wacom.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-penmount.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-elo.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-accutouch.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-monterey.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-gt683r.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-alps.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-steelseries.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-retrode.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-sjoy.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-samsung.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-logitech.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-hyperv.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-gembird.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-ite.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-udraw-ps3.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-mf.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-generic.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-appleir.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-prodikeys.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-roccat.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-corsair.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/usbhid
lib/modules/4.15.0-46-generic/kernel/drivers/hid/usbhid/usbmouse.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/usbhid/usbhid.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/usbhid/usbkbd.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-xinmo.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-belkin.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-asus.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-cmedia.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-sensor-custom.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-logitech-dj.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-apple.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-rmi.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/i2c-hid
lib/modules/4.15.0-46-generic/kernel/drivers/hid/i2c-hid/i2c-hid.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-roccat-lua.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-roccat-savu.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-logitech-hidpp.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-ortek.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-led.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-sensor-hub.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-roccat-common.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-keytouch.ko
lib/modules/4.15.0-46-generic/kernel/drivers/hid/hid-topseed.ko
lib/modules/4.15.0-46-generic/kernel/drivers/infiniband
lib/modules/4.15.0-46-generic/kernel/drivers/infiniband/core
lib/modules/4.15.0-46-generic/kernel/drivers/infiniband/core/ib_cm.ko
lib/modules/4.15.0-46-generic/kernel/drivers/infiniband/core/ib_core.ko
lib/modules/4.15.0-46-generic/kernel/drivers/infiniband/core/iw_cm.ko
lib/modules/4.15.0-46-generic/kernel/drivers/infiniband/core/rdma_cm.ko
lib/modules/4.15.0-46-generic/modules.symbols.bin
lib/modules/4.15.0-46-generic/modules.dep
lib/modules/4.15.0-46-generic/modules.devname
lib/modules/4.15.0-46-generic/modules.alias
lib/x86_64-linux-gnu
lib/x86_64-linux-gnu/libkmod.so.2
lib/x86_64-linux-gnu/libattr.so.1
lib/x86_64-linux-gnu/libudev.so.1
lib/x86_64-linux-gnu/libnss_files-2.23.so
lib/x86_64-linux-gnu/libacl.so.1
lib/x86_64-linux-gnu/libuuid.so.1.3.0
lib/x86_64-linux-gnu/libext2fs.so.2.4
lib/x86_64-linux-gnu/libply-splash-graphics.so.4.0.0
lib/x86_64-linux-gnu/libpcre.so.3
lib/x86_64-linux-gnu/ld-2.23.so
lib/x86_64-linux-gnu/libselinux.so.1
lib/x86_64-linux-gnu/libisc-export.so.160.0.0
lib/x86_64-linux-gnu/librt-2.23.so
lib/x86_64-linux-gnu/libcom_err.so.2.1
lib/x86_64-linux-gnu/libc.so.6
lib/x86_64-linux-gnu/libdns-export.so.162
lib/x86_64-linux-gnu/libc-2.23.so
lib/x86_64-linux-gnu/libdl-2.23.so
lib/x86_64-linux-gnu/libe2p.so.2
lib/x86_64-linux-gnu/libpcre.so.3.13.2
lib/x86_64-linux-gnu/libpng12.so.0
lib/x86_64-linux-gnu/libm.so.6
lib/x86_64-linux-gnu/libudev.so.1.6.4
lib/x86_64-linux-gnu/libmount.so.1.1.0
lib/x86_64-linux-gnu/libe2p.so.2.3
lib/x86_64-linux-gnu/libexpat.so.1
lib/x86_64-linux-gnu/libply.so.4
lib/x86_64-linux-gnu/libdevmapper-event.so.1.02.1
lib/x86_64-linux-gnu/libattr.so.1.1.0
lib/x86_64-linux-gnu/libntfs-3g.so.861
lib/x86_64-linux-gnu/libblkid.so.1.1.0
lib/x86_64-linux-gnu/libtinfo.so.5
lib/x86_64-linux-gnu/libntfs-3g.so.861.0.0
lib/x86_64-linux-gnu/libaudit.so.1.0.0
lib/x86_64-linux-gnu/libblkid.so.1
lib/x86_64-linux-gnu/libmount.so.1
lib/x86_64-linux-gnu/libdevmapper.so.1.02.1
lib/x86_64-linux-gnu/libexpat.so.1.6.0
lib/x86_64-linux-gnu/libply-splash-core.so.4.0.0
lib/x86_64-linux-gnu/libpthread.so.0
lib/x86_64-linux-gnu/libpthread-2.23.so
lib/x86_64-linux-gnu/libaudit.so.1
lib/x86_64-linux-gnu/libm-2.23.so
lib/x86_64-linux-gnu/libreadline.so.5.2
lib/x86_64-linux-gnu/libpng12.so.0.54.0
lib/x86_64-linux-gnu/libuuid.so.1
lib/x86_64-linux-gnu/libtinfo.so.5.9
lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
lib/x86_64-linux-gnu/libdns-export.so.162.1.3
lib/x86_64-linux-gnu/libisc-export.so.160
lib/x86_64-linux-gnu/libkmod.so.2.3.0
lib/x86_64-linux-gnu/libply-splash-graphics.so.4
lib/x86_64-linux-gnu/libz.so.1.2.8
lib/x86_64-linux-gnu/libcom_err.so.2
lib/x86_64-linux-gnu/libreadline.so.5
lib/x86_64-linux-gnu/libply-splash-core.so.4
lib/x86_64-linux-gnu/libext2fs.so.2
lib/x86_64-linux-gnu/libnss_files.so.2
lib/x86_64-linux-gnu/libglib-2.0.so.0
lib/x86_64-linux-gnu/libdl.so.2
lib/x86_64-linux-gnu/librt.so.1
lib/x86_64-linux-gnu/libply.so.4.0.0
lib/x86_64-linux-gnu/libacl.so.1.1.0
lib/x86_64-linux-gnu/libz.so.1
lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.2
lib/klibc-k3La8MUnuzHQ0_kG8hokcGAC0PA.so
lib/udev
lib/udev/ata_id
lib/udev/rules.d
lib/udev/rules.d/80-drivers.rules
lib/udev/rules.d/50-udev-default.rules
lib/udev/rules.d/73-usb-net-by-mac.rules
lib/udev/rules.d/70-snap.core.rules
lib/udev/rules.d/75-net-description.rules
lib/udev/rules.d/50-firmware.rules
lib/udev/rules.d/60-persistent-storage-dm.rules
lib/udev/rules.d/80-net-setup-link.rules
lib/udev/rules.d/70-snap.firefox.rules
lib/udev/rules.d/60-vboxdrv.rules
lib/udev/rules.d/60-persistent-storage.rules
lib/udev/rules.d/73-special-net-names.rules
lib/udev/rules.d/56-lvm.rules
lib/udev/rules.d/61-persistent-storage-android.rules
lib/udev/rules.d/55-dm.rules
lib/udev/rules.d/69-lvm-metad.rules
lib/udev/scsi_id
lib/brltty
lib/brltty/brltty.sh
lib/systemd
lib/systemd/systemd-udevd
lib/systemd/network
lib/systemd/network/99-default.link
lib/modprobe.d
lib/modprobe.d/blacklist_linux-hwe_4.15.0-46-generic.conf
lib/modprobe.d/blacklist_linux-hwe_4.15.0-55-generic.conf
lib/modprobe.d/blacklist_linux-hwe_4.13.0-45-generic.conf
lib/modprobe.d/aliases.conf
lib/modprobe.d/blacklist_linux-hwe_4.15.0-58-generic.conf
lib/libnss_files.so.2
lib/firmware
lib/firmware/ctfw-3.2.5.1.bin
lib/firmware/sun
lib/firmware/sun/cassini.bin
lib/firmware/ql2322_fw.bin
lib/firmware/myri10ge_eth_z8e.dat
lib/firmware/ql2100_fw.bin
lib/firmware/myri10ge_rss_ethp_z8e.dat
lib/firmware/netronome
lib/firmware/netronome/nic_AMDA0097-0001_8x10.nffw
lib/firmware/netronome/nic_AMDA0081-0001_4x10.nffw
lib/firmware/netronome/nic_AMDA0096-0001_2x10.nffw
lib/firmware/netronome/nic_AMDA0081-0001_1x40.nffw
lib/firmware/netronome/nic_AMDA0099-0001_2x10.nffw
lib/firmware/netronome/nic_AMDA0097-0001_2x40.nffw
lib/firmware/netronome/nic_AMDA0097-0001_4x10_1x40.nffw
lib/firmware/netronome/nic_AMDA0099-0001_2x25.nffw
lib/firmware/radeon
lib/firmware/radeon/oland_ce.bin
lib/firmware/radeon/OLAND_pfp.bin
lib/firmware/radeon/mullins_me.bin
lib/firmware/radeon/mullins_pfp.bin
lib/firmware/radeon/hainan_ce.bin
lib/firmware/radeon/hainan_mc.bin
lib/firmware/radeon/bonaire_mc.bin
lib/firmware/radeon/SUMO_pfp.bin
lib/firmware/radeon/hawaii_smc.bin
lib/firmware/radeon/HAWAII_rlc.bin
lib/firmware/radeon/CYPRESS_rlc.bin
lib/firmware/radeon/bonaire_ce.bin
lib/firmware/radeon/verde_ce.bin
lib/firmware/radeon/MULLINS_ce.bin
lib/firmware/radeon/mullins_mec.bin
lib/firmware/radeon/ARUBA_pfp.bin
lib/firmware/radeon/CAYMAN_rlc.bin
lib/firmware/radeon/REDWOOD_smc.bin
lib/firmware/radeon/MULLINS_sdma.bin
lib/firmware/radeon/hainan_k_smc.bin
lib/firmware/radeon/CAICOS_smc.bin
lib/firmware/radeon/mullins_sdma1.bin
lib/firmware/radeon/kaveri_mec2.bin
lib/firmware/radeon/MULLINS_pfp.bin
lib/firmware/radeon/VERDE_mc2.bin
lib/firmware/radeon/TAHITI_vce.bin
lib/firmware/radeon/tahiti_ce.bin
lib/firmware/radeon/oland_me.bin
lib/firmware/radeon/RV730_me.bin
lib/firmware/radeon/CYPRESS_smc.bin
lib/firmware/radeon/R100_cp.bin
lib/firmware/radeon/BONAIRE_mc.bin
lib/firmware/radeon/kabini_sdma.bin
lib/firmware/radeon/TAHITI_mc2.bin
lib/firmware/radeon/RV670_pfp.bin
lib/firmware/radeon/hainan_me.bin
lib/firmware/radeon/verde_me.bin
lib/firmware/radeon/ARUBA_me.bin
lib/firmware/radeon/kabini_sdma1.bin
lib/firmware/radeon/TURKS_me.bin
lib/firmware/radeon/hawaii_vce.bin
lib/firmware/radeon/KAVERI_mec.bin
lib/firmware/radeon/mullins_uvd.bin
lib/firmware/radeon/TAHITI_rlc.bin
lib/firmware/radeon/tahiti_me.bin
lib/firmware/radeon/bonaire_vce.bin
lib/firmware/radeon/RV630_pfp.bin
lib/firmware/radeon/KABINI_mec.bin
lib/firmware/radeon/VERDE_rlc.bin
lib/firmware/radeon/HAWAII_mc2.bin
lib/firmware/radeon/SUMO_rlc.bin
lib/firmware/radeon/CYPRESS_me.bin
lib/firmware/radeon/CAICOS_me.bin
lib/firmware/radeon/kaveri_sdma.bin
lib/firmware/radeon/verde_rlc.bin
lib/firmware/radeon/TURKS_mc.bin
lib/firmware/radeon/RV630_me.bin
lib/firmware/radeon/R700_rlc.bin
lib/firmware/radeon/kabini_uvd.bin
lib/firmware/radeon/kaveri_uvd.bin
lib/firmware/radeon/tahiti_mc.bin
lib/firmware/radeon/RV670_me.bin
lib/firmware/radeon/R600_uvd.bin
lib/firmware/radeon/SUMO2_pfp.bin
lib/firmware/radeon/kabini_vce.bin
lib/firmware/radeon/ARUBA_rlc.bin
lib/firmware/radeon/KAVERI_ce.bin
lib/firmware/radeon/pitcairn_me.bin
lib/firmware/radeon/HAINAN_rlc.bin
lib/firmware/radeon/RV730_smc.bin
lib/firmware/radeon/PITCAIRN_mc.bin
lib/firmware/radeon/R520_cp.bin
lib/firmware/radeon/REDWOOD_me.bin
lib/firmware/radeon/OLAND_rlc.bin
lib/firmware/radeon/bonaire_uvd.bin
lib/firmware/radeon/BARTS_mc.bin
lib/firmware/radeon/RV620_me.bin
lib/firmware/radeon/OLAND_mc.bin
lib/firmware/radeon/RV710_uvd.bin
lib/firmware/radeon/HAWAII_ce.bin
lib/firmware/radeon/mullins_rlc.bin
lib/firmware/radeon/RV610_me.bin
lib/firmware/radeon/PITCAIRN_ce.bin
lib/firmware/radeon/mullins_sdma.bin
lib/firmware/radeon/HAINAN_me.bin
lib/firmware/radeon/R600_me.bin
lib/firmware/radeon/HAWAII_pfp.bin
lib/firmware/radeon/BONAIRE_vce.bin
lib/firmware/radeon/BARTS_pfp.bin
lib/firmware/radeon/CYPRESS_uvd.bin
lib/firmware/radeon/kaveri_mec.bin
lib/firmware/radeon/KABINI_pfp.bin
lib/firmware/radeon/CAYMAN_smc.bin
lib/firmware/radeon/HAWAII_mec.bin
lib/firmware/radeon/KAVERI_pfp.bin
lib/firmware/radeon/bonaire_me.bin
lib/firmware/radeon/RV635_pfp.bin
lib/firmware/radeon/JUNIPER_pfp.bin
lib/firmware/radeon/HAINAN_mc.bin
lib/firmware/radeon/CAICOS_pfp.bin
lib/firmware/radeon/TAHITI_pfp.bin
lib/firmware/radeon/KAVERI_rlc.bin
lib/firmware/radeon/KABINI_rlc.bin
lib/firmware/radeon/CAYMAN_me.bin
lib/firmware/radeon/KABINI_ce.bin
lib/firmware/radeon/TAHITI_smc.bin
lib/firmware/radeon/RV710_me.bin
lib/firmware/radeon/RS780_uvd.bin
lib/firmware/radeon/R300_cp.bin
lib/firmware/radeon/PITCAIRN_rlc.bin
lib/firmware/radeon/oland_rlc.bin
lib/firmware/radeon/TURKS_pfp.bin
lib/firmware/radeon/banks_k_2_smc.bin
lib/firmware/radeon/TAHITI_uvd.bin
lib/firmware/radeon/RV730_pfp.bin
lib/firmware/radeon/JUNIPER_me.bin
lib/firmware/radeon/PITCAIRN_me.bin
lib/firmware/radeon/RV710_smc.bin
lib/firmware/radeon/CAYMAN_pfp.bin
lib/firmware/radeon/PITCAIRN_smc.bin
lib/firmware/radeon/hawaii_sdma1.bin
lib/firmware/radeon/SUMO_me.bin
lib/firmware/radeon/RV620_pfp.bin
lib/firmware/radeon/oland_pfp.bin
lib/firmware/radeon/bonaire_mec.bin
lib/firmware/radeon/kabini_ce.bin
lib/firmware/radeon/RS780_me.bin
lib/firmware/radeon/tahiti_smc.bin
lib/firmware/radeon/BONAIRE_me.bin
lib/firmware/radeon/BONAIRE_smc.bin
lib/firmware/radeon/RV710_pfp.bin
lib/firmware/radeon/hawaii_k_smc.bin
lib/firmware/radeon/PALM_me.bin
lib/firmware/radeon/OLAND_mc2.bin
lib/firmware/radeon/RS690_cp.bin
lib/firmware/radeon/kaveri_rlc.bin
lib/firmware/radeon/PITCAIRN_mc2.bin
lib/firmware/radeon/BARTS_me.bin
lib/firmware/radeon/kaveri_ce.bin
lib/firmware/radeon/kaveri_pfp.bin
lib/firmware/radeon/CYPRESS_pfp.bin
lib/firmware/radeon/verde_k_smc.bin
lib/firmware/radeon/PALM_pfp.bin
lib/firmware/radeon/verde_mc.bin
lib/firmware/radeon/OLAND_smc.bin
lib/firmware/radeon/OLAND_me.bin
lib/firmware/radeon/R200_cp.bin
lib/firmware/radeon/CEDAR_smc.bin
lib/firmware/radeon/MULLINS_me.bin
lib/firmware/radeon/VERDE_pfp.bin
lib/firmware/radeon/JUNIPER_smc.bin
lib/firmware/radeon/RV770_smc.bin
lib/firmware/radeon/pitcairn_mc.bin
lib/firmware/radeon/hawaii_pfp.bin
lib/firmware/radeon/pitcairn_pfp.bin
lib/firmware/radeon/TAHITI_me.bin
lib/firmware/radeon/KAVERI_me.bin
lib/firmware/radeon/KABINI_sdma.bin
lib/firmware/radeon/tahiti_rlc.bin
lib/firmware/radeon/HAINAN_mc2.bin
lib/firmware/radeon/BONAIRE_mc2.bin
lib/firmware/radeon/hawaii_mc.bin
lib/firmware/radeon/CAICOS_mc.bin
lib/firmware/radeon/REDWOOD_rlc.bin
lib/firmware/radeon/verde_pfp.bin
lib/firmware/radeon/bonaire_pfp.bin
lib/firmware/radeon/RV770_uvd.bin
lib/firmware/radeon/BONAIRE_ce.bin
lib/firmware/radeon/MULLINS_rlc.bin
lib/firmware/radeon/BARTS_smc.bin
lib/firmware/radeon/TAHITI_mc.bin
lib/firmware/radeon/RS780_pfp.bin
lib/firmware/radeon/VERDE_ce.bin
lib/firmware/radeon/CEDAR_rlc.bin
lib/firmware/radeon/RV770_me.bin
lib/firmware/radeon/MULLINS_mec.bin
lib/firmware/radeon/HAWAII_smc.bin
lib/firmware/radeon/JUNIPER_rlc.bin
lib/firmware/radeon/si58_mc.bin
lib/firmware/radeon/OLAND_ce.bin
lib/firmware/radeon/TURKS_smc.bin
lib/firmware/radeon/kabini_me.bin
lib/firmware/radeon/R600_pfp.bin
lib/firmware/radeon/oland_mc.bin
lib/firmware/radeon/oland_smc.bin
lib/firmware/radeon/BONAIRE_pfp.bin
lib/firmware/radeon/VERDE_mc.bin
lib/firmware/radeon/SUMO_uvd.bin
lib/firmware/radeon/bonaire_sdma1.bin
lib/firmware/radeon/hawaii_sdma.bin
lib/firmware/radeon/KABINI_me.bin
lib/firmware/radeon/HAWAII_me.bin
lib/firmware/radeon/bonaire_rlc.bin
lib/firmware/radeon/BONAIRE_mec.bin
lib/firmware/radeon/hawaii_uvd.bin
lib/firmware/radeon/HAWAII_mc.bin
lib/firmware/radeon/R600_rlc.bin
lib/firmware/radeon/kabini_pfp.bin
lib/firmware/radeon/kabini_rlc.bin
lib/firmware/radeon/BONAIRE_sdma.bin
lib/firmware/radeon/CEDAR_me.bin
lib/firmware/radeon/BONAIRE_uvd.bin
lib/firmware/radeon/verde_smc.bin
lib/firmware/radeon/pitcairn_rlc.bin
lib/firmware/radeon/hainan_smc.bin
lib/firmware/radeon/CEDAR_pfp.bin
lib/firmware/radeon/VERDE_smc.bin
lib/firmware/radeon/RV635_me.bin
lib/firmware/radeon/RV610_pfp.bin
lib/firmware/radeon/hainan_pfp.bin
lib/firmware/radeon/RS600_cp.bin
lib/firmware/radeon/pitcairn_ce.bin
lib/firmware/radeon/RV740_smc.bin
lib/firmware/radeon/tahiti_pfp.bin
lib/firmware/radeon/hainan_rlc.bin
lib/firmware/radeon/mullins_ce.bin
lib/firmware/radeon/hawaii_me.bin
lib/firmware/radeon/pitcairn_k_smc.bin
lib/firmware/radeon/bonaire_k_smc.bin
lib/firmware/radeon/PITCAIRN_pfp.bin
lib/firmware/radeon/kaveri_me.bin
lib/firmware/radeon/BONAIRE_rlc.bin
lib/firmware/radeon/bonaire_smc.bin
lib/firmware/radeon/RV770_pfp.bin
lib/firmware/radeon/R420_cp.bin
lib/firmware/radeon/VERDE_me.bin
lib/firmware/radeon/hawaii_mec.bin
lib/firmware/radeon/REDWOOD_pfp.bin
lib/firmware/radeon/kaveri_vce.bin
lib/firmware/radeon/oland_k_smc.bin
lib/firmware/radeon/TAHITI_ce.bin
lib/firmware/radeon/HAWAII_sdma.bin
lib/firmware/radeon/BTC_rlc.bin
lib/firmware/radeon/SUMO2_me.bin
lib/firmware/radeon/bonaire_sdma.bin
lib/firmware/radeon/hawaii_ce.bin
lib/firmware/radeon/HAINAN_ce.bin
lib/firmware/radeon/kaveri_sdma1.bin
lib/firmware/radeon/CAYMAN_mc.bin
lib/firmware/radeon/HAINAN_pfp.bin
lib/firmware/radeon/pitcairn_smc.bin
lib/firmware/radeon/hawaii_rlc.bin
lib/firmware/radeon/mullins_vce.bin
lib/firmware/radeon/kabini_mec.bin
lib/firmware/radeon/HAINAN_smc.bin
lib/firmware/radeon/KAVERI_sdma.bin
lib/firmware/qed
lib/firmware/qed/qed_init_values_zipped-8.20.0.0.bin
lib/firmware/3com
lib/firmware/3com/typhoon.bin
lib/firmware/phanfw.bin
lib/firmware/rtl_nic
lib/firmware/rtl_nic/rtl8411-1.fw
lib/firmware/rtl_nic/rtl8411-2.fw
lib/firmware/rtl_nic/rtl8107e-1.fw
lib/firmware/rtl_nic/rtl8168e-2.fw
lib/firmware/rtl_nic/rtl8168d-1.fw
lib/firmware/rtl_nic/rtl8105e-1.fw
lib/firmware/rtl_nic/rtl8168f-1.fw
lib/firmware/rtl_nic/rtl8168g-2.fw
lib/firmware/rtl_nic/rtl8168h-2.fw
lib/firmware/rtl_nic/rtl8168e-1.fw
lib/firmware/rtl_nic/rtl8168e-3.fw
lib/firmware/rtl_nic/rtl8168f-2.fw
lib/firmware/rtl_nic/rtl8168h-1.fw
lib/firmware/rtl_nic/rtl8402-1.fw
lib/firmware/rtl_nic/rtl8168d-2.fw
lib/firmware/rtl_nic/rtl8168g-3.fw
lib/firmware/rtl_nic/rtl8107e-2.fw
lib/firmware/rtl_nic/rtl8106e-1.fw
lib/firmware/rtl_nic/rtl8106e-2.fw
lib/firmware/bnx2x
lib/firmware/bnx2x/bnx2x-e1h-7.13.1.0.fw
lib/firmware/bnx2x/bnx2x-e2-7.13.1.0.fw
lib/firmware/bnx2x/bnx2x-e1-7.13.1.0.fw
lib/firmware/qlogic
lib/firmware/qlogic/1280.bin
lib/firmware/qlogic/1040.bin
lib/firmware/qlogic/12160.bin
lib/firmware/ql2400_fw.bin
lib/firmware/slicoss
lib/firmware/slicoss/oasisdownload.sys
lib/firmware/slicoss/gbrcvucode.sys
lib/firmware/slicoss/oasisrcvucode.sys
lib/firmware/slicoss/gbdownload.sys
lib/firmware/ositech
lib/firmware/ositech/Xilinx7OD.bin
lib/firmware/cxgb3
lib/firmware/cxgb3/ael2005_twx_edc.bin
lib/firmware/cxgb3/t3fw-7.12.0.bin
lib/firmware/cxgb3/ael2005_opt_edc.bin
lib/firmware/cxgb3/ael2020_twx_edc.bin
lib/firmware/cxgb3/t3b_psram-1.1.0.bin
lib/firmware/cxgb3/t3c_psram-1.1.0.bin
lib/firmware/isci
lib/firmware/isci/isci_firmware.bin
lib/firmware/ct2fw-3.2.5.1.bin
lib/firmware/liquidio
lib/firmware/liquidio/lio_23xx_nic.bin
lib/firmware/liquidio/lio_210sv_nic.bin
lib/firmware/liquidio/lio_410nv_nic.bin
lib/firmware/liquidio/lio_210nv_nic.bin
lib/firmware/acenic
lib/firmware/acenic/tg2.bin
lib/firmware/acenic/tg1.bin
lib/firmware/cbfw-3.2.5.1.bin
lib/firmware/adaptec
lib/firmware/adaptec/starfire_tx.bin
lib/firmware/adaptec/starfire_rx.bin
lib/firmware/myri10ge_rss_eth_z8e.dat
lib/firmware/e100
lib/firmware/e100/d101s_ucode.bin
lib/firmware/e100/d102e_ucode.bin
lib/firmware/e100/d101m_ucode.bin
lib/firmware/tehuti
lib/firmware/tehuti/bdx.bin
lib/firmware/ql2500_fw.bin
lib/firmware/nvidia
lib/firmware/nvidia/gp104
lib/firmware/nvidia/gp104/acr
lib/firmware/nvidia/gp104/acr/bl.bin
lib/firmware/nvidia/gp104/acr/ucode_unload.bin
lib/firmware/nvidia/gp104/acr/ucode_load.bin
lib/firmware/nvidia/gp104/acr/unload_bl.bin
lib/firmware/nvidia/gp104/sec2
lib/firmware/nvidia/gp104/sec2/desc.bin
lib/firmware/nvidia/gp104/sec2/image.bin
lib/firmware/nvidia/gp104/sec2/sig.bin
lib/firmware/nvidia/gp104/nvdec
lib/firmware/nvidia/gp104/nvdec/scrubber.bin
lib/firmware/nvidia/gp104/gr
lib/firmware/nvidia/gp104/gr/gpccs_data.bin
lib/firmware/nvidia/gp104/gr/fecs_inst.bin
lib/firmware/nvidia/gp104/gr/fecs_sig.bin
lib/firmware/nvidia/gp104/gr/sw_method_init.bin
lib/firmware/nvidia/gp104/gr/sw_bundle_init.bin
lib/firmware/nvidia/gp104/gr/fecs_data.bin
lib/firmware/nvidia/gp104/gr/fecs_bl.bin
lib/firmware/nvidia/gp104/gr/sw_nonctx.bin
lib/firmware/nvidia/gp104/gr/sw_ctx.bin
lib/firmware/nvidia/gp104/gr/gpccs_bl.bin
lib/firmware/nvidia/gp104/gr/gpccs_inst.bin
lib/firmware/nvidia/gp104/gr/gpccs_sig.bin
lib/firmware/nvidia/gp100
lib/firmware/nvidia/gp100/acr
lib/firmware/nvidia/gp100/acr/bl.bin
lib/firmware/nvidia/gp100/acr/ucode_unload.bin
lib/firmware/nvidia/gp100/acr/ucode_load.bin
lib/firmware/nvidia/gp100/gr
lib/firmware/nvidia/gp100/gr/gpccs_data.bin
lib/firmware/nvidia/gp100/gr/fecs_inst.bin
lib/firmware/nvidia/gp100/gr/fecs_sig.bin
lib/firmware/nvidia/gp100/gr/sw_method_init.bin
lib/firmware/nvidia/gp100/gr/sw_bundle_init.bin
lib/firmware/nvidia/gp100/gr/fecs_data.bin
lib/firmware/nvidia/gp100/gr/fecs_bl.bin
lib/firmware/nvidia/gp100/gr/sw_nonctx.bin
lib/firmware/nvidia/gp100/gr/sw_ctx.bin
lib/firmware/nvidia/gp100/gr/gpccs_bl.bin
lib/firmware/nvidia/gp100/gr/gpccs_inst.bin
lib/firmware/nvidia/gp100/gr/gpccs_sig.bin
lib/firmware/nvidia/gp10b
lib/firmware/nvidia/gp10b/pmu
lib/firmware/nvidia/gp10b/pmu/desc.bin
lib/firmware/nvidia/gp10b/pmu/image.bin
lib/firmware/nvidia/gp10b/pmu/sig.bin
lib/firmware/nvidia/gp10b/acr
lib/firmware/nvidia/gp10b/acr/bl.bin
lib/firmware/nvidia/gp10b/acr/ucode_load.bin
lib/firmware/nvidia/gp10b/gr
lib/firmware/nvidia/gp10b/gr/gpccs_data.bin
lib/firmware/nvidia/gp10b/gr/fecs_inst.bin
lib/firmware/nvidia/gp10b/gr/fecs_sig.bin
lib/firmware/nvidia/gp10b/gr/sw_method_init.bin
lib/firmware/nvidia/gp10b/gr/sw_bundle_init.bin
lib/firmware/nvidia/gp10b/gr/fecs_data.bin
lib/firmware/nvidia/gp10b/gr/fecs_bl.bin
lib/firmware/nvidia/gp10b/gr/sw_nonctx.bin
lib/firmware/nvidia/gp10b/gr/sw_ctx.bin
lib/firmware/nvidia/gp10b/gr/gpccs_bl.bin
lib/firmware/nvidia/gp10b/gr/gpccs_inst.bin
lib/firmware/nvidia/gp10b/gr/gpccs_sig.bin
lib/firmware/nvidia/gm200
lib/firmware/nvidia/gm200/acr
lib/firmware/nvidia/gm200/acr/bl.bin
lib/firmware/nvidia/gm200/acr/ucode_unload.bin
lib/firmware/nvidia/gm200/acr/ucode_load.bin
lib/firmware/nvidia/gm200/gr
lib/firmware/nvidia/gm200/gr/gpccs_data.bin
lib/firmware/nvidia/gm200/gr/fecs_inst.bin
lib/firmware/nvidia/gm200/gr/fecs_sig.bin
lib/firmware/nvidia/gm200/gr/sw_method_init.bin
lib/firmware/nvidia/gm200/gr/sw_bundle_init.bin
lib/firmware/nvidia/gm200/gr/fecs_data.bin
lib/firmware/nvidia/gm200/gr/fecs_bl.bin
lib/firmware/nvidia/gm200/gr/sw_nonctx.bin
lib/firmware/nvidia/gm200/gr/sw_ctx.bin
lib/firmware/nvidia/gm200/gr/gpccs_bl.bin
lib/firmware/nvidia/gm200/gr/gpccs_inst.bin
lib/firmware/nvidia/gm200/gr/gpccs_sig.bin
lib/firmware/nvidia/gp102
lib/firmware/nvidia/gp102/acr
lib/firmware/nvidia/gp102/acr/bl.bin
lib/firmware/nvidia/gp102/acr/ucode_unload.bin
lib/firmware/nvidia/gp102/acr/ucode_load.bin
lib/firmware/nvidia/gp102/acr/unload_bl.bin
lib/firmware/nvidia/gp102/sec2
lib/firmware/nvidia/gp102/sec2/desc.bin
lib/firmware/nvidia/gp102/sec2/image.bin
lib/firmware/nvidia/gp102/sec2/sig.bin
lib/firmware/nvidia/gp102/nvdec
lib/firmware/nvidia/gp102/nvdec/scrubber.bin
lib/firmware/nvidia/gp102/gr
lib/firmware/nvidia/gp102/gr/gpccs_data.bin
lib/firmware/nvidia/gp102/gr/fecs_inst.bin
lib/firmware/nvidia/gp102/gr/fecs_sig.bin
lib/firmware/nvidia/gp102/gr/sw_method_init.bin
lib/firmware/nvidia/gp102/gr/sw_bundle_init.bin
lib/firmware/nvidia/gp102/gr/fecs_data.bin
lib/firmware/nvidia/gp102/gr/fecs_bl.bin
lib/firmware/nvidia/gp102/gr/sw_nonctx.bin
lib/firmware/nvidia/gp102/gr/sw_ctx.bin
lib/firmware/nvidia/gp102/gr/gpccs_bl.bin
lib/firmware/nvidia/gp102/gr/gpccs_inst.bin
lib/firmware/nvidia/gp102/gr/gpccs_sig.bin
lib/firmware/nvidia/gp106
lib/firmware/nvidia/gp106/acr
lib/firmware/nvidia/gp106/acr/bl.bin
lib/firmware/nvidia/gp106/acr/ucode_unload.bin
lib/firmware/nvidia/gp106/acr/ucode_load.bin
lib/firmware/nvidia/gp106/acr/unload_bl.bin
lib/firmware/nvidia/gp106/sec2
lib/firmware/nvidia/gp106/sec2/desc.bin
lib/firmware/nvidia/gp106/sec2/image.bin
lib/firmware/nvidia/gp106/sec2/sig.bin
lib/firmware/nvidia/gp106/nvdec
lib/firmware/nvidia/gp106/nvdec/scrubber.bin
lib/firmware/nvidia/gp106/gr
lib/firmware/nvidia/gp106/gr/gpccs_data.bin
lib/firmware/nvidia/gp106/gr/fecs_inst.bin
lib/firmware/nvidia/gp106/gr/fecs_sig.bin
lib/firmware/nvidia/gp106/gr/sw_method_init.bin
lib/firmware/nvidia/gp106/gr/sw_bundle_init.bin
lib/firmware/nvidia/gp106/gr/fecs_data.bin
lib/firmware/nvidia/gp106/gr/fecs_bl.bin
lib/firmware/nvidia/gp106/gr/sw_nonctx.bin
lib/firmware/nvidia/gp106/gr/sw_ctx.bin
lib/firmware/nvidia/gp106/gr/gpccs_bl.bin
lib/firmware/nvidia/gp106/gr/gpccs_inst.bin
lib/firmware/nvidia/gp106/gr/gpccs_sig.bin
lib/firmware/nvidia/gp107
lib/firmware/nvidia/gp107/acr
lib/firmware/nvidia/gp107/acr/bl.bin
lib/firmware/nvidia/gp107/acr/ucode_unload.bin
lib/firmware/nvidia/gp107/acr/ucode_load.bin
lib/firmware/nvidia/gp107/acr/unload_bl.bin
lib/firmware/nvidia/gp107/sec2
lib/firmware/nvidia/gp107/sec2/desc.bin
lib/firmware/nvidia/gp107/sec2/image.bin
lib/firmware/nvidia/gp107/sec2/sig.bin
lib/firmware/nvidia/gp107/nvdec
lib/firmware/nvidia/gp107/nvdec/scrubber.bin
lib/firmware/nvidia/gp107/gr
lib/firmware/nvidia/gp107/gr/gpccs_data.bin
lib/firmware/nvidia/gp107/gr/fecs_inst.bin
lib/firmware/nvidia/gp107/gr/fecs_sig.bin
lib/firmware/nvidia/gp107/gr/sw_method_init.bin
lib/firmware/nvidia/gp107/gr/sw_bundle_init.bin
lib/firmware/nvidia/gp107/gr/fecs_data.bin
lib/firmware/nvidia/gp107/gr/fecs_bl.bin
lib/firmware/nvidia/gp107/gr/sw_nonctx.bin
lib/firmware/nvidia/gp107/gr/sw_ctx.bin
lib/firmware/nvidia/gp107/gr/gpccs_bl.bin
lib/firmware/nvidia/gp107/gr/gpccs_inst.bin
lib/firmware/nvidia/gp107/gr/gpccs_sig.bin
lib/firmware/nvidia/gm204
lib/firmware/nvidia/gm204/acr
lib/firmware/nvidia/gm204/acr/bl.bin
lib/firmware/nvidia/gm204/acr/ucode_unload.bin
lib/firmware/nvidia/gm204/acr/ucode_load.bin
lib/firmware/nvidia/gm204/gr
lib/firmware/nvidia/gm204/gr/gpccs_data.bin
lib/firmware/nvidia/gm204/gr/fecs_inst.bin
lib/firmware/nvidia/gm204/gr/fecs_sig.bin
lib/firmware/nvidia/gm204/gr/sw_method_init.bin
lib/firmware/nvidia/gm204/gr/sw_bundle_init.bin
lib/firmware/nvidia/gm204/gr/fecs_data.bin
lib/firmware/nvidia/gm204/gr/fecs_bl.bin
lib/firmware/nvidia/gm204/gr/sw_nonctx.bin
lib/firmware/nvidia/gm204/gr/sw_ctx.bin
lib/firmware/nvidia/gm204/gr/gpccs_bl.bin
lib/firmware/nvidia/gm204/gr/gpccs_inst.bin
lib/firmware/nvidia/gm204/gr/gpccs_sig.bin
lib/firmware/nvidia/gm20b
lib/firmware/nvidia/gm20b/pmu
lib/firmware/nvidia/gm20b/pmu/desc.bin
lib/firmware/nvidia/gm20b/pmu/image.bin
lib/firmware/nvidia/gm20b/pmu/sig.bin
lib/firmware/nvidia/gm20b/acr
lib/firmware/nvidia/gm20b/acr/bl.bin
lib/firmware/nvidia/gm20b/acr/ucode_load.bin
lib/firmware/nvidia/gm20b/gr
lib/firmware/nvidia/gm20b/gr/gpccs_data.bin
lib/firmware/nvidia/gm20b/gr/fecs_inst.bin
lib/firmware/nvidia/gm20b/gr/fecs_sig.bin
lib/firmware/nvidia/gm20b/gr/sw_method_init.bin
lib/firmware/nvidia/gm20b/gr/sw_bundle_init.bin
lib/firmware/nvidia/gm20b/gr/fecs_data.bin
lib/firmware/nvidia/gm20b/gr/fecs_bl.bin
lib/firmware/nvidia/gm20b/gr/sw_nonctx.bin
lib/firmware/nvidia/gm20b/gr/sw_ctx.bin
lib/firmware/nvidia/gm20b/gr/gpccs_inst.bin
lib/firmware/nvidia/gm206
lib/firmware/nvidia/gm206/acr
lib/firmware/nvidia/gm206/acr/bl.bin
lib/firmware/nvidia/gm206/acr/ucode_unload.bin
lib/firmware/nvidia/gm206/acr/ucode_load.bin
lib/firmware/nvidia/gm206/gr
lib/firmware/nvidia/gm206/gr/gpccs_data.bin
lib/firmware/nvidia/gm206/gr/fecs_inst.bin
lib/firmware/nvidia/gm206/gr/fecs_sig.bin
lib/firmware/nvidia/gm206/gr/sw_method_init.bin
lib/firmware/nvidia/gm206/gr/sw_bundle_init.bin
lib/firmware/nvidia/gm206/gr/fecs_data.bin
lib/firmware/nvidia/gm206/gr/fecs_bl.bin
lib/firmware/nvidia/gm206/gr/sw_nonctx.bin
lib/firmware/nvidia/gm206/gr/sw_ctx.bin
lib/firmware/nvidia/gm206/gr/gpccs_bl.bin
lib/firmware/nvidia/gm206/gr/gpccs_inst.bin
lib/firmware/nvidia/gm206/gr/gpccs_sig.bin
lib/firmware/amdgpu
lib/firmware/amdgpu/polaris12_ce_2.bin
lib/firmware/amdgpu/polaris11_ce.bin
lib/firmware/amdgpu/raven_sdma.bin
lib/firmware/amdgpu/polaris12_me.bin
lib/firmware/amdgpu/tonga_k_smc.bin
lib/firmware/amdgpu/fiji_smc.bin
lib/firmware/amdgpu/fiji_ce.bin
lib/firmware/amdgpu/polaris10_ce.bin
lib/firmware/amdgpu/polaris11_pfp_2.bin
lib/firmware/amdgpu/topaz_ce.bin
lib/firmware/amdgpu/topaz_k_smc.bin
lib/firmware/amdgpu/polaris11_smc_sk.bin
lib/firmware/amdgpu/polaris12_uvd.bin
lib/firmware/amdgpu/tonga_mec.bin
lib/firmware/amdgpu/polaris12_mec2_2.bin
lib/firmware/amdgpu/stoney_vce.bin
lib/firmware/amdgpu/raven_asd.bin
lib/firmware/amdgpu/vega10_me.bin
lib/firmware/amdgpu/fiji_uvd.bin
lib/firmware/amdgpu/polaris11_mec2.bin
lib/firmware/amdgpu/tonga_uvd.bin
lib/firmware/amdgpu/vega10_uvd.bin
lib/firmware/amdgpu/fiji_sdma1.bin
lib/firmware/amdgpu/vega10_acg_smc.bin
lib/firmware/amdgpu/tonga_sdma.bin
lib/firmware/amdgpu/raven_ce.bin
lib/firmware/amdgpu/polaris11_me.bin
lib/firmware/amdgpu/polaris11_ce_2.bin
lib/firmware/amdgpu/tonga_pfp.bin
lib/firmware/amdgpu/polaris10_smc.bin
lib/firmware/amdgpu/polaris12_pfp_2.bin
lib/firmware/amdgpu/vega10_rlc.bin
lib/firmware/amdgpu/polaris12_mc.bin
lib/firmware/amdgpu/stoney_sdma.bin
lib/firmware/amdgpu/tonga_mc.bin
lib/firmware/amdgpu/vega10_mec2.bin
lib/firmware/amdgpu/vega10_ce.bin
lib/firmware/amdgpu/polaris11_sdma1.bin
lib/firmware/amdgpu/tonga_smc.bin
lib/firmware/amdgpu/carrizo_uvd.bin
lib/firmware/amdgpu/topaz_sdma.bin
lib/firmware/amdgpu/polaris10_pfp.bin
lib/firmware/amdgpu/polaris12_vce.bin
lib/firmware/amdgpu/fiji_mec.bin
lib/firmware/amdgpu/polaris11_vce.bin
lib/firmware/amdgpu/raven_me.bin
lib/firmware/amdgpu/stoney_rlc.bin
lib/firmware/amdgpu/fiji_rlc.bin
lib/firmware/amdgpu/stoney_me.bin
lib/firmware/amdgpu/topaz_rlc.bin
lib/firmware/amdgpu/polaris11_smc.bin
lib/firmware/amdgpu/carrizo_sdma1.bin
lib/firmware/amdgpu/fiji_sdma.bin
lib/firmware/amdgpu/raven_mec.bin
lib/firmware/amdgpu/tonga_sdma1.bin
lib/firmware/amdgpu/carrizo_sdma.bin
lib/firmware/amdgpu/polaris12_me_2.bin
lib/firmware/amdgpu/fiji_vce.bin
lib/firmware/amdgpu/fiji_pfp.bin
lib/firmware/amdgpu/polaris12_sdma1.bin
lib/firmware/amdgpu/polaris12_mec2.bin
lib/firmware/amdgpu/polaris11_uvd.bin
lib/firmware/amdgpu/polaris10_vce.bin
lib/firmware/amdgpu/tonga_rlc.bin
lib/firmware/amdgpu/polaris10_smc_sk.bin
lib/firmware/amdgpu/polaris10_pfp_2.bin
lib/firmware/amdgpu/fiji_me.bin
lib/firmware/amdgpu/polaris12_mec.bin
lib/firmware/amdgpu/polaris11_mc.bin
lib/firmware/amdgpu/polaris10_sdma.bin
lib/firmware/amdgpu/stoney_uvd.bin
lib/firmware/amdgpu/vega10_gpu_info.bin
lib/firmware/amdgpu/vega10_sdma.bin
lib/firmware/amdgpu/vega10_pfp.bin
lib/firmware/amdgpu/raven_gpu_info.bin
lib/firmware/amdgpu/topaz_pfp.bin
lib/firmware/amdgpu/carrizo_mec2.bin
lib/firmware/amdgpu/stoney_mec.bin
lib/firmware/amdgpu/polaris10_mec.bin
lib/firmware/amdgpu/topaz_me.bin
lib/firmware/amdgpu/stoney_ce.bin
lib/firmware/amdgpu/polaris10_mc.bin
lib/firmware/amdgpu/topaz_sdma1.bin
lib/firmware/amdgpu/fiji_mec2.bin
lib/firmware/amdgpu/polaris12_pfp.bin
lib/firmware/amdgpu/polaris10_ce_2.bin
lib/firmware/amdgpu/stoney_pfp.bin
lib/firmware/amdgpu/polaris10_me_2.bin
lib/firmware/amdgpu/polaris11_mec2_2.bin
lib/firmware/amdgpu/polaris11_sdma.bin
lib/firmware/amdgpu/carrizo_mec.bin
lib/firmware/amdgpu/polaris11_mec.bin
lib/firmware/amdgpu/tonga_vce.bin
lib/firmware/amdgpu/polaris11_me_2.bin
lib/firmware/amdgpu/polaris10_me.bin
lib/firmware/amdgpu/raven_vcn.bin
lib/firmware/amdgpu/raven_mec2.bin
lib/firmware/amdgpu/polaris10_uvd.bin
lib/firmware/amdgpu/carrizo_rlc.bin
lib/firmware/amdgpu/carrizo_vce.bin
lib/firmware/amdgpu/carrizo_me.bin
lib/firmware/amdgpu/vega10_smc.bin
lib/firmware/amdgpu/tonga_ce.bin
lib/firmware/amdgpu/polaris11_pfp.bin
lib/firmware/amdgpu/polaris10_rlc.bin
lib/firmware/amdgpu/carrizo_ce.bin
lib/firmware/amdgpu/topaz_mec.bin
lib/firmware/amdgpu/polaris10_mec2.bin
lib/firmware/amdgpu/vega10_sos.bin
lib/firmware/amdgpu/polaris10_mec2_2.bin
lib/firmware/amdgpu/topaz_smc.bin
lib/firmware/amdgpu/polaris12_ce.bin
lib/firmware/amdgpu/polaris10_sdma1.bin
lib/firmware/amdgpu/polaris12_sdma.bin
lib/firmware/amdgpu/vega10_asd.bin
lib/firmware/amdgpu/raven_rlc.bin
lib/firmware/amdgpu/tonga_mec2.bin
lib/firmware/amdgpu/polaris12_mec_2.bin
lib/firmware/amdgpu/polaris12_smc.bin
lib/firmware/amdgpu/tonga_me.bin
lib/firmware/amdgpu/vega10_sdma1.bin
lib/firmware/amdgpu/carrizo_pfp.bin
lib/firmware/amdgpu/raven_pfp.bin
lib/firmware/amdgpu/polaris12_rlc.bin
lib/firmware/amdgpu/polaris11_mec_2.bin
lib/firmware/amdgpu/vega10_vce.bin
lib/firmware/amdgpu/polaris11_rlc.bin
lib/firmware/amdgpu/topaz_mc.bin
lib/firmware/amdgpu/vega10_mec.bin
lib/firmware/amdgpu/polaris11_k_smc.bin
lib/firmware/amdgpu/polaris10_k_smc.bin
lib/firmware/amdgpu/polaris10_mec_2.bin
lib/firmware/advansys
lib/firmware/advansys/38C1600.bin
lib/firmware/advansys/38C0800.bin
lib/firmware/advansys/mcode.bin
lib/firmware/advansys/3550.bin
lib/firmware/tigon
lib/firmware/tigon/tg3_tso5.bin
lib/firmware/tigon/tg3_tso.bin
lib/firmware/tigon/tg3.bin
lib/firmware/ql2200_fw.bin
lib/firmware/myri10ge_ethp_z8e.dat
lib/firmware/i915
lib/firmware/i915/kbl_huc_ver02_00_1810.bin
lib/firmware/i915/kbl_guc_ver9_14.bin
lib/firmware/i915/kbl_dmc_ver1_01.bin
lib/firmware/i915/bxt_guc_ver8_7.bin
lib/firmware/i915/skl_huc_ver01_07_1398.bin
lib/firmware/i915/bxt_dmc_ver1_07.bin
lib/firmware/i915/skl_dmc_ver1_26.bin
lib/firmware/i915/skl_guc_ver6_1.bin
lib/firmware/i915/glk_dmc_ver1_04.bin
lib/firmware/i915/bxt_huc_ver01_07_1398.bin
lib/firmware/ene-ub6250
lib/firmware/ene-ub6250/ms_init.bin
lib/firmware/ene-ub6250/sd_rdwr.bin
lib/firmware/ene-ub6250/msp_rdwr.bin
lib/firmware/ene-ub6250/sd_init2.bin
lib/firmware/ene-ub6250/ms_rdwr.bin
lib/firmware/ene-ub6250/sd_init1.bin
lib/firmware/cxgb4
lib/firmware/cxgb4/t5fw.bin
lib/firmware/cxgb4/t6fw-1.16.33.0.bin
lib/firmware/cxgb4/t6fw.bin
lib/firmware/cxgb4/t4fw-1.16.33.0.bin
lib/firmware/cxgb4/t4fw.bin
lib/firmware/cxgb4/t5fw-1.16.33.0.bin
lib/firmware/ql2300_fw.bin
lib/firmware/vxge
lib/firmware/vxge/X3fw.ncf
lib/firmware/vxge/X3fw-pxe.ncf
lib/firmware/cis
lib/firmware/cis/NE2K.cis
lib/firmware/cis/tamarack.cis
lib/firmware/cis/PE-200.cis
lib/firmware/cis/PCMLM28.cis
lib/firmware/cis/LA-PCM.cis
lib/firmware/cis/PE520.cis
lib/firmware/cis/DP83903.cis
lib/firmware/bnx2
lib/firmware/bnx2/bnx2-mips-06-6.2.3.fw
lib/firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw
lib/firmware/bnx2/bnx2-mips-09-6.2.1b.fw
lib/firmware/bnx2/bnx2-rv2p-09-6.0.17.fw
lib/firmware/bnx2/bnx2-rv2p-06-6.0.15.fw
lib/firmware/mellanox
lib/firmware/mellanox/mlxsw_spectrum-13.1530.152.mfa2
sbin
sbin/fsck.ext4
sbin/rmmod
sbin/fsck
sbin/e2fsck
sbin/dmsetup
sbin/modprobe
sbin/wait-for-root
sbin/plymouthd
sbin/dumpe2fs
sbin/logsave
sbin/dhclient-script
sbin/mount.ntfs-3g
sbin/brltty-setup
sbin/mount.fuse
sbin/mount.ntfs
sbin/lvm
sbin/hwclock
sbin/vgchange
sbin/udevadm
sbin/blkid
sbin/dhclient
  • That was a blast!
  • Let us try extracting this fs using binwalk!
ramdisk: binwalk ramdisk.img 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             ASCII cpio archive (SVR4 with no CRC), file name: ".", file name length: "0x00000002", file size: "0x00000000"
112           0x70            ASCII cpio archive (SVR4 with no CRC), file name: "kernel", file name length: "0x00000007", file size: "0x00000000"
232           0xE8            ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86", file name length: "0x0000000B", file size: "0x00000000"
356           0x164           ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode", file name length: "0x00000015", file size: "0x00000000"
488           0x1E8           ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/AuthenticAMD.bin", file name length: "0x00000026", file size: "0x00006B2A"
28072         0x6DA8          ASCII cpio archive (SVR4 with no CRC), file name: "TRAILER!!!", file name length: "0x0000000B", file size: "0x00000000"
28672         0x7000          ASCII cpio archive (SVR4 with no CRC), file name: "kernel", file name length: "0x00000007", file size: "0x00000000"
28792         0x7078          ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86", file name length: "0x0000000B", file size: "0x00000000"
28916         0x70F4          ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode", file name length: "0x00000015", file size: "0x00000000"
29048         0x7178          ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/GenuineIntel.bin", file name length: "0x0000002A", file size: "0x0024CC00"
2440720       0x253E10        ASCII cpio archive (SVR4 with no CRC), file name: "TRAILER!!!", file name length: "0x0000000B", file size: "0x00000000"
2441216       0x254000        gzip compressed data, from Unix, last modified: 2019-08-25 13:33:57
26231610      0x190433A       MySQL ISAM compressed data file Version 4
42943963      0x28F45DB       VMware4 disk image

adwi@adwi:~/ALL/kernel_exploitation/exp/LinuxPure/linux/ramdisk: dd if=ramdisk.img bs=2441216 skip=1 | gunzip | cpio -tdv | head
drwxr-xr-x  12 root     root            0 Aug 25 19:03 .
drwxr-xr-x   3 root     root            0 Aug 25 19:03 conf
drwxr-xr-x   2 root     root            0 Aug 25 19:03 conf/conf.d
-rw-rw-r--   1 root     root           49 Jun 10  2018 conf/conf.d/resume
-rw-r--r--   1 root     root           16 Aug 25 19:03 conf/arch.conf
-rw-r--r--   1 root     root         1647 Feb 22  2016 conf/initramfs.conf
drwxr-xr-x  10 root     root            0 Aug 25 19:03 scripts
drwxr-xr-x   2 root     root            0 Aug 25 19:03 scripts/local-premount
-rwxr-xr-x   1 root     root          226 Mar 22 03:06 scripts/local-premount/ntfs_3g
-rwxr-xr-x   1 root     root         1224 Sep 18  2018 scripts/local-premount/resume
  • While booting, I was seeing scripts/local-premount etc etc.,

Wierd thing is, cpio -idv command gave only 1 file - AuthenticAMD.bin. But the above thing is telling there are lots of things other than just that. Drivers, executables etc.,

  • I somehow need to extract the complete fs onto this folder. Wait. All this MUST be present in linux-kernel right?
ramdisk: dd if=initrd.img of=myActualInitrdImage.img.gz bs=1 skip=2441216
  • That 2441216 comes from binwalk's output.
ramdisk: dd if=ramdisk.img of=myActualInitrdImage.img.gz bs=1 skip=2441216
54383496+0 records in
54383496+0 records out
54383496 bytes (54 MB, 52 MiB) copied, 100.603 s, 541 kB/s
ramdisk: file myActualInitrdImage.img.gz 
myActualInitrdImage.img.gz: gzip compressed data, last modified: Sun Aug 25 13:33:57 2019, from Unix
ramdisk: gunzip myActualInitrdImage.img.gz 
ramdisk: ls
kernel  myActualInitrdImage.img  ramdisk.img
ramdisk: file myActualInitrdImage.img 
myActualInitrdImage.img: ASCII cpio archive (SVR4 with no CRC)
  • This file is readable. It is still not what I want.

  • Wait. I can use binwalk to extract all the contents. Let us try.

ramdisk: binwalk -e ramdisk.img 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             ASCII cpio archive (SVR4 with no CRC), file name: ".", file name length: "0x00000002", file size: "0x00000000"
112           0x70            ASCII cpio archive (SVR4 with no CRC), file name: "kernel", file name length: "0x00000007", file size: "0x00000000"
232           0xE8            ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86", file name length: "0x0000000B", file size: "0x00000000"
356           0x164           ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode", file name length: "0x00000015", file size: "0x00000000"
488           0x1E8           ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/AuthenticAMD.bin", file name length: "0x00000026", file size: "0x00006B2A"
28072         0x6DA8          ASCII cpio archive (SVR4 with no CRC), file name: "TRAILER!!!", file name length: "0x0000000B", file size: "0x00000000"
28672         0x7000          ASCII cpio archive (SVR4 with no CRC), file name: "kernel", file name length: "0x00000007", file size: "0x00000000"
28792         0x7078          ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86", file name length: "0x0000000B", file size: "0x00000000"
28916         0x70F4          ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode", file name length: "0x00000015", file size: "0x00000000"
29048         0x7178          ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/GenuineIntel.bin", file name length: "0x0000002A", file size: "0x0024CC00"
2440720       0x253E10        ASCII cpio archive (SVR4 with no CRC), file name: "TRAILER!!!", file name length: "0x0000000B", file size: "0x00000000"
2441216       0x254000        gzip compressed data, from Unix, last modified: 2019-08-25 13:33:57
26231610      0x190433A       MySQL ISAM compressed data file Version 4
42943963      0x28F45DB       VMware4 disk image
  • The extracted directory has the following contents.
ramdisk: ls
kernel  myActualInitrdImage.img  ramdisk.img  _ramdisk.img.extracted
ramdisk: cd _ramdisk.img.extracted
ramdisk/_ramdisk.img.extracted: ls
0.cpio  254000  7000.cpio  cpio-root
  • The file 254000 is the exact same as myActualInitrdImage.img we got in the previous step.
  • Got it bitch!
ramdisk/_ramdisk.img.extracted: cpio -idv < 0.cpio 
.
kernel
kernel/x86
kernel/x86/microcode
kernel/x86/microcode/AuthenticAMD.bin
56 blocks
ramdisk/_ramdisk.img.extracted: cpio -idv < 7000.cpio 
kernel
kernel/x86
kernel/x86/microcode
kernel/x86/microcode/GenuineIntel.bin
4712 blocks
  • And the beast!
ramdisk/_ramdisk.img.extracted: cpio -idv < 254000
.
conf
conf/conf.d
conf/conf.d/resume
conf/arch.conf
conf/initramfs.conf
scripts
scripts/local-premount
.
.
.
sbin/udevadm
sbin/blkid
sbin/dhclient
302354 blocks
  • Take a look at the contents.
ramdisk/_ramdisk.img.extracted: ls
0.cpio  254000  7000.cpio  bin  conf  cpio-root  etc  init  kernel  lib  lib64  run  sbin  scripts  usr  var
  • And there they are!!!

  • So, this is what ramdisk.img has.

ramdisk/_ramdisk.img.extracted: mv bin conf etc/ init lib lib64 run sbin scripts/ usr var actualInitRamFs/
ramdisk/_ramdisk.img.extracted: ls
0.cpio  254000  7000.cpio  actualInitRamFs  cpio-root  kernel
  • Let us get into actualInitRamFs.

  • This is how it looks like.

linux/ramdisk/_ramdisk.img.extracted/actualInitRamFs: ls
bin  conf  etc  init  lib  lib64  run  sbin  scripts  usr  var

First file to explore is the init file.

1. init

  • It is a shell script.
linux/ramdisk/_ramdisk.img.extracted/actualInitRamFs: file init
init: POSIX shell script, ASCII text executable<Paste>

A code walk-through will help.

The script starts like this.

#!/bin/sh

# Default PATH differs between shells, and is not automatically exported
# by klibc dash.  Make it consistent.
export PATH=/sbin:/usr/sbin:/bin:/usr/bin

[ -d /dev ] || mkdir -m 0755 /dev
[ -d /root ] || mkdir -m 0700 /root
[ -d /sys ] || mkdir /sys
[ -d /proc ] || mkdir /proc
[ -d /tmp ] || mkdir /tmp
  • Then mount proc and sysfs.
mount -t sysfs -o nodev,noexec,nosuid sysfs /sys
mount -t proc -o nodev,noexec,nosuid proc /proc
# Some things don't work properly without /etc/mtab.
ln -sf /proc/mounts /etc/mtab
  • Great! The command-line options passed to the kernel by bootloader is parsed here. Have a look.
# Parse command line options
for x in $(cat /proc/cmdline); do
        case $x in
        init=*)
                init=${x#init=}
                ;;
        root=*)
                ROOT=${x#root=}
                if [ -z "${BOOT}" ] && [ "$ROOT" = "/dev/nfs" ]; then
                        BOOT=nfs
                fi
                ;;
.
.
.
  • The init option is noted here.
  • Continuing.
ro)
         readonly=y
         ;;
rw)
         readonly=n
         ;;
  • There is a boot cmdline option.
boot=*)
        BOOT=${x#boot=}
        ;;
  • Not sure what it does though.

  • There is an option - recovery. I think this is what recovery mode in grub takes you to.

 recovery)
                recovery=y
                ;;
  • Let us try the recovery cmdline option.
linux: qemu-system-x86_64 -kernel arch/x86_64/boot/bzImage -nographic  -append "console=ttyS0 nokaslr root=/dev/sda rw recovery" -initrd ramdisk.img -m 512 --enable-kvm -cpu host -hda rootfs_3.img
  • Not sure what happened.

  • You can even specify to boot from nfs.

root=*)
                ROOT=${x#root=}
                if [ -z "${BOOT}" ] && [ "$ROOT" = "/dev/nfs" ]; then
                        BOOT=nfs
                fi
                ;;

The kernel is loaded and running. It runs the init script. Now the main job is to mount the root filesystem. It could be present in the HDD next door or it could be NFS.

  • The following is something interesting.
# Check init is really there
if ! validate_init "$init"; then
        echo "Target filesystem doesn't have requested ${init}."
        init=
        for inittest in /sbin/init /etc/init /bin/init /bin/sh; do
                if validate_init "${inittest}"; then
                        init="$inittest"
                        break
                fi
        done
fi
  • If no init is found, do this. Something I have seen many times.
# No init on rootmount
if ! validate_init "${init}" ; then
        panic "No init found. Try passing init= bootarg."
fi

maybe_break init
  • I want to see what panic and maybe_break do. Found this which does explicitly tell what it is.

If everything does well, do this.

# Move virtual filesystems over to the real filesystem
mount -n -o move /sys ${rootmnt}/sys
mount -n -o move /proc ${rootmnt}/proc

# Chain to real filesystem
exec run-init ${drop_caps} ${rootmnt} ${init} "$@" ${recovery:+--startup-event=re
covery} <${rootmnt}/dev/console >${rootmnt}/dev/console 2>&1
  • This marks the end of init. If everything fails, it panics.
echo "Something went badly wrong in the initramfs."
panic "Please file a bug on initramfs-tools."
  • 
    
  1. /bin
linux/ramdisk/_ramdisk.img.extracted/actualInitRamFs/bin: ls
[         date           find      loadkeys  nfsmount    run-init     touch
[[        dd             fstrim    loadkmap  ntfs-3g     run-parts    tr
acpid     deallocvt      fstype    losetup   nuke        sed          true
ash       devmem         grep      ls        openvt      seq          tty
awk       df             gunzip    lzop      pidof       setfont      udevadm
basename  dmesg          gzip      lzopcat   pivot_root  setkeycodes  umount
blockdev  dnsdomainname  halt      minips    plymouth    sh           uname
busybox   du             hostname  mkdir     poweroff    sleep        uniq
cat       dumpkmap       hwclock   mkfifo    printf      sort         unlzop
chmod     echo           ifconfig  mknod     ps          stat         wc
chroot    egrep          ip        mksh      pwd         static-sh    wget
chvt      env            ipconfig  mkswap    readlink    stty         which
clear     expr           kbd_mode  mktemp    reboot      switch_root  yes
cmp       false          kill      modinfo   reset       sync         zcat
cp        fbset          kmod      more      resume      tail
cpio      fdflush        ln        mount     rm          tee
cut       fgrep          loadfont  mv        rmdir       test

  • If you do a ls -l on these files, most of the files have the same size and probably are the same. busybox is an executable which has multi-binary functionality. It can behave both as which and whereis.

  • To sum it up, it has all the basic binaries.

  1. /conf
linux/ramdisk/_ramdisk.img.extracted/actualInitRamFs/conf: ls
arch.conf  conf.d  initramfs.conf
  • Let us see what arch.conf has.
linux/ramdisk/_ramdisk.img.extracted/actualInitRamFs/conf: cat arch.conf 
DPKG_ARCH=amd64
* It is specifying the architecture.
  • Let us look at initramfs.conf. Some basic configurations. man initramfs.conf is the best place.

  • Let us look at conf.d. It has one file - resume.

linux/ramdisk/_ramdisk.img.extracted/actualInitRamFs/conf/conf.d: cat resume 
RESUME=UUID=618c0f5c-32ad-45ca-8b07-b91ef6957170
  • Not really sure of what this is. This looks like the name of the root filesystem.
  1. /etc
  • There are a lot of things. But there is one very interesting thing to note - the passwd file. It has only one entry and that is,
linux/ramdisk/_ramdisk.img.extracted/actualInitRamFs/etc: cat passwd 
root:x:0:0:root:/root:/bin/sh
  • ROOOOTTTT!!!!

  • It should be noted that everything at this level is run with root privileges. If any bug/vuln is found in software running at this level, that'll be the best!

  • There are a lot of other things, but not able to understand them clearly. I'll leave it at that now.

  1. /lib
  • It has really interesting contents.
linux/ramdisk/_ramdisk.img.extracted/actualInitRamFs/lib: ls
brltty                                libnss_files.so.2  udev
firmware                              modprobe.d         x86_64-linux-gnu
klibc-k3La8MUnuzHQ0_kG8hokcGAC0PA.so  modules
libnss_files-2.23.so                  systemd
  • Let us see what klibc-XXXX.so is.
linux/ramdisk/_ramdisk.img.extracted/actualInitRamFs/lib: readelf -h klibc-k3La8MUnuzHQ0_kG8hokcGAC0PA.so 
ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x200200
  Start of program headers:          64 (bytes into file)
  Start of section headers:          70568 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         3
  Size of section headers:           64 (bytes)
  Number of section headers:         6
  Section header string table index: 5
  • It is an executable. I'll try running it.
linux/ramdisk/_ramdisk.img.extracted/actualInitRamFs/lib: ./klibc-k3La8MUnuzHQ0_kG8hokcGAC0PA.so 
Segmentation fault (core dumped)
  • It was pretty obvious.

  • I ran on gdb. It got into an infinite loop.

  • I have saved the objdump file. Can explore it later.

  • There is a x86_64-linux-gnu directory. It is a gold mine.

linux/ramdisk/_ramdisk.img.extracted/actualInitRamFs/lib/x86_64-linux-gnu: ls
ld-2.23.so                    libmount.so.1
ld-linux-x86-64.so.2          libmount.so.1.1.0
libacl.so.1                   libm.so.6
libacl.so.1.1.0               libnss_files-2.23.so
libattr.so.1                  libnss_files.so.2
libattr.so.1.1.0              libntfs-3g.so.861
libaudit.so.1                 libntfs-3g.so.861.0.0
libaudit.so.1.0.0             libpcre.so.3
libblkid.so.1                 libpcre.so.3.13.2
libblkid.so.1.1.0             libply.so.4
libc-2.23.so                  libply.so.4.0.0
libcom_err.so.2               libply-splash-core.so.4
libcom_err.so.2.1             libply-splash-core.so.4.0.0
libc.so.6                     libply-splash-graphics.so.4
libdevmapper-event.so.1.02.1  libply-splash-graphics.so.4.0.0
libdevmapper.so.1.02.1        libpng12.so.0
libdl-2.23.so                 libpng12.so.0.54.0
libdl.so.2                    libpthread-2.23.so
libdns-export.so.162          libpthread.so.0
libdns-export.so.162.1.3      libreadline.so.5
libe2p.so.2                   libreadline.so.5.2
libe2p.so.2.3                 librt-2.23.so
libexpat.so.1                 librt.so.1
libexpat.so.1.6.0             libselinux.so.1
libext2fs.so.2                libtinfo.so.5
libext2fs.so.2.4              libtinfo.so.5.9
libglib-2.0.so.0              libudev.so.1
libglib-2.0.so.0.4800.2       libudev.so.1.6.4
libisc-export.so.160          libuuid.so.1
libisc-export.so.160.0.0      libuuid.so.1.3.0
libkmod.so.2                  libz.so.1
libkmod.so.2.3.0              libz.so.1.2.8
libm-2.23.so
  • It has all the basic libraries needed. All basic C programs can run. There is libc, librt, libpthread, libdl etc.,

  • Let us take a look at systemd directory.

linux/ramdisk/_ramdisk.img.extracted/actualInitRamFs/lib/systemd: ls
network  systemd-udevd
  • It has the systemd-udevd executable.
linux/ramdisk/_ramdisk.img.extracted/actualInitRamFs: ps -e | grep systemd
    1 ?        00:00:03 systemd
  293 ?        00:00:01 systemd-journal
  340 ?        00:00:04 systemd-udevd
 1092 ?        00:00:00 systemd-timesyn
 1200 ?        00:00:00 systemd-logind
 3207 ?        00:00:00 systemd
  • The modules directory. It has a bunch of kernel modules, their symbols etc.,
  1. /lib64 directory
  • It has only one thing - the dynamic linker - ld.so.
  1. /sbin directory. The following are its contents.
linux/ramdisk/_ramdisk.img.extracted/actualInitRamFs/sbin: ls
blkid            dmsetup   fsck.ext4  modprobe       plymouthd  wait-for-root
brltty-setup     dumpe2fs  hwclock    mount.fuse     rmmod
dhclient         e2fsck    logsave    mount.ntfs     udevadm
dhclient-script  fsck      lvm        mount.ntfs-3g  vgchange
  1. scripts directory. This has some very interesting things.
linux/ramdisk/_ramdisk.img.extracted/actualInitRamFs/scripts: ls
functions    init-premount  local        local-bottom    local-top  panic
init-bottom  init-top       local-block  local-premount  nfs
  • I remember seeing init-premount and its scripts running after init gets executed.

  • It has a LOT of shell scripts which are run during the course of boot.

  • Let me run and check again.

[    1.625349] ADWAITH: ramdisk_execute_command = /init
[    1.625350] Run /init as init process
Loading, please wait...
starting version 229
[    1.640296] random: systemd-udevd: uninitialized urandom read (16 bytes read)
[    1.642387] random: udevadm: uninitialized urandom read (16 bytes read)
[    1.643743] random: systemd-udevd: uninitialized urandom read (16 bytes read)
[    1.751712] e1000 0000:00:03.0 enp0s3: renamed from eth0
[    1.793865] ata_id (137) used greatest stack depth: 13800 bytes left
[    1.826153] systemd-udevd (131) used greatest stack depth: 13384 bytes left
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... [    2.135062] tsc: Refined TSC clocksource calibration: 2194.933 MHz
[    2.138014] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x1fa3802ea89, max_idle_ns: 440795239486 ns
[    2.143972] clocksource: Switched to clocksource tsc
[    2.211773] input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input3
done.
Begin: Will now check root file system ... fsck from util-linux 2.27.1
[    6.860569] random: fast init done
[/sbin/fsck.ext4 (1) -- /dev/sda] fsck.ext4 -a -C0 /dev/sda 
/dev/sda: recovering journal
/dev/sda: clean, 26/1310720 files, 126306/5242880 blocks
done.
[    6.993137] EXT4-fs (sda): mounted filesystem with ordered data mode. Opts: (null)
done.
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... done.
Present in /s
  • It says /scripts/init-premount, /scripts/local-premount, /scripts/local-bottom, /scripts/init-bottom being run. They might internally calling other scripts too.

  • I can guess it is doing lot of hardwork!

  • There is one interesting shell script - local. It has a bunch of functions which helps in Local filesystem mounting.

  • It says /scripts/local-bottom and local-premount - these are functions present in this local script file.

Basically this has all the scripts which helps booting the root/network filesystem.

I'll dig deep later.

The /usr and /var are 2 other directories. Not sure what they are used for.

From this, I got to know that the initramfs has a lot of stuff - the shared libraries, executables, shell, necessary shell-scripts and more.

This helps in mounting the root filesystem.

In the /init script, I searched for BOOT variable. There, BOOT is being set to local, nfs. And /script/${BOOT} is being executed.

That is about initramfs.

6. initramfs had some firmware in it. Some insight on it.

There is one thing I am really interested in - firmware - present in /lib/firmware directory. Take a look.

linux/ramdisk/_ramdisk.img.extracted/actualInitRamFs/lib/firmware: ls
3com               ene-ub6250                 ql2100_fw.bin
acenic             i915                       ql2200_fw.bin
adaptec            isci                       ql2300_fw.bin
advansys           liquidio                   ql2322_fw.bin
amdgpu             mellanox                   ql2400_fw.bin
bnx2               myri10ge_ethp_z8e.dat      ql2500_fw.bin
bnx2x              myri10ge_eth_z8e.dat       qlogic
cbfw-3.2.5.1.bin   myri10ge_rss_ethp_z8e.dat  radeon
cis                myri10ge_rss_eth_z8e.dat   rtl_nic
ct2fw-3.2.5.1.bin  netronome                  slicoss
ctfw-3.2.5.1.bin   nvidia                     sun
cxgb3              ositech                    tehuti
cxgb4              phanfw.bin                 tigon
e100               qed                        vxge

They are all just binary files. What they do - not sure. I downloaded all linux firmware from here.

Wow! A lot of firmware. Now I want to run this firmware.

I don't know if they are even x86 instructions or not. I don't know what firmware is at this point.

Apart from thiss firmware, there was one more place where a piece of firmware wass found.

linux/ramdisk/_ramdisk.img.extracted/cpio-root/kernel/x86/microcode: ls -l
total 28
-rw-r--r-- 1 adwi adwi 27434 Aug 29 11:59 AuthenticAMD.bin
  • Because it is AMD related, I suspect it to be x86/x86_64 instructions, not sure. I'll try disassembling the complete content. Let us see what we get.

Found this resource which talks about microcode.

Finally found a proper paper which talks about Reverse Engineering x86 Processor Microcode. Let me read this paper.

  • I skimmed through the paper. It is too interesting. They have clearly explained what microcode is and what that .bin file contain. 2-3 more detailed reads would be needed to clearly understand what then did.

Security Analysis of x86 Processor Microcode - another paper which discusses how good/bad the concept of microcode is, how secure microcode updates are etc., Interesting part is, they have released a tool to parse microcode updates - something I am really interesting in.

Link to microparse-the tool

Didn't really get any insight. I am still confused with what firmware is, it does.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment