Kernel

在一台機器上建構核心,在另一台機器上安裝

  • July 24, 2019

我想在我的主機上建構我的 Linux 核心並在我的 VWware 虛擬機中使用它。他們現在都使用相同的 Ubuntu 核心。

在我的主機上,我做makemake configure. 那麼,在我這樣做之前,我應該將哪些文件複製到目標機器make modules_installmake install

我還需要做什麼?

做到這一點的“最佳”方法是將其建構為一個包。然後,您可以將其分發並安裝到任何執行相同(主要)版本的 Ubuntu 機器上。

為了從原始碼建構 vanilla 核心,有一個工具make-kpkg可以將核心建構為包。其他主要優點:只需刪除包即可輕鬆還原,包管理自動觸發,例如重建 DKMS 等。

核心/編譯替代建構方法上的 Ubuntu 社區 wiki提供了一些有關如何執行此操作的步驟。

基本上,它與從上游文件建構核心相同,但不是make盲目地在系統上安裝它,而是讓它在“假根”環境中建構並從中製作一個包,使用

fakeroot make-kpkg --initrd --append-to-version=-some-string-here \
 kernel-image kernel-headers

這應該會生成二進製.deb文件,您可以將其傳輸到其他機器並使用

dpkg -i mykernelfile-image.deb mykernelfile-headers.deb ...

我會對 gertvdijk 的回答發表評論,但我沒有足夠的代表發表評論。

既然 rpm-pkg、deb-pkg、snap-pkg 是 make 的可行目標,我不知道這些是否有必要。

所以對於 Ubuntu,我想你想使用

make bindeb-pkg

make deb-pkg如果您需要包含原始碼,請使用)

在 RPM 發行版(RHEL、Fedora、CentOS)上,你會使用 rpm-pkg/binrpm-pkg

make help有關所有選項,請參見核心打包部分

Kernel packaging:
   rpm-pkg             - Build both source and binary RPM kernel packages
   binrpm-pkg          - Build only the binary kernel RPM package
   deb-pkg             - Build both source and binary deb kernel packages
   bindeb-pkg          - Build only the binary kernel deb package
   snap-pkg            - Build only the binary kernel snap package (will connect to external hosts)
   tar-pkg             - Build the kernel as an uncompressed tarball
   targz-pkg           - Build the kernel as a gzip compressed tarball
   tarbz2-pkg          - Build the kernel as a bzip2 compressed tarball
   tarxz-pkg           - Build the kernel as a xz compressed tarball
   perf-tar-src-pkg    - Build perf-5.2.0.tar source tarball
   perf-targz-src-pkg  - Build perf-5.2.0.tar.gz source tarball
   perf-tarbz2-src-pkg - Build perf-5.2.0.tar.bz2 source tarball
   perf-tarxz-src-pkg  - Build perf-5.2.0.tar.xz source tarball

引用自:https://unix.stackexchange.com/questions/59257