Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ubuntu安装第三方内核后如何使用linux-common-tools #69

Closed
ferstar opened this issue Jan 24, 2023 · 0 comments
Closed

Ubuntu安装第三方内核后如何使用linux-common-tools #69

ferstar opened this issue Jan 24, 2023 · 0 comments
Labels

Comments

@ferstar
Copy link
Owner

ferstar commented Jan 24, 2023

Ubuntu 有点讨厌,内核相关的包给拆好几个,如果一直官方内核倒也没啥,关键官方内核太老,我一般第一时间就会替换成第三方的内核,比如:https://github.com/xanmod/linux

但是一旦换成第三方内核,你要使用类似 perf cpupower 这种内核相关命令的时候就会提示下面的错误:

perf
WARNING: perf not found for kernel 6.1.7-x64v3

  You may need to install the following packages for this specific kernel:
    linux-tools-6.1.7-x64v3-xanmod1
    linux-cloud-tools-6.1.7-x64v3-xanmod1

  You may also want to install one of the following packages to keep up to date:
    linux-tools-xanmod1
    linux-cloud-tools-xanmod1

缺包,但还贴心的给出了提示,估计是做了一层包装,我们拆开看看:

~ head -n 18 $(which perf)
#!/bin/bash
full_version=`uname -r`

# First check for a fully qualified version.
this="/usr/lib/linux-tools/$full_version/`basename $0`"
if [ -f "$this" ]; then
        exec "$this" "$@"
fi

# Removing flavour from version i.e. generic or server.
flavour_abi=${full_version#*-}
flavour=${flavour_abi#*-}
version=${full_version%-$flavour}
this="$0_$version"
if [ -f "$this" ]; then
        exec "$this" "$@"
fi
...

显然是从/usr/lib/linux-tools/$(uname -r)这个目录里去找perl了,解决也很简单:

  1. 拉内核源码编译perf二进制塞到上面的目录
  2. 因为这种工具代码更新频率很低,所以可以直接从低版本官方内核包中拖出来,丢到上面的目录

迫于太懒,我肯定选方法二:

mkdir -p /usr/lib/linux-tools/$(uname -r)
apt download linux-tools-5.19.0-21
# 把deb解压,/./usr/lib/linux-tools-5.19.0-21/ 目录里的文件全拷贝到 /usr/lib/linux-tools/$(uname -r)

大概的目录结构是这样:

~ uname -a
Linux u2004-p13 6.1.7-x64v3-xanmod1 #0~20230118.a4fbffc SMP PREEMPT_DYNAMIC Wed Jan 18 23:47:06 UTC  x86_64 x86_64 x86_64 GNU/Linux~ tree /usr/lib/linux-tools/6.1.7-x64v3-xanmod1
/usr/lib/linux-tools/6.1.7-x64v3-xanmod1
├── acpidbg
├── bpftool
├── cpupower
├── libperf-jvmti.so
├── perf
├── turbostat
├── usbip
├── usbipd
└── x86_energy_perf_policy

0 directories, 9 files

敲个命令试试看:

~ cpupower frequency-info
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: 1.40 GHz - 1.80 GHz
  available frequency steps:  1.80 GHz, 1.70 GHz, 1.40 GHz
  available cpufreq governors: conservative ondemand userspace powersave performance schedutil
  current policy: frequency should be within 1.40 GHz and 1.80 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 1.90 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: no

完美,后续内核有更新的话,只需要重命名一下 /usr/lib/linux-tools/$(uname -r) 即可

有关的几个issue:

  1. https://github.com/xanmod/linux/issues/94
  2. https://github.com/xanmod/linux/issues/121
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant