Debian / Ubuntu Linux 核心編譯個人筆記 [論壇 - Ubuntu 非官方發行版討論]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊

(1) 2 »


Debian / Ubuntu Linux 核心編譯個人筆記
會員四級
註冊日期:
2015/9/29 21:19
所屬群組:
已註冊使用者
等級: 16
HP : 0 / 380
MP : 100 / 2953
EXP: 22
離線
==================================
Debian / Ubuntu Linux 核心編譯
==================================

Debian sid / Ubuntu xenial

編譯Linux核心安裝所需的套件
$ sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils kernel-package

下載Linux核心原始碼
$ wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.5.tar.xz
$ tar xvf linux-4.5.tar.xz

設定Linux核心
$ cd linux-4.5
### 清除先前編譯的暫存檔案(新解開的壓縮檔可跳過此步驟)
$ sudo make mrproper

### 載入系統核心設定
$ cp /boot/config-$(uname -r) .config

修改核心功能與驅動程式設定項目
$ make menuconfig

編譯Linux核心並建立DEB套件包
$ make-kpkg clean
$ sudo fakeroot make-kpkg --initrd kernel_image kernel_headers

$ sudo fakeroot make-kpkg --initrd --revision=4.4 kernel_image kernel_headers

安裝核心
$ sudo dpkg -i linux-image-*.deb
$ sudo dpkg -i linux-headers-*.deb

==================================
選項說明
==================================
編譯選項說明
--initrd : 建立 initrd.
--revision : 設定自訂的修訂版本(可免).

核心功能與驅動程式設定說明
詳細說明
http://linux.vbird.org/linux_basic/0540kernel.php
[ * ] < * > 則表示編譯進核心;若為 < M > 則表示編譯成模組.
『肯定』核心一定要的功能,直接編譯進核心內;
『可能在未來會用到』的功能,那麼盡量編譯成為模組;
『不知道那個東西要幹嘛的,看 help 也看不懂』的話,那麼就保留預設值,或者將他編譯成為模組;

重點設定
###############################
### General setup
###############################
Ubuntu的話 裡面會看到 Ubuntu 4.4.0-11.26-generic 4.4.4 名稱可隨意修改
也可以修改原始碼目錄內複製過來的「.config」

讓.config這個核心功能列表可以寫入實際的核心檔案中
< M > Kernel .config support

網路謠言雙核心選15實際我也不知.
(15) Kernel log buffer size (16 => 64KB, 17 => 128KB)

###############################
### Processor type and features
###############################
提供 Linux 虛擬化功能
--- Linux guest support --->
CPU 支援 Intel VT 或 AMD-V 以下項目選取
[ * ] Enable paravirtualization code
[ * ] Paravirtualization layer for spinlocks
[ * ] Xen guest support
[ * ] KVM Guest support (including kvmclock)
[ * ] Paravirtual steal time accounting

選擇處理器架構
Processor family (Generic-x86-64) --->
如果處理器沒在清單內
Intel P4 / Netburst 是舊款 32位元處理器
Generic-x86-64 是現在的64位元處理器
我的是Haswell 64位元處理器,只能選Generic-x86-64
( ) Opteron/Athlon64/Hammer/K8
( ) Intel P4 / older Netburst based Xeon
( ) Core 2/newer Xeon
( ) Intel Atom
( X ) Generic-x86-64

多核心支援
[ * ] Enable Maximum number of SMP Processors and NUMA Nodes
[ * ] Multi-core scheduler support

