Help us understand the problem. What is going on with this article?

Linux Kernelのソースコードを読む - ソースコードの準備 -

この記事を書くモチベーション

Linuxの勉強をしたくなったので、まずはLinux Kernelのソースコードリーディング環境を整えます。

環境

手元にあったLinuxを使います。AWSのAmazon Linuxです。
カーネルのバージョンは、4.9.119-44.140.amzn1.x86_64 でした。

やったこと

カーネルソースのダウンロードと展開

$ rpm -qa | grep kernel
kernel-4.9.119-44.140.amzn1.x86_64
kernel-devel-4.9.93-41.60.amzn1.x86_64
kernel-4.9.76-3.78.amzn1.x86_64
kernel-tools-4.9.119-44.140.amzn1.x86_64
kernel-devel-4.9.119-44.140.amzn1.x86_64
kernel-4.9.93-41.60.amzn1.x86_64
kernel-headers-4.9.119-44.140.amzn1.x86_64
$
$ uname -a
Linux ip-172-21-0-185 4.9.119-44.140.amzn1.x86_64 #1 SMP Fri Aug 10 19:17:29 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

kernel-4.9.119-44.140.amzn1.x86_64 のソースをダウンロードすることにします。Amazon Linuxはyumが使えるので、yumdownloaderを使用します。

$ sudo yumdownloader --source kernel kernel-4.9.119-44.140.amzn1

ダウンロードした kernel-4.9.119-44.140.amzn1.src.rpm は、rpm2cpio でcpioにしてから展開、または、rpmコマンドでインストールします。今回はrpm2cpioにしました。

$ sudo sh -c "rpm2cpio kernel-4.9.119-44.140.amzn1.src.rpm | cpio -id"

展開したらこんな感じです。

