{"id":27986,"date":"2023-03-29T10:58:10","date_gmt":"2023-04-22T15:52:52","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8sonic%e4%b8%8a%e6%b7%bb%e5%8a%a0%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e3%80%82-3\/"},"modified":"2025-08-12T05:43:30","modified_gmt":"2025-08-11T21:43:30","slug":"%e5%a6%82%e4%bd%95%e5%9c%a8sonic%e4%b8%8a%e6%b7%bb%e5%8a%a0%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e3%80%82-3","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8sonic%e4%b8%8a%e6%b7%bb%e5%8a%a0%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e3%80%82-3\/","title":{"rendered":"\u5982\u4f55\u5728SONiC\u4e0a\u6dfb\u52a0\u5e94\u7528\u7a0b\u5e8f"},"content":{"rendered":"<h1>\u9996\u5148\u6211\u8ba4\u4e3a\u5f88\u5c11\u6709\u4eba\u53ea\u4f7f\u7528Windows\u3001Mac\u3001iOS\u3001Android\u6216\u5176\u4ed6\u5404\u79cd\u64cd\u4f5c\u7cfb\u7edf\u4e0a\u63d0\u4f9b\u7684\u6807\u51c6\u5e94\u7528\u7a0b\u5e8f\u3002\u7136\u800c\uff0c\u5728\u7528\u4e8e\u767d\u76d2\u4ea4\u6362\u673a\u7684\u64cd\u4f5c\u7cfb\u7edfSONiC\u4e0a\uff0c\u5927\u591a\u6570\u4eba\u4f30\u8ba1\u4f1a\u5728\u5176\u672c\u8eab\u63d0\u4f9b\u7684\u529f\u80fd\u8303\u56f4\u5185\u4f7f\u7528\u3002<\/p>\n<p>\u6211\u8ba4\u4e3a\u8fd8\u662f\u6709\u4e00\u4e9b\u60c5\u51b5\u4e0b\u60f3\u8981\u96c6\u6210\u8fd9\u4e2a\u529f\u80fd\u3002\u8fd9\u6b21\u6211\u4f1a\u4ecb\u7ecd\u4e00\u4e9b\u65b9\u6cd5\u3002<\/p>\n<h1>\u542f\u52a8\u540e\u8fdb\u884c\u5d4c\u5165\u7531\u4e8eSONiC\u662f\u57fa\u4e8eDebian\u6784\u5efa\u7684\uff0c\u56e0\u6b64\u53ef\u4ee5\u4f7f\u7528apt-get\u548capt\u3002\u5982\u679c\u60a8\u8981\u4f7f\u7528Ansible\u7b49\u5de5\u5177\uff0c\u53ea\u9700\u8981\u4ee5\u4e0b\u64cd\u4f5c\u5373\u53ef\uff1asudo apt update\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">admin@sonic:~$<\/span> <span class=\"nb\">sudo <\/span>apt update\r\n<span class=\"go\">Get:1 https:\/\/download.docker.com\/linux\/debian bullseye InRelease [43.3 kB]\r\nGet:2 http:\/\/debian-archive.trafficmanager.net\/debian bullseye InRelease [116 kB]                 \r\nGet:3 https:\/\/download.docker.com\/linux\/debian bullseye\/stable amd64 Packages [18.3 kB]\r\nGet:4 http:\/\/debian-archive.trafficmanager.net\/debian bullseye-updates InRelease [44.1 kB]\r\nGet:5 http:\/\/debian-archive.trafficmanager.net\/debian bullseye-backports InRelease [49.0 kB]\r\nGet:6 http:\/\/debian-archive.trafficmanager.net\/debian-security bullseye-security InRelease [48.4 kB]\r\nGet:7 http:\/\/debian-archive.trafficmanager.net\/debian bullseye\/contrib Sources [51.4 kB]\r\nGet:8 http:\/\/debian-archive.trafficmanager.net\/debian bullseye\/non-free Sources [98.3 kB]\r\nGet:9 http:\/\/debian-archive.trafficmanager.net\/debian bullseye\/main Sources [11.4 MB]\r\nGet:10 http:\/\/debian-archive.trafficmanager.net\/debian bullseye\/non-free amd64 Packages [122 kB]\r\nGet:11 http:\/\/debian-archive.trafficmanager.net\/debian bullseye\/contrib amd64 Packages [60.9 kB]\r\nGet:12 http:\/\/debian-archive.trafficmanager.net\/debian bullseye\/main amd64 Packages [11.1 MB]\r\nGet:13 http:\/\/debian-archive.trafficmanager.net\/debian bullseye-updates\/main Sources [4,812 B]\r\nGet:14 http:\/\/debian-archive.trafficmanager.net\/debian bullseye-updates\/main amd64 Packages [14.6 kB]\r\nGet:15 http:\/\/debian-archive.trafficmanager.net\/debian bullseye-backports\/contrib amd64 Packages [4,396 B]\r\nGet:16 http:\/\/debian-archive.trafficmanager.net\/debian bullseye-backports\/non-free amd64 Packages [14.3 kB]\r\nGet:17 http:\/\/debian-archive.trafficmanager.net\/debian bullseye-backports\/main amd64 Packages [371 kB]\r\nGet:18 http:\/\/debian-archive.trafficmanager.net\/debian-security bullseye-security\/non-free Sources [558 B]\r\nGet:19 http:\/\/debian-archive.trafficmanager.net\/debian-security bullseye-security\/main Sources [272 kB]\r\nGet:20 http:\/\/debian-archive.trafficmanager.net\/debian-security bullseye-security\/main amd64 Packages [264 kB]\r\nGet:21 http:\/\/debian-archive.trafficmanager.net\/debian-security bullseye-security\/non-free amd64 Packages [457 B]\r\nFetched 24.1 MB in 3s (8,513 kB\/s)                    \r\nReading package lists... Done\r\nBuilding dependency tree... Done\r\nReading state information... Done\r\n10 packages can be upgraded. Run 'apt list --upgradable' to see them.\r\n<\/span><span class=\"gp\">admin@sonic:~$<\/span> <span class=\"nb\">sudo <\/span>apt <span class=\"nb\">install <\/span>htop\r\n<span class=\"go\">Reading package lists... Done\r\nBuilding dependency tree... Done\r\nReading state information... Done\r\nSuggested packages:\r\n  lm-sensors lsof strace\r\nThe following NEW packages will be installed:\r\n  htop\r\n0 upgraded, 1 newly installed, 0 to remove and 10 not upgraded.\r\nNeed to get 127 kB of archives.\r\nAfter this operation, 328 kB of additional disk space will be used.\r\nGet:1 http:\/\/debian-archive.trafficmanager.net\/debian bullseye\/main amd64 htop amd64 3.0.5-7 [127 kB]\r\nFetched 127 kB in 0s (283 kB\/s)\r\ndebconf: delaying package configuration, since apt-utils is not installed\r\nSelecting previously unselected package htop.\r\n(Reading database ... 38304 files and directories currently installed.)\r\nPreparing to unpack ...\/htop_3.0.5-7_amd64.deb ...\r\nUnpacking htop (3.0.5-7) ...\r\nSetting up htop (3.0.5-7) ...\r\n<\/span><span class=\"gp\">admin@sonic:~$<\/span> \r\n<\/code><\/pre>\n<p>\u5982\u679c\u4f60\u5b89\u88c5\u4e86\u5b83\uff0c\u5b83\u5c31\u5c5e\u4e8e\u4f60\u4e86\u3002\u65e0\u8bba\u662f\u4f7f\u7528pip\u8fd8\u662fnpm\uff0c\u90fd\u53ef\u4ee5\u968f\u610f\u9009\u62e9\u3002<\/p>\n<h1>\u5728\u6784\u5efa\u8fc7\u7a0b\u4e2d\u8fdb\u884c\u96c6\u6210<\/p>\n<h2>\u4e8c\u8fdb\u5236\u8f6f\u4ef6\u5305\u6a21\u5757\u3002<br \/>\n\u521a\u624d\u7684 apt-get\u3001\u4ee5\u53ca apt \u5b89\u88c5\u53ef\u4ee5\u5728\u6784\u5efa\u65f6\u6267\u884c\u3002<\/p>\n<p>\u8981\u4fee\u6539\u7684\u6587\u4ef6\u662fbuild_debian.sh\u3002\u67e5\u770b\u6587\u4ef6\u5185\u90e8\uff0c\u53ef\u4ee5\u770b\u5230\u4ee5\u4e0b\u90e8\u5206\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"c\">## Pre-install the fundamental packages<\/span>\r\n<span class=\"c\">## Note: gdisk is needed for sgdisk in install.sh<\/span>\r\n<span class=\"c\">## Note: parted is needed for partprobe in install.sh<\/span>\r\n<span class=\"c\">## Note: ca-certificates is needed for easy_install<\/span>\r\n<span class=\"c\">## Note: don't install python-apt by pip, older than Debian repo one<\/span>\r\n<span class=\"c\">## Note: fdisk and gpg are needed by fwutil<\/span>\r\n<span class=\"nb\">sudo <\/span><span class=\"nv\">LANG<\/span><span class=\"o\">=<\/span>C <span class=\"nv\">DEBIAN_FRONTEND<\/span><span class=\"o\">=<\/span>noninteractive <span class=\"nb\">chroot<\/span> <span class=\"nv\">$FILESYSTEM_ROOT<\/span> apt-get <span class=\"nt\">-y<\/span> <span class=\"nb\">install<\/span>      <span class=\"se\">\\<\/span>\r\n    file                    <span class=\"se\">\\<\/span>\r\n    ifmetric                <span class=\"se\">\\<\/span>\r\n    iproute2                <span class=\"se\">\\<\/span>\r\n    bridge-utils            <span class=\"se\">\\<\/span>\r\n    isc-dhcp-client         <span class=\"se\">\\<\/span>\r\n    <span class=\"nb\">sudo<\/span>                    <span class=\"se\">\\<\/span>\r\n    vim                     <span class=\"se\">\\<\/span>\r\n    tcpdump                 <span class=\"se\">\\<\/span>\r\n<\/code><\/pre>\n<p>\u53ea\u9700\u8981\u5728\u8fd9\u91cc\u6dfb\u52a0\u8981\u5b89\u88c5\u7684\u5305\u7684\u540d\u79f0\u5e76\u6784\u5efa\u5373\u53ef\u3002\u4f8b\u5982\uff0c\u5982\u679c\u8981\u96c6\u6210keepalived\uff0c\u53ef\u4ee5\u6309\u7167\u4ee5\u4e0b\u65b9\u5f0f\u8fdb\u884c\u3002(\u867d\u7136\u8fd9\u91cc\u53ea\u662f\u4e3e\u4f8b\u8bf4\u660e\uff0c\u4f46\u662f\u53ea\u662f\u7b80\u5355\u5730\u96c6\u6210keepalived\u53ef\u80fd\u65e0\u6cd5\u6b63\u5e38\u8fd0\u884c\uff0c\u8bf7\u6ce8\u610f)<\/p>\n<pre class=\"post-pre\"><code><span class=\"gh\">diff --git a\/build_debian.sh b\/build_debian.sh\r\nindex 01a10d78d..a68f7d7a2 100755\r\n<\/span><span class=\"gd\">--- a\/build_debian.sh\r\n<\/span><span class=\"gi\">+++ b\/build_debian.sh\r\n<\/span><span class=\"p\">@@ -330,6 +330,7 @@<\/span> fi\r\n ## Note: don't install python-apt by pip, older than Debian repo one\r\n ## Note: fdisk and gpg are needed by fwutil\r\n sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install      \\\r\n<span class=\"gi\">+    keepalived              \\\r\n<\/span>     file                    \\\r\n     ifmetric                \\\r\n     iproute2                \\\r\n<\/code><\/pre>\n<h2>Python\u5305\u7f16\u7a0b\u540c\u6837\u5730\uff0c\u53ea\u9700\u8981\u5728build_debian.sh\u4e2d\u8fdb\u884c\u7f16\u5199\uff0c\u4f46\u662f\u9700\u8981\u4e00\u4e9b\u5492\u8bed\u3002\u4ee5\u4e0b\u662f\u5c06j2cli\uff08Jinja2\u6a21\u677f\u5f15\u64ce\u7684CLI\uff09\u96c6\u6210\u8fdb\u6765\u7684\u5dee\u5f02\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gh\">diff --git a\/build_debian.sh b\/build_debian.sh\r\nindex 01a10d78d..a68f7d7a2 100755\r\n<\/span><span class=\"gd\">--- a\/build_debian.sh\r\n<\/span><span class=\"gi\">+++ b\/build_debian.sh\r\n<\/span><span class=\"p\">@@ -526,6 +526,9 @@<\/span> sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install 'docke\r\n # Install scapy\r\n sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install 'scapy==2.4.4'\r\n \r\n<span class=\"gi\">+# Install j2cli\r\n+sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install 'j2cli'\r\n+\r\n<\/span> ## Note: keep pip installed for maintainance purpose\r\n \r\n # Install GCC, needed for building\/installing some Python packages\r\n<\/code><\/pre>\n<h2>\u672c\u4eba\u5f00\u53d1\u7684\u5e94\u7528\u7a0b\u5e8f\u7bc7\u5728\u8fd9\u91cc\uff0c\u60a8\u5f53\u7136\u53ef\u4ee5\u6dfb\u52a0\u81ea\u5df1\u5f00\u53d1\u7684\u5e94\u7528\u7a0b\u5e8f\u3002<br \/>\n\u8fd9\u91cc\u4e3e\u4e2a\u4f8b\u5b50\uff0c\u5047\u8bbe\u8fd9\u662f\u4e00\u4e2a\u4e0d\u5b58\u5728\u7684\u865a\u6784\u5e94\u7528\u7a0b\u5e8f\uff0c\u6765\u9610\u8ff0\u4e00\u4e2a\u590d\u6742\u7684\u6848\u4f8b\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u540d etcdconfig<\/ul>\n<\/li>\n<\/ul>\n<p>\u6a5f\u80fd: etcd\u304b\u3089JSON\u5f62\u5f0f\u306e\u8a2d\u5b9a\u3092\u8aad\u307f\u8fbc\u307f\u3001SONiC\u306e\u8a2d\u5b9a\u306b\u53cd\u6620\u3055\u305b\u308b<br \/>\n\u4f7f\u7528\u8a00\u8a9e: Differential Datalog (DDlog)<\/p>\n<p>\u5982\u679c\u8981\u8bf4\u8fd9\u4e2a\u6709\u4ec0\u4e48\u5730\u65b9\u590d\u6742\u7684\u8bdd\uff0c<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">DDlog\u30b3\u30f3\u30d1\u30a4\u30e9\u306fSONiC\u306e\u30d3\u30eb\u30c9\u74b0\u5883\u306b\u7528\u610f\u3055\u308c\u3066\u3044\u306a\u3044<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">DDlog\u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u51fa\u529b\u306fRust\u8a00\u8a9e\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3067\u3001\u3053\u308c\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u3064\u307e\u308aRust\u30b3\u30f3\u30d1\u30a4\u30e9\u3082\u5fc5\u8981\u3060\u304c\u3001\u3053\u308c\u3082SONiC\u306e\u30d3\u30eb\u30c9\u74b0\u5883\u306b\u7528\u610f\u3055\u308c\u3066\u3044\u306a\u3044<\/ul>\n<p>\u6362\u53e5\u8bdd\u8bf4\uff0c\u5c31\u662f\u9700\u8981\u5bf9\u6784\u5efa\u73af\u5883\u8fdb\u884c\u8c03\u6574\u3002<\/p>\n<p>\u6211\u5e0c\u671b\u80fd\u591f\u50cf\u5728SONiC\u4e2d\u4e00\u6837\uff0c\u4ee5Debian\u5305\u7684\u5f62\u5f0f\u5236\u4f5c\u51fa\u6765\uff0c\u56e0\u4e3a\u6211\u89c9\u5f97\u8fd9\u6837\u66f4\u52a0\u65b9\u4fbf\u3002<\/p>\n<p>\u4ee5\u4e0b\u662f\u5fc5\u8981\u7684\u5de5\u4f5c\u4efb\u52a1\u6e05\u5355\uff1a<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u51c6\u5907etcdconfig\u672c\u4f53\uff08\u6e90\u4ee3\u7801\u548c\u6784\u5efa\u89c4\u5219\uff09<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u6dfb\u52a0etcdconfigDebian\u8f6f\u4ef6\u5305\u7684\u6784\u5efa\u89c4\u5219<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u5c06etcdconfigDebian\u8f6f\u4ef6\u5305\u4f5c\u4e3a\u6784\u5efa\u76ee\u6807<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u5c06etcdconfigDebian\u8f6f\u4ef6\u5305\u96c6\u6210\u5230SONiC\u4e2d<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u5c06etcd-client\u96c6\u6210\u5230SONiC\u4e2d<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u5c06DDlog\u7f16\u8bd1\u5668\u96c6\u6210\u5230\u6784\u5efa\u73af\u5883\u4e2d<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\u5c06Rust\u7f16\u8bd1\u5668\u96c6\u6210\u5230\u6784\u5efa\u73af\u5883\u4e2d<\/ol>\n<p>\u975e\u5e38\u9ebb\u7169\u554a\u3002\u5982\u679c\u662f\u7528\u7c21\u55ae\u7684C++\u7de8\u5beb\u7684\u7a0b\u5e8f\uff0c\u5f9e5\u958b\u59cb\u5f8c\u9762\u7684\u90fd\u662f\u4e0d\u5fc5\u8981\u7684\u3002<br \/>\n\u90a3\u9ebc\u6211\u5011\u73fe\u5728\u5c31\u8a66\u8a66\u770b\u3002<\/p>\n<h3>\u51c6\u5907etcdconfig\u7684\u672c\u4f53\uff08\u6e90\u4ee3\u7801\u548c\u6784\u5efa\u89c4\u5219\uff09\u3002<br \/>\n\u672c\u6587\u5047\u8bbe\u5c06\u6574\u5957\u6587\u4ef6\u653e\u5728 src\/sonic-etcdconfig\/ \u76ee\u5f55\u4e0b\u3002<br \/>\n\u6587\u4ef6\u7684\u4e3b\u4f53\u662f src\/sonic-etcdconfig\/sonic_config.dl\u3002<\/p>\n<p>\u4ee5\u4e0b\u662fMakefile\u548cdebian\/*\u7684\u6837\u4f8b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gh\">diff --git a\/src\/sonic-etcdconfig\/Makefile b\/src\/sonic-etcdconfig\/Makefile\r\n<\/span><span class=\"p\">new file mode 100644\r\n<\/span><span class=\"gh\">index 000000000..84bfe8ea9\r\n<\/span><span class=\"gd\">--- \/dev\/null\r\n<\/span><span class=\"gi\">+++ b\/src\/sonic-etcdconfig\/Makefile\r\n<\/span><span class=\"p\">@@ -0,0 +1,30 @@<\/span>\r\n<span class=\"gi\">+INSTALL := \/usr\/bin\/install\r\n+ETCDCONFIGDIR=$(abspath .)\r\n+CONFIGCLIDIR := $(ETCDCONFIGDIR)\/sonic_config_ddlog\/target\/release\r\n+PROG := sonic_config_cli\r\n+TARGET := $(CONFIGCLIDIR)\/$(PROG)\r\n+DDLOG := \/usr\/local\/ddlog\/bin\/ddlog -L \/usr\/local\/ddlog\/lib\r\n+\r\n+ETCDCONFIG_VERSION = 1.0.0-0\r\n+MAIN_TARGET = etcdconfig_$(ETCDCONFIG_VERSION)_$(CONFIGURED_ARCH).deb\r\n+\r\n+all: $(TARGET)\r\n+\r\n+$(TARGET): sonic_config.dl\r\n+       $(DDLOG) -i $&lt;\r\n+       cd sonic_config_ddlog; $(HOME)\/.cargo\/bin\/cargo build --release; cd -\r\n+\r\n+check:\r\n+\r\n+clean:\r\n+       $(RM) -r $(ETCDCONFIGDIR)\/sonic_config_ddlog\r\n+\r\n+install:\r\n+       $(INSTALL) -D -m 0755 $(TARGET) $(DESTDIR)\/usr\/bin\/$(TARGET)\r\n+\r\n+uninstall:\r\n+       $(RM) $(DESTDIR)\/usr\/bin\/$(PROG)\r\n+\r\n+$(addprefix $(DEST)\/, $(MAIN_TARGET)): $(DEST)\/% :\r\n+       dpkg-buildpackage -us -uc -b -j$(SONIC_CONFIG_MAKE_JOBS) --admindir $(SONIC_DPKG_ADMINDIR)\r\n+       mv $* $(DEST)\/\r\n<\/span><\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"gh\">diff --git a\/src\/sonic-etcdconfig\/debian\/changelog b\/src\/sonic-etcdconfig\/debian\/changelog\r\n<\/span><span class=\"p\">new file mode 100644\r\n<\/span><span class=\"gh\">index 000000000..ea08a73b0\r\n<\/span><span class=\"gd\">--- \/dev\/null\r\n<\/span><span class=\"gi\">+++ b\/src\/sonic-etcdconfig\/debian\/changelog\r\n<\/span><span class=\"p\">@@ -0,0 +1,5 @@<\/span>\r\n<span class=\"gi\">+etcdconfig (1.0.0-0) unstable; urgency=low\r\n+\r\n+  * initial release\r\n+\r\n+ -- Masaru OKI &lt;*****@*********&gt;  Mon, 5 Jan 2021 18:49:00 +0900\r\n<\/span><span class=\"gh\">diff --git a\/src\/sonic-etcdconfig\/debian\/compat b\/src\/sonic-etcdconfig\/debian\/compat\r\n<\/span><span class=\"p\">new file mode 100644\r\n<\/span><span class=\"gh\">index 000000000..f599e28b8\r\n<\/span><span class=\"gd\">--- \/dev\/null\r\n<\/span><span class=\"gi\">+++ b\/src\/sonic-etcdconfig\/debian\/compat\r\n<\/span><span class=\"p\">@@ -0,0 +1 @@<\/span>\r\n<span class=\"gi\">+10\r\n<\/span><span class=\"gh\">diff --git a\/src\/sonic-etcdconfig\/debian\/control b\/src\/sonic-etcdconfig\/debian\/control\r\n<\/span><span class=\"p\">new file mode 100644\r\n<\/span><span class=\"gh\">index 000000000..34374fc69\r\n<\/span><span class=\"gd\">--- \/dev\/null\r\n<\/span><span class=\"gi\">+++ b\/src\/sonic-ecdconfig\/debian\/control\r\n<\/span><span class=\"p\">@@ -0,0 +1,10 @@<\/span>\r\n<span class=\"gi\">+Source: etcdconfig\r\n+Maintainer: Masaru OKI &lt;*****@*********&gt;\r\n+Section: net\r\n+Priority: optional\r\n+Build-Depends: dh-exec (&gt;=0.3), debhelper (&gt;= 9)\r\n+Standards-Version: 1.0.0\r\n+\r\n+Package: etcdconfig\r\n+Architecture: amd64\r\n+Description: This package contains Distiributed Configuration Service for SONiC.\r\n<\/span><span class=\"gh\">diff --git a\/src\/sonic-etcdconfig\/debian\/rules b\/src\/sonic-etcdconfig\/debian\/rules\r\n<\/span><span class=\"p\">new file mode 100755\r\n<\/span><span class=\"gh\">index 000000000..dd72c9a7b\r\n<\/span><span class=\"gd\">--- \/dev\/null\r\n<\/span><span class=\"gi\">+++ b\/src\/sonic-etcdconfig\/debian\/rules\r\n<\/span><span class=\"p\">@@ -0,0 +1,7 @@<\/span>\r\n<span class=\"gi\">+#!\/usr\/bin\/make -f\r\n+# See debhelper(7) (uncomment to enable)\r\n+# output every command that modifies files on the build system.\r\n+#export DH_VERBOSE = 1\r\n+\r\n+%:\r\n+       dh $@ \r\n<\/span><\/code><\/pre>\n<h3>\u6dfb\u52a0etcdconfigDebian\u8f6f\u4ef6\u5305\u7684\u6784\u5efa\u89c4\u5219<\/p>\n<pre class=\"post-pre\"><code><span class=\"gh\">diff --git a\/rules\/etcdconfig.mk b\/rules\/etcdconfig.mk\r\n<\/span><span class=\"p\">new file mode 100644\r\n<\/span><span class=\"gh\">index 000000000..ef51a6a15\r\n<\/span><span class=\"gd\">--- \/dev\/null\r\n<\/span><span class=\"gi\">+++ b\/rules\/etcdconfig.mk\r\n<\/span><span class=\"p\">@@ -0,0 +1,10 @@<\/span>\r\n<span class=\"gi\">+# etcdconfig package\r\n+\r\n+ETCDCONFIG_VERSION = 1.0.0-0\r\n+\r\n+export ETCDCONFIG_VERSION\r\n+export ETCDCONFIG\r\n+\r\n+ETCDCONFIG = etcdconfig_$(ETCDCONFIG_VERSION)_$(CONFIGURED_ARCH).deb\r\n+$(ETCDCONFIG)_SRC_PATH = $(SRC_PATH)\/sonic-etcdconfig\r\n+SONIC_DPKG_DEBS += $(ETCDCONFIG)\r\n<\/span><\/code><\/pre>\n<h3>\u6784\u5efa\u76ee\u6807\u4e3aetcdconfigDebian\u8f6f\u4ef6\u5305\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gh\">diff --git a\/slave.mk b\/slave.mk\r\nindex 54a01aaa1..296f15e67 100644\r\n<\/span><span class=\"gd\">--- a\/slave.mk\r\n<\/span><span class=\"gi\">+++ b\/slave.mk\r\n<\/span><span class=\"p\">@@ -1122,6 +1122,7 @@<\/span> $(addprefix $(TARGET_PATH)\/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)\/% : \\\r\n                 $(SONIC_DEVICE_DATA) \\\r\n                 $(IFUPDOWN2) \\\r\n                 $(KDUMP_TOOLS) \\\r\n<span class=\"gi\">+                $(ETCDCONFIG) \\\r\n<\/span>                 $(NTP) \\\r\n                 $(LIBPAM_RADIUS) \\\r\n                 $(LIBNSS_RADIUS) \\\r\n<\/code><\/pre>\n<h3>\u5c06etcdconfigDebian\u8f6f\u4ef6\u5305\u96c6\u6210\u5230SONiC\u4e2d\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gh\">diff --git a\/files\/build_templates\/sonic_debian_extension.j2 b\/files\/build_templates\/sonic_debian_extension.j2\r\nindex c5e76d3c4..41b356365 100644\r\n<\/span><span class=\"gd\">--- a\/files\/build_templates\/sonic_debian_extension.j2\r\n<\/span><span class=\"gi\">+++ b\/files\/build_templates\/sonic_debian_extension.j2\r\n<\/span><span class=\"p\">@@ -914,6 +914,9 @@<\/span> sudo cp {{src}} $FILESYSTEM_ROOT\/{{dst}}\r\n {% endif -%}\r\n {% endfor -%}\r\n \r\n<span class=\"gi\">+# Install etcdconfig\r\n+sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path\/etcdconfig_*.deb\r\n+\r\n<\/span> {% if sonic_asic_platform == \"mellanox\" %}\r\n sudo mkdir -p $FILESYSTEM_ROOT\/etc\/mlnx\/\r\n sudo cp $files_path\/$MLNX_SPC_FW_FILE $FILESYSTEM_ROOT\/etc\/mlnx\/fw-SPC.mfa\r\n<\/code><\/pre>\n<h3>\u5c06etcd\u5ba2\u6237\u7aef\u96c6\u6210\u5230SONiC\u4e2detcd\u7684\u5ba2\u6237\u7aef\u5c06\u4f7f\u7528\u73b0\u6709\u7684\u7248\u672c\u3002\u8fd9\u662f\u4e4b\u524d\u4ecb\u7ecd\u7684\u4e8c\u8fdb\u5236\u8f6f\u4ef6\u5305\u7684\u5185\u5d4c\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gh\">diff --git a\/build_debian.sh b\/build_debian.sh\r\nindex 01a10d78d..705076017 100755\r\n<\/span><span class=\"gd\">--- a\/build_debian.sh\r\n<\/span><span class=\"gi\">+++ b\/build_debian.sh\r\n<\/span><span class=\"p\">@@ -355,6 +355,7 @@<\/span> sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y in\r\n     iptables-persistent     \\\r\n     ebtables                \\\r\n     logrotate               \\\r\n<span class=\"gi\">+    etcd-client             \\\r\n<\/span>     curl                    \\\r\n     kexec-tools             \\\r\n     less                    \\\r\n<\/code><\/pre>\n<h3>\u5c06DDlog\u7f16\u8bd1\u5668\u96c6\u6210\u5230\u6784\u5efa\u73af\u5883\u4e2d\u3002\u6211\u4eceGithub\u83b7\u53d6\u53d1\u5e03\u4e8c\u8fdb\u5236\u6587\u4ef6\u3002\u7531\u4e8e\u53ea\u6709amd64\u67b6\u6784\u53ef\u7528\uff0c\u6240\u4ee5\u9644\u52a0\u4e86\u6761\u4ef6\uff0c\u4f46\u662f\u6211\u521a\u624d\u610f\u8bc6\u5230\u5176\u4ed6\u90e8\u5206\u6ca1\u6709\u4efb\u4f55\u6761\u4ef6\u3002\u975e\u5e38\u62b1\u6b49\u4e0d\u5b8c\u6574\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gh\">diff --git a\/sonic-slave-bullseye\/Dockerfile.j2 b\/sonic-slave-bullseye\/Dockerfile.j2\r\nindex 296905787..7ae7bbf27 100644\r\n<\/span><span class=\"gd\">--- a\/sonic-slave-bullseye\/Dockerfile.j2\r\n<\/span><span class=\"gi\">+++ b\/sonic-slave-bullseye\/Dockerfile.j2\r\n<\/span><span class=\"p\">@@ -610,6 +610,15 @@<\/span> RUN apt-get install -y docker-ce=5:20.10.14~3-0~debian-bullseye docker-ce-cli=5:\r\n RUN echo \"DOCKER_OPTS=\\\"--experimental --storage-driver=vfs {{ DOCKER_EXTRA_OPTS }}\\\"\" &gt;&gt; \/etc\/default\/docker\r\n RUN update-alternatives --set iptables \/usr\/sbin\/iptables-legacy\r\n \r\n<span class=\"gi\">+# Install differential datalog\r\n+{% if CONFIGURED_ARCH == \"amd64\" -%}\r\n+RUN wget https:\/\/github.com\/vmware\/differential-datalog\/releases\/download\/v0.35.0\/ddlog-v0.35.0-20210120055331-linux.tar.gz \\\r\n+ &amp;&amp; tar -C \/usr\/local -xzf ddlog-v0.35.0-20210120055331-linux.tar.gz \\\r\n+ &amp;&amp; echo 'export PATH=$PATH:\/usr\/local\/ddlog\/bin' &gt;&gt; \/etc\/bash.bashrc \\\r\n+ &amp;&amp; echo 'export DDLOG_HOME=\/usr\/local\/ddlog' &gt;&gt; \/etc\/bash.bashrc \\\r\n+ &amp;&amp; rm ddlog-v0.35.0-20210120055331-linux.tar.gz\r\n+{% endif -%}\r\n+\r\n<\/span> # Install m2crypto package, needed by SWI tools\r\n RUN pip3 install m2crypto==0.36.0\r\n \r\n<\/code><\/pre>\n<h3>\u5c06 Rust \u7f16\u8bd1\u5668\u96c6\u6210\u5230\u6784\u5efa\u73af\u5883\u4e2d\u8fd9\u57fa\u672c\u4e0a\u662f\u63a8\u8350\u7684\u5b98\u65b9\u65b9\u6cd5\uff0c\u4f46\u6709\u4e9b\u7279\u6b8a\u3002<br \/>\n\u901a\u5e38\u60c5\u51b5\u4e0b\uff0cRust\u7f16\u8bd1\u5668\u4f1a\u5b89\u88c5\u5728\u4e00\u822c\u7528\u6237\u73af\u5883\u4e2d\uff0c\u6240\u4ee5\u6211\u4eec\u7a0d\u4f5c\u8c03\u6574\uff0c\u4ee5\u9002\u5e94\u6267\u884c\u6784\u5efa\u7684\u7528\u6237\u73af\u5883\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gh\">index 2eb7ef18b..02d80e1e7 100644\r\n<\/span><span class=\"gd\">--- a\/sonic-slave-bullseye\/Dockerfile.user.j2\r\n<\/span><span class=\"gi\">+++ b\/sonic-slave-bullseye\/Dockerfile.user.j2\r\n<\/span><span class=\"p\">@@ -31,4 +31,7 @@<\/span> RUN chmod go= \/var\/$user\/.ssh -R\r\n # Add user to sudoers\r\n RUN echo \"$user ALL=(ALL) NOPASSWD:ALL\" &gt;&gt;\/etc\/sudoers\r\n \r\n<span class=\"gi\">+# Install Rust\r\n+RUN curl --proto '=https' --tlsv1.2 -sSf https:\/\/sh.rustup.rs | su $user -c \"sh -s -- -y\" &amp;&amp; echo 'export PATH=$PATH:$HOME\/.cargo\/bin' &gt;&gt; \/etc\/bash.bashrc\r\n+\r\n<\/span> USER $user\r\n<\/code><\/pre>\n<p>\u8fd9\u5c31\u662f\u4ee5\u4e0a\u7684\u5185\u5bb9\u3002<\/p>\n<h1>\u603b\u4e4b\u8981\u542f\u52a8\u5d4c\u5165\u7684\u4e8c\u8fdb\u5236\u6587\u4ef6\u4f5c\u4e3a\u670d\u52a1\uff0c\u8981\u5c06\u5176\u5d4c\u5165\u5230\u73b0\u6709\u7684docker\u5bb9\u5668\u4e2d\uff0c\u8981\u589e\u52a0docker\u5bb9\u5668\uff0c\u8fd8\u6709\u5f88\u591a\u9700\u8981\u8865\u5145\u7684\u5185\u5bb9\uff0c\u4f46\u662f\u4e5f\u4e0d\u80fd\u8fc7\u5206\u81a8\u80c0\uff0c\u6240\u4ee5\u6211\u6253\u7b97\u5c31\u8fd9\u4e48\u591a\u5148\u3002<\/p>\n<p>\u5982\u679c\u60a8\u5e0c\u671b\u4e3aSONiC\u6dfb\u52a0\u529f\u80fd\uff0c\u5e0c\u671b\u8fd9\u53ef\u4ee5\u4f5c\u4e3a\u53c2\u8003\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148\u6211\u8ba4\u4e3a\u5f88\u5c11\u6709\u4eba\u53ea\u4f7f\u7528Windows\u3001Mac\u3001iOS\u3001Android\u6216\u5176\u4ed6\u5404\u79cd\u64cd\u4f5c\u7cfb\u7edf\u4e0a\u63d0\u4f9b\u7684\u6807\u51c6\u5e94\u7528\u7a0b\u5e8f\u3002 [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[227],"class_list":["post-27986","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-227"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5982\u4f55\u5728SONiC\u4e0a\u6dfb\u52a0\u5e94\u7528\u7a0b\u5e8f - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"\u5173\u4e8e\u5982\u4f55\u5728SONiC\u4e0a\u6dfb\u52a0\u5e94\u7528\u7a0b\u5e8f\u7684\u6280\u672f\u6587\u7ae0\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5982\u4f55\u5728sonic\u4e0a\u6dfb\u52a0\u5e94\u7528\u7a0b\u5e8f\u3002-3\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5982\u4f55\u5728SONiC\u4e0a\u6dfb\u52a0\u5e94\u7528\u7a0b\u5e8f\" \/>\n<meta property=\"og:description\" content=\"\u5173\u4e8e\u5982\u4f55\u5728SONiC\u4e0a\u6dfb\u52a0\u5e94\u7528\u7a0b\u5e8f\u7684\u6280\u672f\u6587\u7ae0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5982\u4f55\u5728sonic\u4e0a\u6dfb\u52a0\u5e94\u7528\u7a0b\u5e8f\u3002-3\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-22T15:52:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-11T21:43:30+00:00\" \/>\n<meta name=\"author\" content=\"\u5b87, \u534e\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u5b87, \u534e\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8sonic%e4%b8%8a%e6%b7%bb%e5%8a%a0%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e3%80%82-3\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8sonic%e4%b8%8a%e6%b7%bb%e5%8a%a0%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e3%80%82-3\/\",\"name\":\"\u5982\u4f55\u5728SONiC\u4e0a\u6dfb\u52a0\u5e94\u7528\u7a0b\u5e8f - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-04-22T15:52:52+00:00\",\"dateModified\":\"2025-08-11T21:43:30+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458\"},\"description\":\"\u5173\u4e8e\u5982\u4f55\u5728SONiC\u4e0a\u6dfb\u52a0\u5e94\u7528\u7a0b\u5e8f\u7684\u6280\u672f\u6587\u7ae0\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8sonic%e4%b8%8a%e6%b7%bb%e5%8a%a0%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e3%80%82-3\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8sonic%e4%b8%8a%e6%b7%bb%e5%8a%a0%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e3%80%82-3\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8sonic%e4%b8%8a%e6%b7%bb%e5%8a%a0%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e3%80%82-3\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5982\u4f55\u5728SONiC\u4e0a\u6dfb\u52a0\u5e94\u7528\u7a0b\u5e8f\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458\",\"name\":\"\u5b87, \u534e\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g\",\"caption\":\"\u5b87, \u534e\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yuhua\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8sonic%e4%b8%8a%e6%b7%bb%e5%8a%a0%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e3%80%82-3\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5982\u4f55\u5728SONiC\u4e0a\u6dfb\u52a0\u5e94\u7528\u7a0b\u5e8f - Blog - Silicon Cloud","description":"\u5173\u4e8e\u5982\u4f55\u5728SONiC\u4e0a\u6dfb\u52a0\u5e94\u7528\u7a0b\u5e8f\u7684\u6280\u672f\u6587\u7ae0","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u5982\u4f55\u5728sonic\u4e0a\u6dfb\u52a0\u5e94\u7528\u7a0b\u5e8f\u3002-3\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5982\u4f55\u5728SONiC\u4e0a\u6dfb\u52a0\u5e94\u7528\u7a0b\u5e8f","og_description":"\u5173\u4e8e\u5982\u4f55\u5728SONiC\u4e0a\u6dfb\u52a0\u5e94\u7528\u7a0b\u5e8f\u7684\u6280\u672f\u6587\u7ae0","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5982\u4f55\u5728sonic\u4e0a\u6dfb\u52a0\u5e94\u7528\u7a0b\u5e8f\u3002-3\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-04-22T15:52:52+00:00","article_modified_time":"2025-08-11T21:43:30+00:00","author":"\u5b87, \u534e","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u5b87, \u534e","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"1 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8sonic%e4%b8%8a%e6%b7%bb%e5%8a%a0%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e3%80%82-3\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8sonic%e4%b8%8a%e6%b7%bb%e5%8a%a0%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e3%80%82-3\/","name":"\u5982\u4f55\u5728SONiC\u4e0a\u6dfb\u52a0\u5e94\u7528\u7a0b\u5e8f - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-04-22T15:52:52+00:00","dateModified":"2025-08-11T21:43:30+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458"},"description":"\u5173\u4e8e\u5982\u4f55\u5728SONiC\u4e0a\u6dfb\u52a0\u5e94\u7528\u7a0b\u5e8f\u7684\u6280\u672f\u6587\u7ae0","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8sonic%e4%b8%8a%e6%b7%bb%e5%8a%a0%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e3%80%82-3\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8sonic%e4%b8%8a%e6%b7%bb%e5%8a%a0%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e3%80%82-3\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8sonic%e4%b8%8a%e6%b7%bb%e5%8a%a0%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e3%80%82-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5982\u4f55\u5728SONiC\u4e0a\u6dfb\u52a0\u5e94\u7528\u7a0b\u5e8f"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458","name":"\u5b87, \u534e","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g","caption":"\u5b87, \u534e"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yuhua\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8sonic%e4%b8%8a%e6%b7%bb%e5%8a%a0%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e3%80%82-3\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/27986","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=27986"}],"version-history":[{"count":3,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/27986\/revisions"}],"predecessor-version":[{"id":111242,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/27986\/revisions\/111242"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=27986"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=27986"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=27986"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}