[{"data":1,"prerenderedAt":1487},["ShallowReactive",2],{"IconsRSS_AZ2yKBMbmCTU4kfXmYxp619DzlwCQeMpvDPSWtWb18":3,"IconsSearch_qBn5ufcPX2Nme04OeJxOeohomM4BAKORgjW1jMihmAM":8,"IconsContrast_lkQdWQLdbA7QNolI6KzC3DKinfaUX6dN2kxuqBc4ao":13,"$fpvh1S_hVNEI1nIFGLPmCl0PXW6f6qdT-2m32-fXVzrc":18,"$fWjlG_HjJpvplnzbdkRGgjdxlvesCKcf13gwK0DBYxkM":1247,"$fKxc64HKwSyE3mCeSV4Z75NCjItIw3wR8_SShty0EWMw":1302,"ThemeSidebarAuthorInfo_Wcfq6adNGi2w7hRDgGnpqhSbRnIIbOkAq0VopT0414":1461,"IconsArrowRight_5jviWhR9Ji4ocmrH7nqgVCbLMgqf8CwUfrOMcjUqSw":1472,"IconsToc_UjczwWWzJcA3C0ICgsA6aFbI4xfJlY7qOtoSKCTPr6s":1477,"IconsArrowUp_Y4QMckxWq3Hf8D1dpS8SxA8qGwVmAA6cfO9mcw5hfk":1482},["Island",4],{"key":5,"result":6},"IconsRSS_AZ2yKBMbmCTU4kfXmYxp619DzlwCQeMpvDPSWtWb18",{"head":7},{},["Island",9],{"key":10,"result":11},"IconsSearch_qBn5ufcPX2Nme04OeJxOeohomM4BAKORgjW1jMihmAM",{"head":12},{},["Island",14],{"key":15,"result":16},"IconsContrast_lkQdWQLdbA7QNolI6KzC3DKinfaUX6dN2kxuqBc4ao",{"head":17},{},{"data":19,"astTree":36},{"title":20,"date":21,"categories":22,"tags":23,"excerpt":29,"frontmatter":30,"content":31,"surroundings":32},"在 CentOS Stream 上安装 QEMU 和 libvirt","2026-06-10T15:03:33+08:00","技术",[24,25,26,27,28],"Linux","CentOS","QEMU","libvirt","Cockpit","本文介绍在运行 CentOS Stream 的服务器上安装 QEMU 和 libvirt、以及利用系统预装的 Cockpit 管理虚拟机的方法。",{},"\n本文介绍在运行 CentOS Stream 的服务器上安装 QEMU 和 libvirt、以及利用系统预装的 Cockpit 管理虚拟机的方法。\n\n\n\n> 本文以 CentOS Stream 为示范，但步骤理论适用于大部分的 Linux 发行版。\n> \n> 本文已默认你正在使用 `root` 账户操作。\n\n## 检查虚拟化支持\n\n运行下述指令检查 CPU 的虚拟化支持：\n\n```shell\negrep -c '(vmx|svm)' \u002Fproc\u002Fcpuinfo\n```\n\n查看返回结果是否大于 0。若是，说明 CPU 支持虚拟化、可进行下一步；反之，请重启至 BIOS、检查如 Intel VT-x 或 AMD-V 的虚拟化选项是否开启。\n\n如果你尝试在 VPS 上操作，请确保你正在使用的实例支持 **嵌套虚拟化**，不然可以洗洗睡了。\n\n## QEMU 和 libvirt\n\n### 这是什么？\n\nLinux 内核内置了一个名为 `KVM` 的模块，能够模拟 CPU、内存和网络，但也只能够模拟这三类；而 QEMU 是一个免费的开源模拟器，可以模拟出一个完整的计算机系统，美中不足的是它早期以纯软件形式实现的模拟、性能较差。因此，当时的 KVM 团队维护了一个名为 `qemu-kvm` 的 Fork、让 QEMU 来补齐 KVM 的 ”短板“，大幅提升了虚拟机的性能。后来这个 Fork 合并回了 QEMU、成为了其原生支持的功能。\n\nlibvirt 是由 Red Hat 开发的、用于管理硬件虚拟化的工具库，支持 KVM、LXC 在内的多种虚拟化方案。\n\n### 如何安装？\n\n首先需要安装 `qemu-kvm` 和 `qemu-img`。前者提供了用户级的 KVM 模拟器，后者则提供了磁盘管理器。\n\n运行下述指令安装这两个软件包：\n\n```shell\ndnf install qemu-kvm qemu-img\n```\n\n> 如果你感到自信、考虑跳过软件安装的确认部分，可以考虑加一个 `-y`。\n\n接着，来安装一些需要的 libvirt 软件包：\n\n- `libvirt`：libvirt 本体；\n\n- `libvirt-python`：允许用 Python 编写的程序调用 libvirt API 接口，可选；\n\n- `virt-manager`：大家所熟知的 **Virtual Machine Manager**、提供了一个快捷管理虚拟机的界面，但需要服务器安装了桌面环境（Desktop Environment）、没有的可以考虑不装；\n\n- `libvirt-client`：提供了一个名为 `virsh` 的 CLI，可用于在命令行或 Virtual Shell 中管理虚拟机的状态。\n\n本文需要使用到第一个和第五个软件包。运行下述指令安装它们：\n\n```shell\ndnf install libvirt libvirt-client\n```\n\n安装完成后，将 `libvirtd` 设为自启动并运行服务：\n\n```shell\nsystemctl enable --now libvirtd\n```\n\n## Cockpit\n\nCockpit 是由 Red Hat 开发的、允许管理员在网页端管理服务器的软件。考虑到一般的 Linux 服务器不会安装桌面环境、也用不了 Virtual Machine Manager，因此就以 Cockpit 为替。\n\n### 安装 Cockpit\n\n自 2019 年发布的 RHEL 8 开始，Cockpit 会默认附装在系统里，除非用户在安装时选择了最小安装。如果你的服务器系统在安装时选择了最小安装，或是由提供商预先安装、因此并未选装 Cockpit，可以运行下述指令手动安装：\n\n```shell\ndnf install cockpit\n```\n\n同时，需要在防火墙放行 Cockpit：\n\n```shell\nfirewall-cmd --permanent --add-service=cockpit\n```\n\n不论是手动安装还是附装，默认情况下的 Cockpit 服务，需要运行下述指令将其设为自启动并运行：\n\n```shell\nsystemctl enable --now cockpit.socket\n```\n\n现在可通过 `http:\u002F\u002F{服务器 IP}:9090` 访问 Cockpit 页面。\n\n### 允许 root 用户登录 Cockpit\n\n出于安全考虑，自 RHEL 9.2 \u002F CentOS Stream 9 开始，Cockpit 默认不允许使用 root 用户登录。\n\n编者同样不推荐这么做，除非你铁了心要 root 用户走到底。这种情况下，可以通过修改 `\u002Fetc\u002Fcockpit\u002Fdisallowed-users`、将里面的 root 删掉。\n\n```\nnano \u002Fetc\u002Fcockpit\u002Fdisallowed-users\n\n\u002F\u002F \u002Fetc\u002Fcockpit\u002Fdisallowed-users\n# List of users which are not allowed to login to Cockpit\nroot \u003C-- 删掉这一个\n```\n\n修改完成后，重启 Cockpit 服务，即可使用 root 用户登录 Cockpit。\n\n### 通过 Cockpit 管理虚拟机\n\n要使用 Cockpit 管理虚拟机，你需要额外安装一个名为 `cockpit-machines` 的软件包。运行下述指令安装这个软件包：\n\n```shell\ndnf install cockpit-machines\n```\n\n安装完成后，刷新 Cockpit 页面，即可在侧边栏发现一个名为 Virtual machines 的选项。这里便是你在 Cockpit 管理虚拟机的入口。\n",{"prev":33},{"slug":34,"title":35},"my-linux-usage","我的 Linux 使用现况",{"type":37,"children":38,"position":1241},"root",[39,55,57,119,120,138,139,154,155,195,196,211,212,251,252,268,269,287,288,341,342,357,358,373,374,424,425,440,441,472,473,516,517,532,533,729,730,743,744,773,774,807,808,839,840,855,856,871,872,889,890,905,906,930,931,945,946,972,973,987,988,1016,1017,1051,1052,1068,1069,1083,1084,1117,1118,1136,1137,1151,1152,1168,1169,1202,1203,1227,1228],{"type":40,"tagName":41,"properties":42,"children":43,"position":52},"element","p",{},[44],{"type":45,"value":29,"position":46},"text",{"start":47,"end":50},{"line":48,"column":49,"offset":49},2,1,{"line":48,"column":51,"offset":51},73,{"start":53,"end":54},{"line":48,"column":49,"offset":49},{"line":48,"column":51,"offset":51},{"type":45,"value":56},"\n",{"type":40,"tagName":58,"properties":59,"children":60,"position":115},"blockquote",{},[61,62,78,79,114],{"type":45,"value":56},{"type":40,"tagName":41,"properties":63,"children":64,"position":75},{},[65],{"type":45,"value":66,"position":67},"本文以 CentOS Stream 为示范，但步骤理论适用于大部分的 Linux 发行版。",{"start":68,"end":72},{"line":69,"column":70,"offset":71},6,3,79,{"line":69,"column":73,"offset":74},48,124,{"start":76,"end":77},{"line":69,"column":70,"offset":71},{"line":69,"column":73,"offset":74},{"type":45,"value":56},{"type":40,"tagName":41,"properties":80,"children":81,"position":111},{},[82,91,104],{"type":45,"value":83,"position":84},"本文已默认你正在使用 ",{"start":85,"end":88},{"line":86,"column":70,"offset":87},8,130,{"line":86,"column":89,"offset":90},14,141,{"type":40,"tagName":92,"properties":93,"children":94,"position":101},"code",{},[95],{"type":45,"value":37,"position":96},{"start":97,"end":98},{"line":86,"column":89,"offset":90},{"line":86,"column":99,"offset":100},20,147,{"start":102,"end":103},{"line":86,"column":89,"offset":90},{"line":86,"column":99,"offset":100},{"type":45,"value":105,"position":106}," 账户操作。",{"start":107,"end":108},{"line":86,"column":99,"offset":100},{"line":86,"column":109,"offset":110},26,153,{"start":112,"end":113},{"line":86,"column":70,"offset":87},{"line":86,"column":109,"offset":110},{"type":45,"value":56},{"start":116,"end":118},{"line":69,"column":49,"offset":117},77,{"line":86,"column":109,"offset":110},{"type":45,"value":56},{"type":40,"tagName":121,"properties":122,"children":124,"position":134},"h2",{"id":123},"检查虚拟化支持",[125],{"type":45,"value":123,"position":126},{"start":127,"end":131},{"line":128,"column":129,"offset":130},10,4,158,{"line":128,"column":132,"offset":133},11,165,{"start":135,"end":137},{"line":128,"column":49,"offset":136},155,{"line":128,"column":132,"offset":133},{"type":45,"value":56},{"type":40,"tagName":41,"properties":140,"children":141,"position":151},{},[142],{"type":45,"value":143,"position":144},"运行下述指令检查 CPU 的虚拟化支持：",{"start":145,"end":148},{"line":146,"column":49,"offset":147},12,167,{"line":146,"column":149,"offset":150},21,187,{"start":152,"end":153},{"line":146,"column":49,"offset":147},{"line":146,"column":149,"offset":150},{"type":45,"value":56},{"type":37,"children":156},[157],{"type":40,"tagName":158,"properties":159,"children":163},"pre",{"class":160,"style":161,"tabindex":162},"shiki shiki-themes one-light one-dark-pro","background-color:#FAFAFA;--shiki-dark-bg:#282c34;color:#383A42;--shiki-dark:#abb2bf","0",[164],{"type":40,"tagName":92,"properties":165,"children":166},{},[167],{"type":40,"tagName":168,"properties":169,"children":171},"span",{"class":170},"line",[172,178,184,190],{"type":40,"tagName":168,"properties":173,"children":175},{"style":174},"color:#4078F2;--shiki-dark:#61AFEF",[176],{"type":45,"value":177},"egrep",{"type":40,"tagName":168,"properties":179,"children":181},{"style":180},"color:#986801;--shiki-dark:#D19A66",[182],{"type":45,"value":183}," -c",{"type":40,"tagName":168,"properties":185,"children":187},{"style":186},"color:#50A14F;--shiki-dark:#98C379",[188],{"type":45,"value":189}," '(vmx|svm)'",{"type":40,"tagName":168,"properties":191,"children":192},{"style":186},[193],{"type":45,"value":194}," \u002Fproc\u002Fcpuinfo",{"type":45,"value":56},{"type":40,"tagName":41,"properties":197,"children":198,"position":208},{},[199],{"type":45,"value":200,"position":201},"查看返回结果是否大于 0。若是，说明 CPU 支持虚拟化、可进行下一步；反之，请重启至 BIOS、检查如 Intel VT-x 或 AMD-V 的虚拟化选项是否开启。",{"start":202,"end":205},{"line":203,"column":49,"offset":204},18,238,{"line":203,"column":206,"offset":207},84,321,{"start":209,"end":210},{"line":203,"column":49,"offset":204},{"line":203,"column":206,"offset":207},{"type":45,"value":56},{"type":40,"tagName":41,"properties":213,"children":214,"position":248},{},[215,223,241],{"type":45,"value":216,"position":217},"如果你尝试在 VPS 上操作，请确保你正在使用的实例支持 ",{"start":218,"end":220},{"line":99,"column":49,"offset":219},323,{"line":99,"column":221,"offset":222},30,352,{"type":40,"tagName":224,"properties":225,"children":226,"position":236},"strong",{},[227],{"type":45,"value":228,"position":229},"嵌套虚拟化",{"start":230,"end":233},{"line":99,"column":231,"offset":232},32,354,{"line":99,"column":234,"offset":235},37,359,{"start":237,"end":238},{"line":99,"column":221,"offset":222},{"line":99,"column":239,"offset":240},39,361,{"type":45,"value":242,"position":243},"，不然可以洗洗睡了。",{"start":244,"end":245},{"line":99,"column":239,"offset":240},{"line":99,"column":246,"offset":247},49,371,{"start":249,"end":250},{"line":99,"column":49,"offset":219},{"line":99,"column":246,"offset":247},{"type":45,"value":56},{"type":40,"tagName":121,"properties":253,"children":255,"position":264},{"id":254},"qemu-和-libvirt",[256],{"type":45,"value":257,"position":258},"QEMU 和 libvirt",{"start":259,"end":262},{"line":260,"column":129,"offset":261},22,376,{"line":260,"column":203,"offset":263},390,{"start":265,"end":267},{"line":260,"column":49,"offset":266},373,{"line":260,"column":203,"offset":263},{"type":45,"value":56},{"type":40,"tagName":270,"properties":271,"children":273,"position":283},"h3",{"id":272},"这是什么",[274],{"type":45,"value":275,"position":276},"这是什么？",{"start":277,"end":281},{"line":278,"column":279,"offset":280},24,5,396,{"line":278,"column":128,"offset":282},401,{"start":284,"end":286},{"line":278,"column":49,"offset":285},392,{"line":278,"column":128,"offset":282},{"type":45,"value":56},{"type":40,"tagName":41,"properties":289,"children":290,"position":338},{},[291,299,311,318,331],{"type":45,"value":292,"position":293},"Linux 内核内置了一个名为 ",{"start":294,"end":296},{"line":109,"column":49,"offset":295},403,{"line":109,"column":297,"offset":298},17,419,{"type":40,"tagName":92,"properties":300,"children":301,"position":308},{},[302],{"type":45,"value":303,"position":304},"KVM",{"start":305,"end":306},{"line":109,"column":297,"offset":298},{"line":109,"column":260,"offset":307},424,{"start":309,"end":310},{"line":109,"column":297,"offset":298},{"line":109,"column":260,"offset":307},{"type":45,"value":312,"position":313}," 的模块，能够模拟 CPU、内存和网络，但也只能够模拟这三类；而 QEMU 是一个免费的开源模拟器，可以模拟出一个完整的计算机系统，美中不足的是它早期以纯软件形式实现的模拟、性能较差。因此，当时的 KVM 团队维护了一个名为 ",{"start":314,"end":315},{"line":109,"column":260,"offset":307},{"line":109,"column":316,"offset":317},135,537,{"type":40,"tagName":92,"properties":319,"children":320,"position":328},{},[321],{"type":45,"value":322,"position":323},"qemu-kvm",{"start":324,"end":325},{"line":109,"column":316,"offset":317},{"line":109,"column":326,"offset":327},145,547,{"start":329,"end":330},{"line":109,"column":316,"offset":317},{"line":109,"column":326,"offset":327},{"type":45,"value":332,"position":333}," 的 Fork、让 QEMU 来补齐 KVM 的 ”短板“，大幅提升了虚拟机的性能。后来这个 Fork 合并回了 QEMU、成为了其原生支持的功能。",{"start":334,"end":335},{"line":109,"column":326,"offset":327},{"line":109,"column":336,"offset":337},219,621,{"start":339,"end":340},{"line":109,"column":49,"offset":295},{"line":109,"column":336,"offset":337},{"type":45,"value":56},{"type":40,"tagName":41,"properties":343,"children":344,"position":354},{},[345],{"type":45,"value":346,"position":347},"libvirt 是由 Red Hat 开发的、用于管理硬件虚拟化的工具库，支持 KVM、LXC 在内的多种虚拟化方案。",{"start":348,"end":351},{"line":349,"column":49,"offset":350},28,623,{"line":349,"column":352,"offset":353},60,682,{"start":355,"end":356},{"line":349,"column":49,"offset":350},{"line":349,"column":352,"offset":353},{"type":45,"value":56},{"type":40,"tagName":270,"properties":359,"children":361,"position":369},{"id":360},"如何安装",[362],{"type":45,"value":363,"position":364},"如何安装？",{"start":365,"end":367},{"line":221,"column":279,"offset":366},688,{"line":221,"column":128,"offset":368},693,{"start":370,"end":372},{"line":221,"column":49,"offset":371},684,{"line":221,"column":128,"offset":368},{"type":45,"value":56},{"type":40,"tagName":41,"properties":375,"children":376,"position":421},{},[377,384,395,401,414],{"type":45,"value":378,"position":379},"首先需要安装 ",{"start":380,"end":382},{"line":231,"column":49,"offset":381},695,{"line":231,"column":86,"offset":383},702,{"type":40,"tagName":92,"properties":385,"children":386,"position":392},{},[387],{"type":45,"value":322,"position":388},{"start":389,"end":390},{"line":231,"column":86,"offset":383},{"line":231,"column":203,"offset":391},712,{"start":393,"end":394},{"line":231,"column":86,"offset":383},{"line":231,"column":203,"offset":391},{"type":45,"value":396,"position":397}," 和 ",{"start":398,"end":399},{"line":231,"column":203,"offset":391},{"line":231,"column":149,"offset":400},715,{"type":40,"tagName":92,"properties":402,"children":403,"position":411},{},[404],{"type":45,"value":405,"position":406},"qemu-img",{"start":407,"end":408},{"line":231,"column":149,"offset":400},{"line":231,"column":409,"offset":410},31,725,{"start":412,"end":413},{"line":231,"column":149,"offset":400},{"line":231,"column":409,"offset":410},{"type":45,"value":415,"position":416},"。前者提供了用户级的 KVM 模拟器，后者则提供了磁盘管理器。",{"start":417,"end":418},{"line":231,"column":409,"offset":410},{"line":231,"column":419,"offset":420},62,756,{"start":422,"end":423},{"line":231,"column":49,"offset":381},{"line":231,"column":419,"offset":420},{"type":45,"value":56},{"type":40,"tagName":41,"properties":426,"children":427,"position":437},{},[428],{"type":45,"value":429,"position":430},"运行下述指令安装这两个软件包：",{"start":431,"end":434},{"line":432,"column":49,"offset":433},34,758,{"line":432,"column":435,"offset":436},16,773,{"start":438,"end":439},{"line":432,"column":49,"offset":433},{"line":432,"column":435,"offset":436},{"type":45,"value":56},{"type":37,"children":442},[443],{"type":40,"tagName":158,"properties":444,"children":445},{"class":160,"style":161,"tabindex":162},[446],{"type":40,"tagName":92,"properties":447,"children":448},{},[449],{"type":40,"tagName":168,"properties":450,"children":451},{"class":170},[452,457,462,467],{"type":40,"tagName":168,"properties":453,"children":454},{"style":174},[455],{"type":45,"value":456},"dnf",{"type":40,"tagName":168,"properties":458,"children":459},{"style":186},[460],{"type":45,"value":461}," install",{"type":40,"tagName":168,"properties":463,"children":464},{"style":186},[465],{"type":45,"value":466}," qemu-kvm",{"type":40,"tagName":168,"properties":468,"children":469},{"style":186},[470],{"type":45,"value":471}," qemu-img",{"type":45,"value":56},{"type":40,"tagName":58,"properties":474,"children":475,"position":512},{},[476,477,511],{"type":45,"value":56},{"type":40,"tagName":41,"properties":478,"children":479,"position":508},{},[480,489,501],{"type":45,"value":481,"position":482},"如果你感到自信、考虑跳过软件安装的确认部分，可以考虑加一个 ",{"start":483,"end":486},{"line":484,"column":70,"offset":485},40,821,{"line":484,"column":487,"offset":488},33,851,{"type":40,"tagName":92,"properties":490,"children":491,"position":498},{},[492],{"type":45,"value":493,"position":494},"-y",{"start":495,"end":496},{"line":484,"column":487,"offset":488},{"line":484,"column":234,"offset":497},855,{"start":499,"end":500},{"line":484,"column":487,"offset":488},{"line":484,"column":234,"offset":497},{"type":45,"value":502,"position":503},"。",{"start":504,"end":505},{"line":484,"column":234,"offset":497},{"line":484,"column":506,"offset":507},38,856,{"start":509,"end":510},{"line":484,"column":70,"offset":485},{"line":484,"column":506,"offset":507},{"type":45,"value":56},{"start":513,"end":515},{"line":484,"column":49,"offset":514},819,{"line":484,"column":506,"offset":507},{"type":45,"value":56},{"type":40,"tagName":41,"properties":518,"children":519,"position":529},{},[520],{"type":45,"value":521,"position":522},"接着，来安装一些需要的 libvirt 软件包：",{"start":523,"end":526},{"line":524,"column":49,"offset":525},42,858,{"line":524,"column":527,"offset":528},25,882,{"start":530,"end":531},{"line":524,"column":49,"offset":525},{"line":524,"column":527,"offset":528},{"type":45,"value":56},{"type":40,"tagName":534,"properties":535,"children":536,"position":726},"ul",{},[537,538,573,574,611,612,670,671,725],{"type":45,"value":56},{"type":40,"tagName":539,"properties":540,"children":541,"position":569},"li",{},[542,543,568],{"type":45,"value":56},{"type":40,"tagName":41,"properties":544,"children":545,"position":565},{},[546,559],{"type":40,"tagName":92,"properties":547,"children":548,"position":556},{},[549],{"type":45,"value":27,"position":550},{"start":551,"end":554},{"line":552,"column":70,"offset":553},44,886,{"line":552,"column":146,"offset":555},895,{"start":557,"end":558},{"line":552,"column":70,"offset":553},{"line":552,"column":146,"offset":555},{"type":45,"value":560,"position":561},"：libvirt 本体；",{"start":562,"end":563},{"line":552,"column":146,"offset":555},{"line":552,"column":278,"offset":564},907,{"start":566,"end":567},{"line":552,"column":70,"offset":553},{"line":552,"column":278,"offset":564},{"type":45,"value":56},{"start":570,"end":572},{"line":552,"column":49,"offset":571},884,{"line":552,"column":278,"offset":564},{"type":45,"value":56},{"type":40,"tagName":539,"properties":575,"children":576,"position":607},{},[577,578,606],{"type":45,"value":56},{"type":40,"tagName":41,"properties":579,"children":580,"position":603},{},[581,596],{"type":40,"tagName":92,"properties":582,"children":583,"position":593},{},[584],{"type":45,"value":585,"position":586},"libvirt-python",{"start":587,"end":590},{"line":588,"column":70,"offset":589},46,911,{"line":588,"column":591,"offset":592},19,927,{"start":594,"end":595},{"line":588,"column":70,"offset":589},{"line":588,"column":591,"offset":592},{"type":45,"value":597,"position":598},"：允许用 Python 编写的程序调用 libvirt API 接口，可选；",{"start":599,"end":600},{"line":588,"column":591,"offset":592},{"line":588,"column":601,"offset":602},57,965,{"start":604,"end":605},{"line":588,"column":70,"offset":589},{"line":588,"column":601,"offset":602},{"type":45,"value":56},{"start":608,"end":610},{"line":588,"column":49,"offset":609},909,{"line":588,"column":601,"offset":602},{"type":45,"value":56},{"type":40,"tagName":539,"properties":613,"children":614,"position":666},{},[615,616,665],{"type":45,"value":56},{"type":40,"tagName":41,"properties":617,"children":618,"position":662},{},[619,632,638,655],{"type":40,"tagName":92,"properties":620,"children":621,"position":629},{},[622],{"type":45,"value":623,"position":624},"virt-manager",{"start":625,"end":627},{"line":73,"column":70,"offset":626},969,{"line":73,"column":297,"offset":628},983,{"start":630,"end":631},{"line":73,"column":70,"offset":626},{"line":73,"column":297,"offset":628},{"type":45,"value":633,"position":634},"：大家所熟知的 ",{"start":635,"end":636},{"line":73,"column":297,"offset":628},{"line":73,"column":527,"offset":637},991,{"type":40,"tagName":224,"properties":639,"children":640,"position":650},{},[641],{"type":45,"value":642,"position":643},"Virtual Machine Manager",{"start":644,"end":647},{"line":73,"column":645,"offset":646},27,993,{"line":73,"column":648,"offset":649},50,1016,{"start":651,"end":652},{"line":73,"column":527,"offset":637},{"line":73,"column":653,"offset":654},52,1018,{"type":45,"value":656,"position":657},"、提供了一个快捷管理虚拟机的界面，但需要服务器安装了桌面环境（Desktop Environment）、没有的可以考虑不装；",{"start":658,"end":659},{"line":73,"column":653,"offset":654},{"line":73,"column":660,"offset":661},114,1080,{"start":663,"end":664},{"line":73,"column":70,"offset":626},{"line":73,"column":660,"offset":661},{"type":45,"value":56},{"start":667,"end":669},{"line":73,"column":49,"offset":668},967,{"line":73,"column":660,"offset":661},{"type":45,"value":56},{"type":40,"tagName":539,"properties":672,"children":673,"position":721},{},[674,675,720],{"type":45,"value":56},{"type":40,"tagName":41,"properties":676,"children":677,"position":717},{},[678,691,697,710],{"type":40,"tagName":92,"properties":679,"children":680,"position":688},{},[681],{"type":45,"value":682,"position":683},"libvirt-client",{"start":684,"end":686},{"line":648,"column":70,"offset":685},1084,{"line":648,"column":591,"offset":687},1100,{"start":689,"end":690},{"line":648,"column":70,"offset":685},{"line":648,"column":591,"offset":687},{"type":45,"value":692,"position":693},"：提供了一个名为 ",{"start":694,"end":695},{"line":648,"column":591,"offset":687},{"line":648,"column":349,"offset":696},1109,{"type":40,"tagName":92,"properties":698,"children":699,"position":707},{},[700],{"type":45,"value":701,"position":702},"virsh",{"start":703,"end":704},{"line":648,"column":349,"offset":696},{"line":648,"column":705,"offset":706},35,1116,{"start":708,"end":709},{"line":648,"column":349,"offset":696},{"line":648,"column":705,"offset":706},{"type":45,"value":711,"position":712}," 的 CLI，可用于在命令行或 Virtual Shell 中管理虚拟机的状态。",{"start":713,"end":714},{"line":648,"column":705,"offset":706},{"line":648,"column":715,"offset":716},75,1156,{"start":718,"end":719},{"line":648,"column":70,"offset":685},{"line":648,"column":715,"offset":716},{"type":45,"value":56},{"start":722,"end":724},{"line":648,"column":49,"offset":723},1082,{"line":648,"column":715,"offset":716},{"type":45,"value":56},{"start":727,"end":728},{"line":552,"column":49,"offset":571},{"line":648,"column":715,"offset":716},{"type":45,"value":56},{"type":40,"tagName":41,"properties":731,"children":732,"position":740},{},[733],{"type":45,"value":734,"position":735},"本文需要使用到第一个和第五个软件包。运行下述指令安装它们：",{"start":736,"end":738},{"line":653,"column":49,"offset":737},1158,{"line":653,"column":221,"offset":739},1187,{"start":741,"end":742},{"line":653,"column":49,"offset":737},{"line":653,"column":221,"offset":739},{"type":45,"value":56},{"type":37,"children":745},[746],{"type":40,"tagName":158,"properties":747,"children":748},{"class":160,"style":161,"tabindex":162},[749],{"type":40,"tagName":92,"properties":750,"children":751},{},[752],{"type":40,"tagName":168,"properties":753,"children":754},{"class":170},[755,759,763,768],{"type":40,"tagName":168,"properties":756,"children":757},{"style":174},[758],{"type":45,"value":456},{"type":40,"tagName":168,"properties":760,"children":761},{"style":186},[762],{"type":45,"value":461},{"type":40,"tagName":168,"properties":764,"children":765},{"style":186},[766],{"type":45,"value":767}," libvirt",{"type":40,"tagName":168,"properties":769,"children":770},{"style":186},[771],{"type":45,"value":772}," libvirt-client",{"type":45,"value":56},{"type":40,"tagName":41,"properties":775,"children":776,"position":804},{},[777,786,798],{"type":45,"value":778,"position":779},"安装完成后，将 ",{"start":780,"end":783},{"line":781,"column":49,"offset":782},58,1238,{"line":781,"column":784,"offset":785},9,1246,{"type":40,"tagName":92,"properties":787,"children":788,"position":795},{},[789],{"type":45,"value":790,"position":791},"libvirtd",{"start":792,"end":793},{"line":781,"column":784,"offset":785},{"line":781,"column":591,"offset":794},1256,{"start":796,"end":797},{"line":781,"column":784,"offset":785},{"line":781,"column":591,"offset":794},{"type":45,"value":799,"position":800}," 设为自启动并运行服务：",{"start":801,"end":802},{"line":781,"column":591,"offset":794},{"line":781,"column":409,"offset":803},1268,{"start":805,"end":806},{"line":781,"column":49,"offset":782},{"line":781,"column":409,"offset":803},{"type":45,"value":56},{"type":37,"children":809},[810],{"type":40,"tagName":158,"properties":811,"children":812},{"class":160,"style":161,"tabindex":162},[813],{"type":40,"tagName":92,"properties":814,"children":815},{},[816],{"type":40,"tagName":168,"properties":817,"children":818},{"class":170},[819,824,829,834],{"type":40,"tagName":168,"properties":820,"children":821},{"style":174},[822],{"type":45,"value":823},"systemctl",{"type":40,"tagName":168,"properties":825,"children":826},{"style":186},[827],{"type":45,"value":828}," enable",{"type":40,"tagName":168,"properties":830,"children":831},{"style":180},[832],{"type":45,"value":833}," --now",{"type":40,"tagName":168,"properties":835,"children":836},{"style":186},[837],{"type":45,"value":838}," libvirtd",{"type":45,"value":56},{"type":40,"tagName":121,"properties":841,"children":843,"position":851},{"id":842},"cockpit",[844],{"type":45,"value":28,"position":845},{"start":846,"end":849},{"line":847,"column":129,"offset":848},64,1319,{"line":847,"column":132,"offset":850},1326,{"start":852,"end":854},{"line":847,"column":49,"offset":853},1316,{"line":847,"column":132,"offset":850},{"type":45,"value":56},{"type":40,"tagName":41,"properties":857,"children":858,"position":868},{},[859],{"type":45,"value":860,"position":861},"Cockpit 是由 Red Hat 开发的、允许管理员在网页端管理服务器的软件。考虑到一般的 Linux 服务器不会安装桌面环境、也用不了 Virtual Machine Manager，因此就以 Cockpit 为替。",{"start":862,"end":865},{"line":863,"column":49,"offset":864},66,1328,{"line":863,"column":866,"offset":867},112,1439,{"start":869,"end":870},{"line":863,"column":49,"offset":864},{"line":863,"column":866,"offset":867},{"type":45,"value":56},{"type":40,"tagName":270,"properties":873,"children":875,"position":885},{"id":874},"安装-cockpit",[876],{"type":45,"value":877,"position":878},"安装 Cockpit",{"start":879,"end":882},{"line":880,"column":279,"offset":881},68,1445,{"line":880,"column":883,"offset":884},15,1455,{"start":886,"end":888},{"line":880,"column":49,"offset":887},1441,{"line":880,"column":883,"offset":884},{"type":45,"value":56},{"type":40,"tagName":41,"properties":891,"children":892,"position":902},{},[893],{"type":45,"value":894,"position":895},"自 2019 年发布的 RHEL 8 开始，Cockpit 会默认附装在系统里，除非用户在安装时选择了最小安装。如果你的服务器系统在安装时选择了最小安装，或是由提供商预先安装、因此并未选装 Cockpit，可以运行下述指令手动安装：",{"start":896,"end":899},{"line":897,"column":49,"offset":898},70,1457,{"line":897,"column":900,"offset":901},117,1573,{"start":903,"end":904},{"line":897,"column":49,"offset":898},{"line":897,"column":900,"offset":901},{"type":45,"value":56},{"type":37,"children":907},[908],{"type":40,"tagName":158,"properties":909,"children":910},{"class":160,"style":161,"tabindex":162},[911],{"type":40,"tagName":92,"properties":912,"children":913},{},[914],{"type":40,"tagName":168,"properties":915,"children":916},{"class":170},[917,921,925],{"type":40,"tagName":168,"properties":918,"children":919},{"style":174},[920],{"type":45,"value":456},{"type":40,"tagName":168,"properties":922,"children":923},{"style":186},[924],{"type":45,"value":461},{"type":40,"tagName":168,"properties":926,"children":927},{"style":186},[928],{"type":45,"value":929}," cockpit",{"type":45,"value":56},{"type":40,"tagName":41,"properties":932,"children":933,"position":942},{},[934],{"type":45,"value":935,"position":936},"同时，需要在防火墙放行 Cockpit：",{"start":937,"end":940},{"line":938,"column":49,"offset":939},76,1609,{"line":938,"column":149,"offset":941},1629,{"start":943,"end":944},{"line":938,"column":49,"offset":939},{"line":938,"column":149,"offset":941},{"type":45,"value":56},{"type":37,"children":947},[948],{"type":40,"tagName":158,"properties":949,"children":950},{"class":160,"style":161,"tabindex":162},[951],{"type":40,"tagName":92,"properties":952,"children":953},{},[954],{"type":40,"tagName":168,"properties":955,"children":956},{"class":170},[957,962,967],{"type":40,"tagName":168,"properties":958,"children":959},{"style":174},[960],{"type":45,"value":961},"firewall-cmd",{"type":40,"tagName":168,"properties":963,"children":964},{"style":180},[965],{"type":45,"value":966}," --permanent",{"type":40,"tagName":168,"properties":968,"children":969},{"style":180},[970],{"type":45,"value":971}," --add-service=cockpit",{"type":45,"value":56},{"type":40,"tagName":41,"properties":974,"children":975,"position":984},{},[976],{"type":45,"value":977,"position":978},"不论是手动安装还是附装，默认情况下的 Cockpit 服务，需要运行下述指令将其设为自启动并运行：",{"start":979,"end":982},{"line":980,"column":49,"offset":981},82,1692,{"line":980,"column":648,"offset":983},1741,{"start":985,"end":986},{"line":980,"column":49,"offset":981},{"line":980,"column":648,"offset":983},{"type":45,"value":56},{"type":37,"children":989},[990],{"type":40,"tagName":158,"properties":991,"children":992},{"class":160,"style":161,"tabindex":162},[993],{"type":40,"tagName":92,"properties":994,"children":995},{},[996],{"type":40,"tagName":168,"properties":997,"children":998},{"class":170},[999,1003,1007,1011],{"type":40,"tagName":168,"properties":1000,"children":1001},{"style":174},[1002],{"type":45,"value":823},{"type":40,"tagName":168,"properties":1004,"children":1005},{"style":186},[1006],{"type":45,"value":828},{"type":40,"tagName":168,"properties":1008,"children":1009},{"style":180},[1010],{"type":45,"value":833},{"type":40,"tagName":168,"properties":1012,"children":1013},{"style":186},[1014],{"type":45,"value":1015}," cockpit.socket",{"type":45,"value":56},{"type":40,"tagName":41,"properties":1018,"children":1019,"position":1048},{},[1020,1029,1042],{"type":45,"value":1021,"position":1022},"现在可通过 ",{"start":1023,"end":1026},{"line":1024,"column":49,"offset":1025},88,1795,{"line":1024,"column":1027,"offset":1028},7,1801,{"type":40,"tagName":92,"properties":1030,"children":1031,"position":1039},{},[1032],{"type":45,"value":1033,"position":1034},"http:\u002F\u002F{服务器 IP}:9090",{"start":1035,"end":1036},{"line":1024,"column":1027,"offset":1028},{"line":1024,"column":1037,"offset":1038},29,1823,{"start":1040,"end":1041},{"line":1024,"column":1027,"offset":1028},{"line":1024,"column":1037,"offset":1038},{"type":45,"value":1043,"position":1044}," 访问 Cockpit 页面。",{"start":1045,"end":1046},{"line":1024,"column":1037,"offset":1038},{"line":1024,"column":552,"offset":1047},1838,{"start":1049,"end":1050},{"line":1024,"column":49,"offset":1025},{"line":1024,"column":552,"offset":1047},{"type":45,"value":56},{"type":40,"tagName":270,"properties":1053,"children":1055,"position":1064},{"id":1054},"允许-root-用户登录-cockpit",[1056],{"type":45,"value":1057,"position":1058},"允许 root 用户登录 Cockpit",{"start":1059,"end":1062},{"line":1060,"column":279,"offset":1061},90,1844,{"line":1060,"column":527,"offset":1063},1864,{"start":1065,"end":1067},{"line":1060,"column":49,"offset":1066},1840,{"line":1060,"column":527,"offset":1063},{"type":45,"value":56},{"type":40,"tagName":41,"properties":1070,"children":1071,"position":1080},{},[1072],{"type":45,"value":1073,"position":1074},"出于安全考虑，自 RHEL 9.2 \u002F CentOS Stream 9 开始，Cockpit 默认不允许使用 root 用户登录。",{"start":1075,"end":1078},{"line":1076,"column":49,"offset":1077},92,1866,{"line":1076,"column":863,"offset":1079},1931,{"start":1081,"end":1082},{"line":1076,"column":49,"offset":1077},{"line":1076,"column":863,"offset":1079},{"type":45,"value":56},{"type":40,"tagName":41,"properties":1085,"children":1086,"position":1114},{},[1087,1095,1107],{"type":45,"value":1088,"position":1089},"编者同样不推荐这么做，除非你铁了心要 root 用户走到底。这种情况下，可以通过修改 ",{"start":1090,"end":1093},{"line":1091,"column":49,"offset":1092},94,1933,{"line":1091,"column":552,"offset":1094},1976,{"type":40,"tagName":92,"properties":1096,"children":1097,"position":1104},{},[1098],{"type":45,"value":1099,"position":1100},"\u002Fetc\u002Fcockpit\u002Fdisallowed-users",{"start":1101,"end":1102},{"line":1091,"column":552,"offset":1094},{"line":1091,"column":715,"offset":1103},2007,{"start":1105,"end":1106},{"line":1091,"column":552,"offset":1094},{"line":1091,"column":715,"offset":1103},{"type":45,"value":1108,"position":1109},"、将里面的 root 删掉。",{"start":1110,"end":1111},{"line":1091,"column":715,"offset":1103},{"line":1091,"column":1112,"offset":1113},89,2021,{"start":1115,"end":1116},{"line":1091,"column":49,"offset":1092},{"line":1091,"column":1112,"offset":1113},{"type":45,"value":56},{"type":40,"tagName":158,"properties":1119,"children":1120,"position":1133},{},[1121],{"type":40,"tagName":92,"properties":1122,"children":1123,"position":1126},{},[1124],{"type":45,"value":1125},"nano \u002Fetc\u002Fcockpit\u002Fdisallowed-users\n\n\u002F\u002F \u002Fetc\u002Fcockpit\u002Fdisallowed-users\n# List of users which are not allowed to login to Cockpit\nroot \u003C-- 删掉这一个\n",{"start":1127,"end":1130},{"line":1128,"column":49,"offset":1129},96,2023,{"line":1131,"column":129,"offset":1132},102,2172,{"start":1134,"end":1135},{"line":1128,"column":49,"offset":1129},{"line":1131,"column":129,"offset":1132},{"type":45,"value":56},{"type":40,"tagName":41,"properties":1138,"children":1139,"position":1148},{},[1140],{"type":45,"value":1141,"position":1142},"修改完成后，重启 Cockpit 服务，即可使用 root 用户登录 Cockpit。",{"start":1143,"end":1146},{"line":1144,"column":49,"offset":1145},104,2174,{"line":1144,"column":552,"offset":1147},2217,{"start":1149,"end":1150},{"line":1144,"column":49,"offset":1145},{"line":1144,"column":552,"offset":1147},{"type":45,"value":56},{"type":40,"tagName":270,"properties":1153,"children":1155,"position":1164},{"id":1154},"通过-cockpit-管理虚拟机",[1156],{"type":45,"value":1157,"position":1158},"通过 Cockpit 管理虚拟机",{"start":1159,"end":1162},{"line":1160,"column":279,"offset":1161},106,2223,{"line":1160,"column":149,"offset":1163},2239,{"start":1165,"end":1167},{"line":1160,"column":49,"offset":1166},2219,{"line":1160,"column":149,"offset":1163},{"type":45,"value":56},{"type":40,"tagName":41,"properties":1170,"children":1171,"position":1199},{},[1172,1180,1192],{"type":45,"value":1173,"position":1174},"要使用 Cockpit 管理虚拟机，你需要额外安装一个名为 ",{"start":1175,"end":1178},{"line":1176,"column":49,"offset":1177},108,2241,{"line":1176,"column":409,"offset":1179},2271,{"type":40,"tagName":92,"properties":1181,"children":1182,"position":1189},{},[1183],{"type":45,"value":1184,"position":1185},"cockpit-machines",{"start":1186,"end":1187},{"line":1176,"column":409,"offset":1179},{"line":1176,"column":246,"offset":1188},2289,{"start":1190,"end":1191},{"line":1176,"column":409,"offset":1179},{"line":1176,"column":246,"offset":1188},{"type":45,"value":1193,"position":1194}," 的软件包。运行下述指令安装这个软件包：",{"start":1195,"end":1196},{"line":1176,"column":246,"offset":1188},{"line":1176,"column":1197,"offset":1198},69,2309,{"start":1200,"end":1201},{"line":1176,"column":49,"offset":1177},{"line":1176,"column":1197,"offset":1198},{"type":45,"value":56},{"type":37,"children":1204},[1205],{"type":40,"tagName":158,"properties":1206,"children":1207},{"class":160,"style":161,"tabindex":162},[1208],{"type":40,"tagName":92,"properties":1209,"children":1210},{},[1211],{"type":40,"tagName":168,"properties":1212,"children":1213},{"class":170},[1214,1218,1222],{"type":40,"tagName":168,"properties":1215,"children":1216},{"style":174},[1217],{"type":45,"value":456},{"type":40,"tagName":168,"properties":1219,"children":1220},{"style":186},[1221],{"type":45,"value":461},{"type":40,"tagName":168,"properties":1223,"children":1224},{"style":186},[1225],{"type":45,"value":1226}," cockpit-machines",{"type":45,"value":56},{"type":40,"tagName":41,"properties":1229,"children":1230,"position":1238},{},[1231],{"type":45,"value":1232,"position":1233},"安装完成后，刷新 Cockpit 页面，即可在侧边栏发现一个名为 Virtual machines 的选项。这里便是你在 Cockpit 管理虚拟机的入口。",{"start":1234,"end":1236},{"line":660,"column":49,"offset":1235},2354,{"line":660,"column":71,"offset":1237},2432,{"start":1239,"end":1240},{"line":660,"column":49,"offset":1235},{"line":660,"column":71,"offset":1237},{"start":1242,"end":1244},{"line":49,"column":49,"offset":1243},0,{"line":1245,"column":49,"offset":1246},115,2433,{"evolution-x-4-taste":1248,"get-started-with-mi-band-3-nfc":1250,"refurbishing-dell-inspiron-n4050":1252,"apple-music-experience":1254,"bitwarden-experience":1255,"create-a-simple-bridge-network":1256,"fix-lenovo-laptop-from-relative":1257,"get-started-with-redmi-watch":1258,"lenovo-yangtian-s550-experience":1259,"move-to-cloudflare-pages":1260,"ideas-of-old-seewo":1261,"my-laptop-upgrade-journey":1263,"redmi-4-prime-experience-nowadays":1264,"start-using-hexo-mdx-theme":1265,"trying-android-13-on-my-phone":1266,"use-bulma-css-to-write-friends-link":1267,"2023-annual-summary":1268,"build-a-fast-links-page":1270,"flash-third-party-firmware-for-redmi-ax5-router":1271,"redmi-7-personal-experience":1272,"redmi-k30-custom-guide":1273,"usb-burning-a-tvbox":1274,"2024-annual-summary":1275,"add-umami-analytics-for-my-site":1276,"compile-coreprotect-with-maven":1277,"deploy-website-to-cloudflare-workers-in-2024":1278,"first-try-svelte-and-sveltekit":1279,"move-to-artalk-comment-system":1280,"rebuild-my-blog-with-nuxt":1281,"rebuild-my-blog-with-valaxy":1282,"talk-about-pop-up-window":1283,"talk-about-rebuild-with-bulma-and-unocss":1284,"talk-about-the-optimization-i-did":1285,"upgrade-the-pc-in-the-living-room":1286,"use-github-actions-instead-of-vercel-ci":1287,"use-upptime-for-monitoring-websites":1288,"use-vite-ssg-and-unplugin-vue-router-in-your-vite-vue-project":1289,"2025-annual-summary":1290,"build-a-new-blog-with-noutious-and-svelte":1291,"migrate-from-smartdns-to-mosdns":1292,"refactor-tech-blog-with-noutious-and-nuxt":1293,"share-printer-through-vm-on-proxmox-ve-and-cups":1294,"install-qemu-and-libvirt-on-centos-stream":1295,"introducing-heimdall":1296,"my-linux-usage":1297,"optimize-and-protect-your-website":1298,"use-stylex-on-vue-or-svelte-project":1299,"virtual-machine-splitting-and-merging":1300,"hello-world":1301},{"categories":1249},"刷机",{"categories":1251},"软荐",{"categories":1253},"手工",{"categories":1251},{"categories":1251},{"categories":1253},{"categories":1253},{"categories":1251},{"categories":1251},{"categories":22},{"categories":1262},"思绪",{"categories":1253},{"categories":1262},{"categories":22},{"categories":1249},{"categories":22},{"categories":1269},"大事记",{"categories":22},{"categories":1253},{"categories":1262},{"categories":1249},{"categories":1249},{"categories":1269},{"categories":22},{"categories":22},{"categories":22},{"categories":22},{"categories":22},{"categories":22},{"categories":22},{"categories":1262},{"categories":22},{"categories":22},{"categories":1253},{"categories":22},{"categories":22},{"categories":22},{"categories":1269},{"categories":22},{"categories":22},{"categories":22},{"categories":22},{"categories":22},{"categories":22},{"categories":22},{"categories":22},{"categories":22},{"categories":22},{"categories":1269},{"hello-world":1303,"evolution-x-4-taste":1304,"get-started-with-mi-band-3-nfc":1308,"refurbishing-dell-inspiron-n4050":1312,"apple-music-experience":1316,"bitwarden-experience":1319,"create-a-simple-bridge-network":1322,"fix-lenovo-laptop-from-relative":1326,"get-started-with-redmi-watch":1329,"lenovo-yangtian-s550-experience":1333,"move-to-cloudflare-pages":1335,"ideas-of-old-seewo":1341,"my-laptop-upgrade-journey":1344,"redmi-4-prime-experience-nowadays":1347,"start-using-hexo-mdx-theme":1350,"trying-android-13-on-my-phone":1353,"use-bulma-css-to-write-friends-link":1355,"2023-annual-summary":1358,"build-a-fast-links-page":1361,"flash-third-party-firmware-for-redmi-ax5-router":1363,"redmi-7-personal-experience":1367,"redmi-k30-custom-guide":1369,"usb-burning-a-tvbox":1371,"2024-annual-summary":1374,"add-umami-analytics-for-my-site":1376,"compile-coreprotect-with-maven":1379,"deploy-website-to-cloudflare-workers-in-2024":1383,"first-try-svelte-and-sveltekit":1386,"move-to-artalk-comment-system":1390,"rebuild-my-blog-with-nuxt":1393,"rebuild-my-blog-with-valaxy":1396,"talk-about-pop-up-window":1399,"talk-about-rebuild-with-bulma-and-unocss":1402,"talk-about-the-optimization-i-did":1405,"upgrade-the-pc-in-the-living-room":1409,"use-github-actions-instead-of-vercel-ci":1412,"use-upptime-for-monitoring-websites":1416,"use-vite-ssg-and-unplugin-vue-router-in-your-vite-vue-project":1420,"2025-annual-summary":1425,"build-a-new-blog-with-noutious-and-svelte":1427,"migrate-from-smartdns-to-mosdns":1430,"refactor-tech-blog-with-noutious-and-nuxt":1434,"share-printer-through-vm-on-proxmox-ve-and-cups":1436,"install-qemu-and-libvirt-on-centos-stream":1440,"introducing-heimdall":1442,"my-linux-usage":1447,"optimize-and-protect-your-website":1449,"use-stylex-on-vue-or-svelte-project":1451,"virtual-machine-splitting-and-merging":1456},{"tags":-1},{"tags":1305},[1306,1307,1249],"Evolution X","Android",{"tags":1309},[1310,1311],"小米","手环",{"tags":1313},[1314,1315],"戴尔","电脑",{"tags":1317},[1318],"Apple Music",{"tags":1320},[1321],"Bitwarden",{"tags":1323},[1324,1325],"网络设备","TP-Link",{"tags":1327},[1328,1315],"联想",{"tags":1330},[1310,1331,1332],"Redmi","手表",{"tags":1334},[1328,1315],{"tags":1336},[1337,1338,1339,1340],"前端","Cloudflare Pages","Cloudflare","Vercel",{"tags":1342},[1343],"希沃",{"tags":1345},[1346,1315],"宏碁",{"tags":1348},[1310,1331,1349],"手机",{"tags":1351},[1337,1352],"Hexo",{"tags":1354},[1306,1307,1249],{"tags":1356},[1337,1357],"Bulma",{"tags":1359},[1360],"年度总结",{"tags":1362},[1337,1357],{"tags":1364},[1365,1366],"路由器","OpenWRT",{"tags":1368},[1310,1331],{"tags":1370},[1310,1331,1307,1249],{"tags":1372},[1307,1249,1373],"电视盒子",{"tags":1375},[1360],{"tags":1377},[1337,1378],"Umami",{"tags":1380},[1381,1382],"CoreProtect","Maven",{"tags":1384},[1339,1385,1337],"Cloudflare Workers",{"tags":1387},[1337,1388,1389],"Svelte","SvelteKit",{"tags":1391},[1337,1392],"Artalk",{"tags":1394},[1337,1395],"Nuxt",{"tags":1397},[1337,1398],"Valaxy",{"tags":1400},[1337,1401],"JavaScript",{"tags":1403},[1337,1357,1404],"UnoCSS",{"tags":1406},[1337,1407,1408],"Tailwind CSS","MDUI",{"tags":1410},[1315,1411],"升级",{"tags":1413},[1414,1340,1415],"CI","GitHub Actions",{"tags":1417},[1418,1419],"Upptime","网站状态监控",{"tags":1421},[1422,1423,1424],"Vite","SSG","Vue Router",{"tags":1426},[1360],{"tags":1428},[1337,1389,1429],"Noutious",{"tags":1431},[1432,1433],"SmartDNS","mosdns",{"tags":1435},[1337,1395,1429],{"tags":1437},[1438,1439,24],"打印机","CUPS",{"tags":1441},[24,25,26,27,28],{"tags":1443},[1444,1445,1446],"Minecraft","LittleSkin","Heimdall",{"tags":1448},[24],{"tags":1450},[1337],{"tags":1452},[1337,1453,1454,1388,1455],"StyleX","Vue","CSS",{"tags":1457},[1458,1459,24,1460],"虚拟机","PVE","Windows",["Island",1462],{"key":1463,"result":1464},"ThemeSidebarAuthorInfo_Wcfq6adNGi2w7hRDgGnpqhSbRnIIbOkAq0VopT0414",{"head":1465},{"link":1466},[1467],{"rel":1468,"as":1469,"href":1470,"imagesrcset":1471},"preload","image","https:\u002F\u002Flibrary.gxres.net\u002Fimages\u002Favatars\u002Fgxres042.webp","https:\u002F\u002Flibrary.gxres.net\u002Fimages\u002Favatars\u002Fgxres042.webp 1x, https:\u002F\u002Flibrary.gxres.net\u002Fimages\u002Favatars\u002Fgxres042.webp 2x",["Island",1473],{"key":1474,"result":1475},"IconsArrowRight_5jviWhR9Ji4ocmrH7nqgVCbLMgqf8CwUfrOMcjUqSw",{"head":1476},{},["Island",1478],{"key":1479,"result":1480},"IconsToc_UjczwWWzJcA3C0ICgsA6aFbI4xfJlY7qOtoSKCTPr6s",{"head":1481},{},["Island",1483],{"key":1484,"result":1485},"IconsArrowUp_Y4QMckxWq3Hf8D1dpS8SxA8qGwVmAA6cfO9mcw5hfk",{"head":1486},{},1781075328386]