0%

记向Linux内核社区提交补丁

1. 前言

年纪大了,健忘,记录以便日后Ctrl-C+Ctrl-V。

系统信息:
Distributor ID:    Ubuntu
Description: Ubuntu 22.04.5 LTS
Release: 22.04*

2. 前期预处理

  • 配置Git

    1
    git config --global user.name "Ssunk"
    1
    git config --global user.email "ssunkkan@gmail.com"
    1
    ssh-keygen -t rsa -C "ssunkkan@gmail.com"

    去github设置的SSH keys里添加生成的公钥

  • 配置gitconfig邮件相关

    1
    sudo gedit ~/.gitconfig
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [user]
    name = Ssunk
    email = ssunkkan@gmail.com

    [sendemail]
    smtpencryption = tls
    smtpserver = smtp.gmail.com
    smtpuser = ssunkkan@gmail.com
    smtpserverport = 587
  • 安装发送PATCH所需的git-email

    1
    sudo apt-get install git-email
  • 安装命令行代理工具 (Gmail邮箱需爬墙)

    1
    sudo apt install proxychains4
  • 配置/etc/proxychains.conf socket4/socket5为代理服务器 xxx.xxx.xxx.x port

  • 打开 https://myaccount.google.com/apppassword 设置应用专用密码,如已经设置过但是忘了就去找dxx

3. 修改Linux内核源码编译

  • 克隆代码

    1
    git clone https://github.com/torvalds/linux.git
  • 下载编译所需库

    1
    sudo apt install ncurses-dev flex bison libssl-dev libelf-dev
  • 编译内核

    1
    make menuconfig
    1
    make -j$(nproc)
  • 如果内核编译报错: No rule to make target ‘debian/canonical-certs.pem‘, needed by ‘certs/x509_certificate_list‘,修改.config,将CONFIG_SYSTEM_TRUSTED_KEYS、CONFIG_SYSTEM_REVOCATION_KEYS置为空

  • 确保当前环境可以编译成功后,修改代码再次编译,并生成PATCH,测试是否符合提交规范

    1
    git add file
    1
    git commit -s
    1
    git format-patch -s -1
    1
    ./scripts/get_maintainer.pl xxx.patch
    1
    ./scripts/checkpatch.pl xxx.patch

4. 发送PATCH

  • git send-email --to xxxx@linaro.org -cc xxxxx@kernel.org xxxx.patch
    

5. 可参考链接