sonic开发——cmdline传参

本文档介绍了如何在ONIE安装SONiC时添加额外的cmdline参数。通过在device目录下的installer.conf文件中定义ONIE_PLATFORM_EXTRA_CMDLINE_LINUX,这些参数将在调用sonic的install.sh脚本时被应用,从而影响系统的启动配置,例如apparmor、varlog_size和usbcore.autosuspend等设置。
摘要由CSDN通过智能技术生成

参考:https://github.com/Azure/SONiC/wiki/Porting-Guide
在device下面的installer.conf文件中,可以为onie安装sonic提供一些额外配置文件,其中包含cmdline参数。

device/
|-- <VENDOR_NAME>/
|   |-- <ONIE_PLATFORM_STRING>/
|   |   |-- installer.conf

installer.conf文件中添加ONIE_PLATFORM_EXTRA_CMDLINE_LINUX的定义,可配置额外cmdline。

ONIE_PLATFORM_EXTRA_CMDLINE_LINUX="cma=256M@0-4G"

在onie安装sonic的时候,实际调用sonic中的sonic-buildimage/blob/master/installer/x86_64/install.sh文件,该文件中对cmdline有如下定义:

cat <<EOF >> $grub_cfg
menuentry '$demo_grub_entry' {
        search --no-floppy --label --set=root $demo_volume_label
        echo    'Loading $demo_volume_label $demo_type kernel ...'
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_msdos
        insmod ext2
        linux   /$image_dir/boot/vmlinuz-5.10.0-8-2-amd64 root=$grub_cfg_root rw $GRUB_CMDLINE_LINUX  \
                net.ifnames=0 biosdevname=0 \
                loop=$image_dir/$FILESYSTEM_SQUASHFS loopfstype=squashfs                       \
                systemd.unified_cgroup_hierarchy=0 \
                apparmor=1 security=apparmor varlog_size=$VAR_LOG_SIZE usbcore.autosuspend=-1 $ONIE_PLATFORM_EXTRA_CMDLINE_LINUX
        echo    'Loading $demo_volume_label $demo_type initial ramdisk ...'
        initrd  /$image_dir/boot/initrd.img-5.10.0-8-2-amd64
}
EOF

其中apparmor=1 security=apparmor varlog_size=$VAR_LOG_SIZE usbcore.autosuspend=-1
$ONIE_PLATFORM_EXTRA_CMDLINE_LINUX 实现添加installer.conf文件中定义的额外cmdline。

开发一个 Python 命令行工具来升级 Sonic 系统,你需要了解以下几个方面的知识: 1. Sonic 系统升级的原理和流程 2. Python 的基本语法和命令行工具开发 3. Linux 系统的基本操作和命令 下面是一个简单的思路,可以帮助你开始开发: 1. 使用 Python 的 argparse 模块解析命令行参数,例如升级的目标设备、升级的 Sonic 版本等。 2. 使用 paramiko 模块连接到目标设备的 SSH 服务器,并执行升级命令。 3. 在升级过程中,使用 subprocess 模块在本地执行一些必要的命令,例如下载 Sonic 系统镜像、校验镜像文件等。 4. 在升级完成后,使用 paramiko 模块断开 SSH 连接。 以下是一个简单的代码示例,用于连接到目标设备并执行升级命令: ```python import paramiko import argparse # 解析命令行参数 parser = argparse.ArgumentParser(description='Upgrade Sonic system') parser.add_argument('target', help='Target device IP address') parser.add_argument('version', help='Sonic version to upgrade to') args = parser.parse_args() # 创建 SSH 客户端并连接到目标设备 client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(args.target, username='root', password='password') # 执行升级命令 stdin, stdout, stderr = client.exec_command('sonic_installer upgrade {}'.format(args.version)) for line in stdout: print(line.strip()) # 断开 SSH 连接 client.close() ``` 当然,这只是一个简单的示例,还需要结合实际场景进行进。例如,你可能需要添加更多的错误处理和日志记录功能,以确保升级过程的可靠性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值