$ ls
0001-kbuild-AFTER_LINK.patch                                     0078-x86-cpu-common-Provide-detect_ht_early.patch
0002-lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch  0079-x86-cpu-topology-Provide-detect_extended_topology_ea.patch
0003-die-floppy-die.patch                                        0080-x86-cpu-intel-Evaluate-smp_num_siblings-early.patch
0004-no-pcspkr-modalias.patch                                    0081-x86-CPU-AMD-Do-not-check-CPUID-max-ext-level-before-.patch
0005-Kbuild-Add-an-option-to-enable-GCC-VTA.patch                0082-x86-cpu-AMD-Evaluate-smp_num_siblings-early.patch
0006-crash-driver.patch                                          0083-x86-apic-Ignore-secondary-threads-if-nosmt-force.patch
0007-watchdog-Disable-watchdog-on-virtual-machines.patch         0084-x86-speculation-l1tf-Extend-64bit-swap-file-size-lim.patch
0008-scsi-sd_revalidate_disk-prevent-NULL-ptr-deref.patch        0085-x86-cpufeatures-Add-detection-of-L1D-cache-flush-sup.patch
0009-bump-the-default-TTL-to-255.patch                           0086-x86-CPU-AMD-Move-TOPOEXT-reenablement-before-reading.patch
0010-bump-default-tcp_wmem-from-16KB-to-20KB.patch               0087-x86-speculation-l1tf-Protect-PAE-swap-entries-agains.patch
0011-force-perf-to-use-usr-bin-python-instead-of-usr-bin-.patch  0088-x86-speculation-l1tf-Fix-up-pte-pfn-conversion-for-P.patch
0012-drivers-introduce-AMAZON_DRIVER_UPDATES.patch               0089-Revert-x86-apic-Ignore-secondary-threads-if-nosmt-fo.patch
0013-drivers-amazon-add-network-device-drivers-support.patch     0090-cpu-hotplug-Boot-HT-siblings-at-least-once.patch
0014-drivers-amazon-introduce-AMAZON_IXGBEVF.patch               0091-x86-KVM-Warn-user-if-KVM-is-loaded-SMT-and-L1TF-CPU-.patch
0015-drivers-amazon-import-out-of-tree-ixgbevf-4.0.3.patch       0092-x86-KVM-VMX-Add-module-argument-for-L1TF-mitigation.patch
0016-drivers-amazon-ixgbevf-update-Makefile.patch                0093-x86-KVM-VMX-Add-L1D-flush-algorithm.patch
0017-drivers-amazon-introduce-AMAZON_ENA_ETHERNET.patch          0094-x86-KVM-VMX-Add-L1D-MSR-based-flush.patch
0018-drivers-amazon-import-out-of-tree-ENA-driver-1.1.3.patch    0095-x86-KVM-VMX-Add-L1D-flush-logic.patch
0019-drivers-amazon-ena-update-Makefile.patch                    0096-kvm-nVMX-Update-MSR-load-counts-on-a-VMCS-switch.patch
0020-drivers-amazon-add-block-device-drivers-support.patch       0097-x86-KVM-VMX-Split-the-VMX-MSR-LOAD-structures-to-hav.patch
0021-drivers-amazon-introduce-AMAZON_XEN_BLKDEV_FRONTEND.patch   0098-x86-KVM-VMX-Add-find_msr-helper-function.patch
0022-drivers-amazon-import-xen-blkfront-from-the-tree.patch      0099-x86-KVM-VMX-Separate-the-VMX-AUTOLOAD-guest-host-num.patch
0023-drivers-amazon-xen-blkfront-add-persistent_grants-pa.patch  0100-x86-KVM-VMX-Extend-add_atomic_switch_msr-to-allow-VM.patch
0024-drivers-amazon-xen-blkfront-resurrect-request-based-.patch  0101-x86-KVM-VMX-Use-MSR-save-list-for-IA32_FLUSH_CMD-if-.patch
0025-xen-pvhvm-unplug-block-deivces-driven-by-out-of-tree.patch  0102-cpu-hotplug-Online-siblings-when-SMT-control-is-turn.patch
0026-drivers-amazon-introduce-AMAZON_GPU_MODULES.patch           0103-x86-litf-Introduce-vmx-status-variable.patch
0027-drivers-amazon-xen-blkfront-add-uevent-for-size-chan.patch  0104-x86-kvm-Drop-L1TF-MSR-list-approach.patch
0028-block-relax-check-on-sg-gap.patch                           0105-x86-l1tf-Handle-EPT-disabled-state-proper.patch
0029-block-fix-bio_will_gap-for-first-bvec-with-offset.patch     0106-x86-kvm-Move-l1tf-setup-function.patch
0030-drivers-amazon-ena-update-to-1.2.0.patch                    0107-x86-kvm-Add-static-key-for-flush-always.patch
0031-drivers-amazon-xen-blkfront-introduce-macro-to-check.patch  0108-x86-kvm-Serialize-L1D-flush-parameter-setter.patch
0032-drivers-amazon-xen-blkfront-convert-to-use-blkfront_.patch  0109-x86-kvm-Allow-runtime-control-of-L1D-flush.patch
0033-drivers-amazon-xen-blkfront-resurrect-per-device-loc.patch  0110-cpu-hotplug-Expose-SMT-control-init-function.patch
0034-drivers-amazon-xen-blkfront-empty-the-request-queue-.patch  0111-cpu-hotplug-Set-CPU_SMT_NOT_SUPPORTED-early.patch
0035-drivers-amazon-xen-blkfront-use-a-right-index-when-c.patch  0112-x86-bugs-kvm-Introduce-boot-time-control-of-L1TF-mit.patch
0036-xen-manage-keep-track-of-the-on-going-suspend-mode.patch    0113-Documentation-Add-section-about-CPU-vulnerabilities.patch
0037-xen-manage-introduce-helper-function-to-know-the-on-.patch  0114-x86-KVM-VMX-Initialize-the-vmx_l1d_flush_pages-conte.patch
0038-xenbus-add-freeze-thaw-restore-callbacks-support.patch      0115-Documentation-l1tf-Fix-typos.patch
0039-x86-xen-decouple-shared_info-mapping-from-xen_hvm_in.patch  0116-cpu-hotplug-detect-SMT-disabled-by-BIOS.patch
0040-x86-xen-add-system-core-suspend-and-resume-callbacks.patch  0117-x86-KVM-VMX-Don-t-set-l1tf_flush_l1d-to-true-from-vm.patch
0041-drivers-amazon-xen-blkfront-add-callbacks-for-PM-sus.patch  0118-x86-KVM-VMX-Replace-vmx_l1d_flush_always-with-vmx_l1.patch
0042-xen-netfront-add-callbacks-for-PM-suspend-and-hibern.patch  0119-x86-KVM-VMX-Move-the-l1tf_flush_l1d-test-to-vmx_l1d_.patch
0043-drivers-amazon-ixgbevf-use-pci-drvdata-correctly-in-.patch  0120-x86-irq-Demote-irq_cpustat_t-__softirq_pending-to-u1.patch
0044-xen-time-introduce-xen_-save-restore-_steal_clock.patch     0121-x86-KVM-VMX-Introduce-per-host-cpu-analogue-of-l1tf_.patch
0045-x86-xen-save-and-restore-steal-clock.patch                  0122-x86-Don-t-include-linux-irq.h-from-asm-hardirq.h.patch
0046-xen-events-add-xen_shutdown_pirqs-helper-function.patch     0123-x86-irq-Let-interrupt-handlers-set-kvm_cpu_l1tf_flus.patch
0047-x86-xen-close-event-channels-for-PIRQs-in-system-cor.patch  0124-x86-KVM-VMX-Don-t-set-l1tf_flush_l1d-from-vmx_handle.patch
0048-drivers-amazon-ena-update-to-1.3.0.patch                    0125-Documentation-l1tf-Remove-Yonah-processors-from-not-.patch
0049-nvme-update-timeout-module-parameter-type.patch             0126-KVM-x86-Add-a-framework-for-supporting-MSR-based-fea.patch
0050-drivers-amazon-xen-blkfront-ensure-no-reqs-rsps-in-r.patch  0127-KVM-SVM-Add-MSR-based-feature-support-for-serializin.patch
0051-xen-netfront-add-longer-default-freeze-timeout-as-a-.patch  0128-KVM-X86-Introduce-kvm_get_msr_feature.patch
0052-drivers-amazon-ena-update-to-1.4.0.patch                    0129-KVM-X86-Allow-userspace-to-define-the-microcode-vers.patch
0053-PM-hibernate-update-the-resume-offset-on-SNAPSHOT_SE.patch  0130-KVM-VMX-support-MSR_IA32_ARCH_CAPABILITIES-as-a-feat.patch
0054-Not-for-upstream-PM-hibernate-Speed-up-hibernation-b.patch  0131-x86-speculation-Simplify-sysfs-report-of-VMX-L1TF-vu.patch
0055-ACPI-SPCR-Make-SPCR-available-to-x86.patch                  0132-x86-speculation-Use-ARCH_CAPABILITIES-to-skip-L1D-fl.patch
0056-locking-paravirt-Use-new-static-key-for-controlling-.patch  0133-KVM-VMX-Tell-the-nested-hypervisor-to-skip-L1D-flush.patch
0057-KVM-Introduce-paravirtualization-hints-and-KVM_HINTS.patch  0134-cpu-hotplug-Fix-SMT-supported-evaluation.patch
0058-KVM-X86-Choose-qspinlock-when-dedicated-physical-CPU.patch  0135-x86-speculation-l1tf-Invert-all-not-present-mappings.patch
0059-x86-paravirt-Set-up-the-virt_spin_lock_key-after-sta.patch  0136-x86-speculation-l1tf-Make-pmd-pud_mknotpresent-inver.patch
0060-KVM-X86-Fix-setup-the-virt_spin_lock_key-before-stat.patch  0137-x86-mm-pat-Make-set_memory_np-L1TF-safe.patch
0061-x86-speculation-l1tf-Increase-32bit-PAE-__PHYSICAL_P.patch  0138-x86-mm-kmmio-Make-the-tracer-robust-against-L1TF.patch
0062-mm-x86-move-_PAGE_SWP_SOFT_DIRTY-from-bit-7-to-bit-1.patch  0139-tools-headers-Synchronise-x86-cpufeatures.h-for-L1TF.patch
0063-x86-speculation-l1tf-Change-order-of-offset-type-in-.patch  config-generic
0064-x86-speculation-l1tf-Protect-swap-entries-against-L1.patch  config-x86_32-generic
0065-x86-speculation-l1tf-Protect-PROT_NONE-PTEs-against-.patch  config-x86_64-generic
0066-x86-speculation-l1tf-Make-sure-the-first-page-is-alw.patch  cpupower.config
0067-x86-speculation-l1tf-Add-sysfs-reporting-for-l1tf.patch     cpupower.init
0068-x86-speculation-l1tf-Disallow-non-privileged-high-MM.patch  kconfig.py
0069-x86-speculation-l1tf-Limit-swap-file-size-to-MAX_PA-.patch  kernel.spec
0070-x86-bugs-Move-the-l1tf-function-and-define-pr_fmt-pr.patch  linux-4.9.119
0071-x86-smp-Provide-topology_is_primary_thread.patch            linux-4.9.119-patches.tar
0072-x86-topology-Provide-topology_smt_supported.patch           linux-4.9.119.tar
0073-cpu-hotplug-Make-bringup-teardown-of-smp-threads-sym.patch  Makefile.config
0074-cpu-hotplug-Split-do_cpu_down.patch                         mod-extra.list
0075-cpu-hotplug-Provide-knobs-to-control-SMT.patch              mod-extra.sh
0076-x86-cpu-Remove-the-pointless-CPU-printout.patch             mod-extra-sign.sh
0077-x86-cpu-AMD-Remove-the-pointless-detect_ht-call.patch       x509.genkey
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした