全部產品
Search
文件中心

Alibaba Cloud Linux:Alibaba Cloud Linux 3 AI Extension Edition修改啟動項和核心命令列參數

更新時間:Aug 15, 2025

本文介紹如何在Alibaba Cloud Linux 3 AI Extension Edition作業系統中,使用grubby工具添加或刪除核心啟動參數。

瞭解啟動設定檔結構

  • 啟動項設定檔:GRUB所有的啟動項配置在 /boot/loader/entries/ 目錄下。檔案名稱由machine-id(/etc/machine-id )和核心版本組合而成,例如 c8742e47872643a6839300623c28b57c-5.10.134-19.101.al8.x86_64.conf

  • 設定檔樣本:

    title Alibaba Cloud Linux (5.10.134-19.101.al8.x86_64) 3 (OpenAnolis Edition)
    version 5.10.134-19.101.al8.x86_64
    linux /boot/vmlinuz-5.10.134-19.101.al8.x86_64
    initrd /boot/initramfs-5.10.134-19.101.al8.x86_64.img $tuned_initrd
    options $kernelopts $tuned_params
    id alinux-20250707132428-5.10.134-19.101.al8.x86_64
    grub_users $grub_users
    grub_arg --unrestricted
    grub_class kernel

    其中,options 行決定了核心啟動時接收的參數。預設情況下,它會引用一個名為 kernelopts 的變數。這個變數定義了適用於所有啟動項的通用核心參數。它的值儲存在 /boot/grub2/grubenv 檔案中。通過修改這個變數,可以實現對所有核心版本的全域參數管理。

推薦工具

手動編輯上述設定檔,存在格式錯誤導致系統無法啟動的風險。推薦使用 grubby 命令列工具來管理核心啟動項。grubby 能夠自動處理複雜的設定檔更新,確保操作的原子性和正確性。

前提條件

在開始操作前,請確保滿足以下條件:

  • 許可權準備: 使用具有 root 許可權的使用者登入到目標ECS執行個體。

  • 資料備份(推薦): 對於生產環境,建議您在操作前為執行個體建立快照,以便在出現意外時能夠快速恢複。

  • AI增強鏡像特殊配置: Alibaba Cloud Linux 3 AI增強鏡像中若需修改核心命令列參數或者修改啟動項,在執行任何grubby修改命令之前,必須先執行一次以下命令。

    efibootmgr -q && test -f /boot/efi/EFI/alinux/grubenv && ln -sf ../efi/EFI/alinux/grubenv /boot/grub2/grubenv # 該命令僅需執行一次,重複執行無害
重要

此操作用於確保grubenv環境被正確連結,否則您的修改將不會生效。

使用grubby修改啟動參數

本章節提供兩種修改核心啟動參數的核心方法。請根據您的具體需求選擇合適的方法。

全域修改所有啟動項的參數

當您需要將一個參數(例如,為適配某種硬體而添加 nvme_core.io_timeout=4294967295)應用到所有已安裝的核心版本上時,應使用此方法。

  • 原理: grubby 會直接修改 /boot/grub2/grubenv 檔案中 kernelopts 變數的值,所有引用該變數的啟動項都會受到影響。

  • 操作命令:

    • 添加參數

      grubby --update-kernel=ALL --args="<NEW_PARAMETER>"   
      # 將 <NEW_PARAMETER> 替換為您要添加的實際參數,例如:"nvme_core.io_timeout=4294967295"
    • 刪除參數

      grubby --update-kernel=ALL --remove-args="<PARAMETER_TO_REMOVE>" 
       # 將 <PARAMETER_TO_REMOVE> 替換為您要刪除的實際參數,例如:"quiet"

修改單個啟動項的核心命令列參數

當您只想為一個特定的核心版本(例如,為當前啟動並執行核心)添加或刪除一個測試性參數,而不希望影響其他核心版本或未來的全域修改時,可使用此方法。

  • 原理: 修改單個啟動項的核心命令列參數,kernelopts變數會被展開,並儲存到相應的啟動項設定檔/boot/loader/entries/<RELEVANT_KERNEL_BOOT_ENTRY.conf>中。

    說明

    後續如果需要繼續修改該啟動項的核心命令列參數,需要指定啟動項修改,因為啟動項設定檔中不再包含kernelopts變數。

  • 操作命令:

    • 添加參數

      grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="<NEW_PARAMETER>"
      # 將 <NEW_PARAMETER> 替換為您要添加的實際參數 
    • 刪除參數

      grubby --update-kernel=/boot/vmlinuz-$(uname -r) --remove-args="<PARAMETER_TO_REMOVE>"
      # 將 <PARAMETER_TO_REMOVE> 替換為您要刪除的實際參數