核心類型
Preemption Model (Voluntary Kernel Preemption
如果要編譯成伺服器核心就選Server.
沒架Server就選 Desktop.
( ) No Forced Preemption (Server)
( X ) Voluntary Kernel Preemption (Desktop)
( ) Preemptible Kernel (Low-Latency Desktop)

Timer frequency (1000 HZ)
預設250Hz
Server 調整 300Hz
教新的CPU調整到1000Hz性能比較好

###############################
### Power management and ACPI options
###############################
CPU Frequency scaling --->
CPU變頻省電技術把「 M 」改成「 * 」編譯到核心.
[ * ] CPU frequency translation statistics details
< * > 'powersave' governor
< * > 'userspace' governor for userspace frequency scaling
< * > 'conservative' cpufreq governor

Default CPUFreq governor (conservative) --->

performance 將CPU頻率設定在支持的最高頻率,而不動態調節。
powersave 將CPU頻率設置爲最低
ondemand 快速動態調整CPU頻率, Pentuim M的CPU可以使用
conservative 與ondemand不同,平滑地調整CPU頻率,適合于用電池工作時。
userspace 使用者模式,也就是長期以來都在用的那個模式。可以通過手動編輯配置文件進行

吃電池的選擇 conservative 比較省電.

###############################
### Bus options (PCI etc.)
###############################
可選
[ * ] Support for PCI Hotplug
如果沒有PCI熱插拔裝置,去掉.

###############################
### Device Drivers
###############################
可選
大致上預設按預設, 有問題再詳細增減.

###############################
### File systems
###############################

< * > The Extended 4 (ext4) filesystem
[ * ] Use ext4 for ext2 file systems
[ * ] Ext4 POSIX Access Control Lists
[ * ] Ext4 Security Labels
< M > Ext4 Encryption

CD-ROM/DVD Filesystems --->
< M > ISO 9660 CDROM file system support
[ * ] Microsoft Joliet CDROM extensions
[ * ] Transparent decompression extension
< M > UDF file system support

使用Win與Lin雙系統
DOS/FAT/NT Filesystems --->
< M > MSDOS fs support
< * > VFAT (Windows-95) fs support
< M > NTFS file system support
[ * ] NTFS write support

###############################
### Virtualization
###############################
虛擬化與函式庫
使linux上虛擬機性能大幅度提高.
CPU 要有支援 Intel VT 或 AMD-V
< M > Kernel-based Virtual Machine (KVM) support
< M > KVM for Intel processors support
< M > KVM for AMD processors support
[ * ] Audit KVM MMU
[ * ] KVM legacy PCI device assignment support (DEPRECATED)
< M > Host kernel accelerator for virtio net

2016/3/26 20:21
應用擴展 工具箱
回覆: Debian / Ubuntu Linux 核心編譯個人筆記
會員四級
註冊日期:
2015/9/29 21:19
所屬群組:
已註冊使用者
等級: 16
HP : 0 / 380
MP : 100 / 2953
EXP: 22
離線
LLVM(clang) 編譯 Linux 核心

Debian sid / Ubuntu xenial

安装必要的工具软件
$ sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils kernel-package patch libncurses5-dev
$ sudo apt-get install llvm clang

debian 套件版本太舊無法編譯
建議添加 ubuntu sources 安裝 llvm 1.38 clang-3.8
$ sudo leafpad /etc/apt/sources.list
deb http://free.nchc.org.tw/linuxmint/packages sarah main upstream import backport
deb http://ftp.nsysu.edu.tw/Ubuntu/ubuntu xenial main restricted universe multiverse
deb http://ftp.nsysu.edu.tw/Ubuntu/ubuntu xenial-updates main restricted universe multiverse
deb http://ftp.nsysu.edu.tw/Ubuntu/ubuntu xenial-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://archive.canonical.com/ubuntu/ xenial partner

$ sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5
$ sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32
$ sudo apt-get update


下載Linux核心原始碼
$ wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.5.tar.xz
$ tar xvf linux-4.5.tar.xz

LLVM Patch
$ wget http://buildbot.llvm.linuxfoundation.org/configs/x86_64/kernel-patches.tar.bz2
$ cd linux-4.5
$ bzcat ../kernel-patches.tar.bz2 | patch -p1

LLVM Patch 錯誤修正
以linux-4.5為例:
linux-4.5/Makefile.rej
Hunk #2 FAILED at 667.
Hunk #1 FAILED at 1260.
linux-4.5/drivers/md/raid10.c.rej
Hunk #1 FAILED at 711.

/drivers/md/raid10.c 不必理會,因為新版原始碼已經取消掉Patch替換項目.
/Makefile
Hunk #2 FAILED at 667 也不必理會因為新版原始碼已經加入支援clang項目.
Hunk #1 FAILED at 1260 錯誤修復
linux-4.5/Makefile
搜尋 @echo ' dir/file.[ois]
	@echo  '  dir/file.[ois]  - Build specified target only'
	@echo  '  dir/file.lst    - Build specified mixed source/assembly target only'
改為
	@echo  '  dir/file.[ois]  - Build specified target only'
	@echo  '  dir/file.ll     - Build the LLVM bitcode file'
	@echo  '                    (requires compiler support for LLVM bitcode generation)'
	@echo  '  dir/file.lst    - Build specified mixed source/assembly target only'


設定Linux核心
建議直接 make menuconfig 手動修改
$ cd linux-4.5
使用預設組態
$ make defconfig

根據硬體架構載入設定(精簡化驅動,只包含支援你電腦的驅動)
$ make localmodconfig
選單界面編輯
$ make menuconfig

編譯原始碼
$ make HOSTCC=clang CC=clang
多核心處理器加速編譯參數: 雙核心添加 -j2 四核心添加 -j4 ....
雙核心make
$ make -j2 HOSTCC=clang CC=clang

打包為DEB
$ make deb-pkg
雙核心make
$ make -j2 deb-pkg

2016/3/27 11:03
應用擴展 工具箱
回覆: Debian / Ubuntu Linux 核心編譯個人筆記
會員四級
註冊日期:
2015/9/29 21:19
所屬群組:
已註冊使用者
等級: 16
HP : 0 / 380
MP : 100 / 2953
EXP: 22
離線
Ubuntu / Debian 編譯RT核心

必要工具同上

RT補釘只有4.4.4版, 為避免補釘錯誤, 編譯4.4.4核心比較保險.

下載Linux核心原始碼
$ wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.4.tar.xz
下載RT補釘
$ wget https://www.kernel.org/pub/linux/kernel/projects/rt/4.4/patch-4.4.4-rt11.patch.gz

解壓縮Linux原始碼
$ tar xvf linux-4.4.4.tar.xz
解壓縮RT補釘
$ gunzip patch-4.4.4-rt11.patch.gz

RT補釘
$ cd linux-4.4.4
$ patch -p1 < ../patch-4.4.4-rt11.patch

設定Linux核心
$ cd linux-4.4.4
使用預設組態
$ make defconfig

根據硬體架構載入設定(精簡化驅動,只包含支援你電腦的驅動)
$ make localmodconfig
選單界面編輯
$ make menuconfig

RT選項: 選擇「Fully Preemptible Kernel (RT)」
Processor type and features  --->
	Preemption Model
		( X ) Fully Preemptible Kernel (RT)


去除 Staging drivers
Device Drivers  ---> 
	[   ] Staging drivers  ----


其他設定同前...

編譯並打包DEB
$ sudo fakeroot make-kpkg --initrd --revision=4.4.4-0 kernel_image kernel_headers

如要用LLVM編譯, 跟前面一樣打LLVM補釘

2016/3/28 0:43
應用擴展 工具箱
回覆: Debian / Ubuntu Linux 核心編譯個人筆記
會員四級
註冊日期:
2015/9/29 21:19
所屬群組:
已註冊使用者
等級: 16
HP : 0 / 380
MP : 100 / 2953
EXP: 22
離線
====================
編譯 Ubuntu 官方版核心
====================

Linux Mint 18 (Ubuntu xenial)

編譯Linux核心安裝所需的套件
$ sudo apt-get install git fakeroot build-essential libncurses5-dev xz-utils kernel-package libssl-dev zlib1g-dev debhelper kernel-wedge gawk

下載原始碼與補丁
$ wget http://archive.ubuntu.com/ubuntu/pool/main/l/linux/linux_4.4.0.orig.tar.gz
$ wget http://archive.ubuntu.com/ubuntu/pool/main/l/linux/linux_4.4.0-21.37.diff.gz
解壓縮
$ tar xvf linux_4.4.0.orig.tar.gz
$ gunzip linux_4.4.0-21.37.diff.gz

Ubuntu 官方版原始碼補丁
$ mv linux-4.4 linux-4.4.0
$ patch -p0 -i linux_4.4.0-21.37.diff

設定檔案權限
$ cd linux-4.4.0
$ chmod a+x debian/rules
$ chmod a+x debian/scripts/*
$ chmod a+x debian/scripts/misc/*

設定核心功能與驅動程式
設定方法同前
$ fakeroot debian/rules clean
$ fakeroot debian/rules editconfigs

編譯核心
$ fakeroot debian/rules clean
$ fakeroot debian/rules binary-headers binary-generic

只須保留 linux-image-4.4.0-21-generic 和 linux-image-extra-4.4.0-21-generic 套件

如系統核心版號與編譯核心的版號一樣,必須使用Live系統或電腦上其他Linux以chroot方式替換.

替換核心
# apt-get --purge remove linux-image-4.4.0-21-generic linux-image-extra-4.4.0-21-generic
將套件複製到 chroot系統/tmp
# cd /tmp
# dpkg -i linux-image-4.4.0-21-generic_4.4.0-21.37_amd64.deb
# dpkg -i linux-image-extra-4.4.0-21-generic_4.4.0-21.37_amd64.deb


編譯全部套件
$ debuild -e DEBIAN_KERNEL_JOBS=$(nproc)

====================
編譯 Debian 官方版核心
====================

LMDE (Debian sid)

編譯Linux核心安裝所需的套件
$ sudo apt-get install git fakeroot build-essential libncurses5-dev xz-utils kernel-package libssl-dev zlib1g-dev debhelper kernel-wedge gawk rsync quilt devscripts

下載Debian官方版原始碼
$ wget http://http.debian.net/debian/pool/main/l/linux/linux_4.4.6.orig.tar.xz

解壓縮原始碼
$ tar Jxvf linux_4.4.6.orig.tar.xz
$ cd linux-4.4.6

下載Debian官版補丁
$ wget http://http.debian.net/debian/pool/main/l/linux/linux_4.4.6-1.debian.tar.xz
$ tar Jxvf linux_4.4.6-1.debian.tar.xz


---- 編譯全部套件
$ make -f debian/rules clean
$ debuild -e DEBIAN_KERNEL_JOBS=$(nproc)


---- 編譯核心套件
套用Debian原始碼補丁
$ make -f debian/rules clean
$ make -f debian/rules orig

建立原始碼編譯目錄
$ make -f debian/rules source

編譯Linux核心並打包deb
$ fakeroot make -j2 -f debian/rules.gen binary-arch_amd64_none_amd64

保留 linux-image-4.4.0-1-amd64_4.4.6-1_amd64.deb 即可

替換核心
$ sudo apt-get --purge remove linux-image-4.4.0-1-amd64
將套件複製到 chroot系統/tmp
$ cd /tmp
$ sudo dpkg -i linux-image-4.4.0-1-amd64_4.4.6-1_amd64.deb

編譯錯誤處理
錯誤訊息: recipe for target 'debian/stamps/build_amd64_none_amd64' failed
$ ln -s 原始碼路徑/linux-4.4.6/debian/build/build_amd64_none_amd64 原始碼路徑/linux-4.4.6/debian/stamps/build_amd64_none_amd64


手動修改自訂核心功能
------------------------------------
linux-4.5.1/debian/config/kernelarch-x86/config-arch-64

多核心支援
# CONFIG_MAXSMP is not set 改為 CONFIG_MAXSMP=y
CONFIG_NR_CPUS=512 改為 CONFIG_NR_CPUS=8192

file: arch/x86/Kconfig 項目底下添加
CONFIG_CPUMASK_OFFSTACK=y


linux-4.5.1/debian/config/kernelarch-x86/config

### 筆電使用CONSERVATIVE 桌上型不用改
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y 改為 # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set 改為 CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y

VT-X 支援
# CONFIG_KVM_MMU_AUDIT is not set 改為 CONFIG_KVM_MMU_AUDIT=y

# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set 改為 CONFIG_PARAVIRT_TIME_ACCOUNTING=y

CONFIG_NODES_SHIFT=6 改為 CONFIG_NODES_SHIFT=10


linux-4.5.1/debian/config/config

### CPU 頻率 250Hz To 1000Hz
CONFIG_HZ_250=y 改為 # CONFIG_HZ_250 is not set
# CONFIG_HZ_1000 is not set 改為 CONFIG_HZ_1000=y

### CPU 變頻功能
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y 改為 # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set

CONFIG_CPU_FREQ_STAT=m 改為 CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=m 改為 CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=m 改為 CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m 改為 CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y

### 檔案格式支援
CONFIG_EXT4_FS=m 改為 CONFIG_EXT4_FS=y

CONFIG_VFAT_FS=m 改為 CONFIG_VFAT_FS=y

找尋 file: fs/fat/Kconfig
底下添加
CONFIG_FAT_FS=y

找尋 file: fs/jbd2/Kconfig
底下添加
CONFIG_JBD2=y

找尋 file: fs/Kconfig
底下添加
CONFIG_FS_MBCACHE=y

# CONFIG_NTFS_RW is not set 改為 CONFIG_NTFS_RW=y


# CONFIG_IKCONFIG is not set 改為 CONFIG_IKCONFIG=m

CONFIG_LOG_BUF_SHIFT=17 改為 CONFIG_LOG_BUF_SHIFT=15

CONFIG_CRC16=m 改為 CONFIG_CRC16=y

------------------------------------


勞動成果

2016/4/26 17:10
應用擴展 工具箱
回覆: Debian / Ubuntu Linux 核心編譯個人筆記
站長
註冊日期:
2005/6/10 9:50
來自 Taichung, Taiwan.
所屬群組:
網站管理員
已註冊使用者
等級: 19
HP : 0 / 450
MP : 139 / 17071
EXP: 3
離線
好文推推

2017/10/20 1:01
應用擴展 工具箱
回覆: Debian / Ubuntu Linux 核心編譯個人筆記
會員一級
註冊日期:
2017/9/20 17:49
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 0
MP : 0 / 0
EXP: 0
離線
好文值得半夜研讀

2017/10/20 1:06
應用擴展 工具箱
回覆: Debian / Ubuntu Linux 核心編譯個人筆記
會員三級
註冊日期:
2016/4/18 12:29
所屬群組:
已註冊使用者
等級: 9
HP : 0 / 202
MP : 34 / 1246
EXP: 10
離線
還沒有時間仔細看QQ
想請問一下,如果我需要比對兩個kernel的選項,有什麼方法嗎?
如ubuntu desktop & server的編譯差異
先謝謝

2017/10/20 10:01
應用擴展 工具箱
回覆: Debian / Ubuntu Linux 核心編譯個人筆記
管理員
註冊日期:
2012/1/14 18:41
所屬群組:
討論區管理群
等級: 20
HP : 0 / 480
MP : 159 / 8941
EXP: 23
離線
desktop跟server最大的差異就是server版的他比較不需要特別去優化反應時間,所以如果拿server的kernel來當一般的桌面系統理論上會反應比較慢,但是相對來講每個程式再CPU裏面執行的時間比較長。

2017/10/21 11:58
應用擴展 工具箱
回覆: Debian / Ubuntu Linux 核心編譯個人筆記
會員三級
註冊日期:
2016/4/18 12:29
所屬群組:
已註冊使用者
等級: 9
HP : 0 / 202
MP : 34 / 1246
EXP: 10
離線
hi 幻影火,

謝謝說明,Server & desktop 我只是舉例一下
其實因工作上的需要,我會需要比較同一個kernel的make menuconfig選項的差異
謝謝

2017/10/21 13:11
應用擴展 工具箱
回覆: Debian / Ubuntu Linux 核心編譯個人筆記
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 33
HP : 163 / 815
MP : 522 / 14524
EXP: 62
離線
ubuntu_net2016 寫到:
還沒有時間仔細看QQ
想請問一下,如果我需要比對兩個kernel的選項,有什麼方法嗎?
如ubuntu desktop & server的編譯差異
先謝謝


ubuntu_net2016 寫到:
hi 幻影火,

謝謝說明,Server & desktop 我只是舉例一下
其實因工作上的需要,我會需要比較同一個kernel的make menuconfig選項的差異
謝謝


先聲明,我目前還沒動手去編譯過核心,所以對這部份不懂。

我是看到您的提問,稍微看了一下上面的「#1」。

裡面有一個步驟

姜至奐 寫到:

### 載入系統核心設定
$ cp /boot/config-$(uname -r) .config



還有一段

姜至奐 寫到:

核心功能與驅動程式設定說明
詳細說明
http://linux.vbird.org/linux_basic/0540kernel.php



就可以找到「鳥哥的 Linux 私房菜 / 第二十四章、Linux 核心編譯與管理 / 24.2.3 開始挑選核心功能: make XXconfig / 透過既有的設定來處理核心項目與功能的選擇」。

也許您可以從這裡開始探索起。



================================================================================

執行


$ ls /boot/config-$(uname -r)



顯示


/boot/config-4.4.0-97-generic



可以執行下面指令,觀看「/boot/config-4.4.0-97-generic」的內容


$ cat /boot/config-4.4.0-97-generic



或是執行下面指令觀看


$ cat /boot/config-$(uname -r)



另外還發現兩個檔案路徑

* /usr/src/linux-headers-4.4.0-97-generic/.config
* /usr/src/linux-headers-4.4.0-97-generic/.config.old

可以執行下面指令,就可以看到


$ ls /usr/src/linux-headers-$(uname -r)/.config
$ ls /usr/src/linux-headers-$(uname -r)/.config.old


執行


$ dpkg -S /usr/src/linux-headers-$(uname -r)



顯示


linux-headers-4.4.0-97-generic: /usr/src/linux-headers-4.4.0-97-generic



表示「/usr/src/linux-headers-4.4.0-97-generic」這個資料夾,是屬於「linux-headers-4.4.0-97-generic」這個套件。


$ apt-cache showsrc linux-headers-4.4.0-97-generic | grep '^Binary:' -B 2



顯示


Package: linux
Format: 1.0
Binary: linux-source-4.4.0, linux-doc, linux-headers-4.4.0-97, linux-libc-dev, linux-tools-common, linux-tools-4.4.0-97, linux-cloud-tools-common, linux-cloud-tools-4.4.0-97, linux-image-4.4.0-97-generic, linux-image-extra-4.4.0-97-generic, linux-headers-4.4.0-97-generic, linux-image-4.4.0-97-generic-dbgsym, linux-tools-4.4.0-97-generic, linux-cloud-tools-4.4.0-97-generic, linux-udebs-generic, linux-image-4.4.0-97-generic-lpae, linux-image-extra-4.4.0-97-generic-lpae, linux-headers-4.4.0-97-generic-lpae, linux-image-4.4.0-97-generic-lpae-dbgsym, linux-tools-4.4.0-97-generic-lpae, linux-cloud-tools-4.4.0-97-generic-lpae, linux-udebs-generic-lpae, linux-image-4.4.0-97-lowlatency, linux-image-extra-4.4.0-97-lowlatency, linux-headers-4.4.0-97-lowlatency, linux-image-4.4.0-97-lowlatency-dbgsym, linux-tools-4.4.0-97-lowlatency, linux-cloud-tools-4.4.0-97-lowlatency, linux-udebs-lowlatency, linux-image-4.4.0-97-powerpc-e500mc, linux-image-extra-4.4.0-97-powerpc-e500mc,



一些套件的操作案例,紀錄在「[索引] 套件操作實務」。

================================================================================

以上是我目前看到的,提供參考,其他的我就沒再深究了。



================================================================================

## Command Substitution

執行


$ uname -r



顯示


4.4.0-97-generic



執行


$ echo $(uname -r)



顯示


4.4.0-97-generic



執行


$ echo /boot/config-$(uname -r)



顯示


/boot/config-4.4.0-97-generic



執行

$ man bash

使用「Command Substitution」當關鍵字查詢,可以找到下面的說明


...略...

Command Substitution
	Command substitution allows the output of a command to replace the command name.  There are two forms:

		   $(command)
	or
		   `command`

...略...



### 之前的討論案例

* #4 回覆: shell中 `` 與()問題請教
* #4 回覆: function去呼叫function

### 相關索引

* [索引]如何執行指令

### 相關文件

* https://github.com/denysdovhan/bash-handbook#command-substitution
* https://www.gnu.org/software/bash/manual/html_node/Command-Substitution.html
* http://tldp.org/LDP/abs/html/commandsub.html

================================================================================

2017/10/21 13:53
應用擴展 工具箱

(1) 2 »

 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.