准备固件
定制镜像
国内用户的路由器或软路由的固件的最好选择是 ImmortalWrt,因为它默认配置了国内可访问的 opkg 仓库镜像,包含很多第三方的软件包,同时管理后台(LuCI)默认为中文。
但 ImmortalWrt 24.10.0 版本的固件在 R4S 上有一些问题,比如无法正常分配 DHCP 地址或者经常断联,导致无法正常使用。我们需要通过官方提供的自助编译平台来构建一个新的固件镜像。
-
选择对应的设备和版本,这里选择 R4S,版本选择 24.10.0。
-
点击“自定义预安装软件包和/或首次启动脚本”选项,在“预安装的软件包”文本框中,将其中的
kmod-r8168替换为kmod-r8169,修复网卡驱动问题。 -
在“预安装的软件包”文本框中继续填入以下内容,省去后续在本机下载安装这些依赖项的步骤。
<>.expressive-code{font-family:var(--ec-uiFontFml);font-size:var(--ec-uiFontSize);font-weight:var(--ec-uiFontWg);line-height:var(--ec-uiLineHt);text-size-adjust:none;-webkit-text-size-adjust:none}.expressive-code *:not(:is(svgsvg *)){all:revert;box-sizing:border-box}.expressive-code pre{display:flex;margin:0;padding:0;border:var(--ec-brdWd) solid var(--ec-brdCol);border-radius:calc(var(--ec-brdRad) + var(--ec-brdWd));background:var(--ec-codeBg)}.expressive-code pre:focus-visible{outline:3px solid var(--ec-focusBrd);outline-offset:-3px}.expressive-code pre > code{all:unset;display:block;flex:1 0 100%;padding:var(--ec-codePadBlk) 0;color:var(--ec-codeFg);font-family:var(--ec-codeFontFml);font-size:var(--ec-codeFontSize);font-weight:var(--ec-codeFontWg);line-height:var(--ec-codeLineHt)}.expressive-code pre{overflow-x:auto}.expressive-code pre.wrap .ec-line .code{white-space:pre-wrap;overflow-wrap:break-word;min-width:min(20chvar(--ecMaxLine20ch))}.expressive-code pre.wrap .ec-line .code span.indent{white-space:pre}.expressive-code pre::-webkit-scrollbar,.expressive-code pre::-webkit-scrollbar-track{background-color:inherit;border-radius:calc(var(--ec-brdRad) + var(--ec-brdWd));border-top-left-radius:0;border-top-right-radius:0}.expressive-code pre::-webkit-scrollbar-thumb{background-color:var(--ec-sbThumbCol);border:4px solid transparent;background-clip:content-box;border-radius:10px}.expressive-code pre::-webkit-scrollbar-thumb:hover{background-color:var(--ec-sbThumbHoverCol)}.expressive-code .ec-line{direction:ltr;unicode-bidi:isolate;display:grid;grid-template-areas:'gutter code';grid-template-columns:auto 1fr;position:relative}.expressive-code .ec-line .gutter{grid-area:gutter;color:var(--ec-gtrFg)}.expressive-code .ec-line .gutter > *{pointer-events:none;user-select:none;-webkit-user-select:none}.expressive-code .ec-line .gutter ~ .code{--ecLineBrdCol:var(--ec-gtrBrdCol)}.expressive-code .ec-line.highlight .gutter{color:var(--ec-gtrHlFg)}.expressive-code .ec-line .code{grid-area:code;position:relative;box-sizing:content-box;padding-inline-start:calc(var(--ecIndent0ch) + var(--ec-codePadInl) - var(--ecGtrBrdWd));padding-inline-end:var(--ec-codePadInl);text-indent:calc(var(--ecIndent0ch) * -1)}.expressive-code .ec-line .code::before,.expressive-code .ec-line .code::after,.expressive-code .ec-line .code :where(*){text-indent:0}.expressive-code .ec-line .code{--ecGtrBrdWd:var(--ec-gtrBrdWd);border-inline-start:var(--ecGtrBrdWd) solid var(--ecLineBrdColtransparent)}.expressive-code .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0000);white-space:nowrap;border-width:0}.expressive-code .ec-line.mark{--tmLineBgCol:var(--ec-tm-markBg)}.expressive-code .ec-line.mark .code{--ecLineBrdCol:var(--ec-tm-markBrdCol)}.expressive-code .ec-line.ins{--tmLineBgCol:var(--ec-tm-insBg);--tmLabel:var(--ec-tm-insDiffIndContent)}.expressive-code .ec-line.ins .code{--ecLineBrdCol:var(--ec-tm-insBrdCol)}.expressive-code .ec-line.ins .code::before{color:var(--ec-tm-insDiffIndCol)}.expressive-code .ec-line.del{--tmLineBgCol:var(--ec-tm-delBg);--tmLabel:var(--ec-tm-delDiffIndContent)}.expressive-code .ec-line.del .code{--ecLineBrdCol:var(--ec-tm-delBrdCol)}.expressive-code .ec-line.del .code::before{color:var(--ec-tm-delDiffIndCol)}.expressive-code .ec-line.mark,.expressive-code .ec-line.ins,.expressive-code .ec-line.del{background:var(--tmLineBgCol)}.expressive-code .ec-line.mark .code,.expressive-code .ec-line.ins .code,.expressive-code .ec-line.del .code{--ecGtrBrdWd:var(--ec-tm-lineMarkerAccentWd)}.expressive-code .ec-line.mark .code::before,.expressive-code .ec-line.ins .code::before,.expressive-code .ec-line.del .code::before{display:block;position:absolute;left:0;box-sizing:border-box;content:var(--tmLabel' ');padding-inline-start:var(--ec-tm-lineDiffIndMargLeft);text-align:center;white-space:pre}.expressive-code .ec-line.mark.tm-label .code::before,.expressive-code .ec-line.ins.tm-label .code::before,.expressive-code .ec-line.del.tm-label .code::before{background:var(--ecLineBrdCol);padding:0 calc(var(--ec-tm-lineMarkerLabelPadInl) + var(--ec-tm-lineMarkerAccentWd)) 0 var(--ec-tm-lineMarkerLabelPadInl);color:var(--ec-tm-lineMarkerLabelCol)}.expressive-code .ec-line mark{--tmInlineBgCol:var(--ec-tm-markBg);--tmInlineBrdCol:var(--ec-tm-markBrdCol)}.expressive-code .ec-line ins{--tmInlineBgCol:var(--ec-tm-insBg);--tmInlineBrdCol:var(--ec-tm-insBrdCol)}.expressive-code .ec-line del{--tmInlineBgCol:var(--ec-tm-delBg);--tmInlineBrdCol:var(--ec-tm-delBrdCol)}.expressive-code .ec-line mark,.expressive-code .ec-line ins,.expressive-code .ec-line del{all:unset;display:inline-block;position:relative;--tmBrdL:var(--ec-tm-inlMarkerBrdWd);--tmBrdR:var(--ec-tm-inlMarkerBrdWd);--tmRadL:var(--ec-tm-inlMarkerBrdRad);--tmRadR:var(--ec-tm-inlMarkerBrdRad);margin-inline:0.025rem;padding-inline:var(--ec-tm-inlMarkerPad);border-radius:var(--tmRadL) var(--tmRadR) var(--tmRadR) var(--tmRadL);background:var(--tmInlineBgCol);background-clip:padding-box}.expressive-code .ec-line mark.open-start,.expressive-code .ec-line ins.open-start,.expressive-code .ec-line del.open-start{margin-inline-start:0;padding-inline-start:0;--tmBrdL:0px;--tmRadL:0}.expressive-code .ec-line mark.open-end,.expressive-code .ec-line ins.open-end,.expressive-code .ec-line del.open-end{margin-inline-end:0;padding-inline-end:0;--tmBrdR:0px;--tmRadR:0}.expressive-code .ec-line mark::before,.expressive-code .ec-line ins::before,.expressive-code .ec-line del::before{content:'';position:absolute;pointer-events:none;display:inline-block;inset:0;border-radius:var(--tmRadL) var(--tmRadR) var(--tmRadR) var(--tmRadL);border:var(--ec-tm-inlMarkerBrdWd) solid var(--tmInlineBrdCol);border-inline-width:var(--tmBrdL) var(--tmBrdR)}.expressive-code .frame{all:unset;position:relative;display:block;--header-border-radius:calc(var(--ec-brdRad) + var(--ec-brdWd));--tab-border-radius:calc(var(--ec-frm-edTabBrdRad) + var(--ec-brdWd));--button-spacing:0.4rem;--code-background:var(--ec-frm-edBg);border-radius:var(--header-border-radius);box-shadow:var(--ec-frm-frameBoxShdCssVal)}.expressive-code .frame .header{display:none;z-index:1;position:relative;border-radius:var(--header-border-radius) var(--header-border-radius) 0 0}.expressive-code .frame.has-title pre,.expressive-code .frame.has-title code,.expressive-code .frame.is-terminal pre,.expressive-code .frame.is-terminal code{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.expressive-code .frame .title:empty:before{content:'\a0'}.expressive-code .frame.has-title:not(.is-terminal){--button-spacing:calc(1.9rem + 2 * (var(--ec-uiPadBlk) + var(--ec-frm-edActTabIndHt)))}.expressive-code .frame.has-title:not(.is-terminal) .title{position:relative;color:var(--ec-frm-edActTabFg);background:var(--ec-frm-edActTabBg);background-clip:padding-box;margin-block-start:var(--ec-frm-edTabsMargBlkStart);padding:calc(var(--ec-uiPadBlk) + var(--ec-frm-edActTabIndHt)) var(--ec-uiPadInl);border:var(--ec-brdWd) solid var(--ec-frm-edActTabBrdCol);border-radius:var(--tab-border-radius) var(--tab-border-radius) 0 0;border-bottom:none;overflow:hidden}.expressive-code .frame.has-title:not(.is-terminal) .title::after{content:'';position:absolute;pointer-events:none;inset:0;border-top:var(--ec-frm-edActTabIndHt) solid var(--ec-frm-edActTabIndTopCol);border-bottom:var(--ec-frm-edActTabIndHt) solid var(--ec-frm-edActTabIndBtmCol)}.expressive-code .frame.has-title:not(.is-terminal) .header{display:flex;background:linear-gradient(to topvar(--ec-frm-edTabBarBrdBtmCol) var(--ec-brdWd)transparent var(--ec-brdWd)),linear-gradient(var(--ec-frm-edTabBarBg)var(--ec-frm-edTabBarBg));background-repeat:no-repeat;padding-inline-start:var(--ec-frm-edTabsMargInlStart)}.expressive-code .frame.has-title:not(.is-terminal) .header::before{content:'';position:absolute;pointer-events:none;inset:0;border:var(--ec-brdWd) solid var(--ec-frm-edTabBarBrdCol);border-radius:inherit;border-bottom:none}.expressive-code .frame.is-terminal{--button-spacing:calc(1.9rem + var(--ec-brdWd) + 2 * var(--ec-uiPadBlk));--code-background:var(--ec-frm-trmBg)}.expressive-code .frame.is-terminal .header{display:flex;align-items:center;justify-content:center;padding-block:var(--ec-uiPadBlk);padding-block-end:calc(var(--ec-uiPadBlk) + var(--ec-brdWd));position:relative;font-weight:500;letter-spacing:0.025ch;color:var(--ec-frm-trmTtbFg);background:var(--ec-frm-trmTtbBg);border:var(--ec-brdWd) solid var(--ec-brdCol);border-bottom:none}.expressive-code .frame.is-terminal .header::before{content:'';position:absolute;pointer-events:none;left:var(--ec-uiPadInl);width:2.1rem;height:0.56rem;line-height:0;background-color:var(--ec-frm-trmTtbDotsFg);opacity:var(--ec-frm-trmTtbDotsOpa);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 16' preserveAspectRatio='xMidYMid meet'%3E%3Ccircle cx='8' cy='8' r='8'/%3E%3Ccircle cx='30' cy='8' r='8'/%3E%3Ccircle cx='52' cy='8' r='8'/%3E%3C/svg%3E");-webkit-mask-repeat:no-repeat;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 16' preserveAspectRatio='xMidYMid meet'%3E%3Ccircle cx='8' cy='8' r='8'/%3E%3Ccircle cx='30' cy='8' r='8'/%3E%3Ccircle cx='52' cy='8' r='8'/%3E%3C/svg%3E");mask-repeat:no-repeat}.expressive-code .frame.is-terminal .header::after{content:'';position:absolute;pointer-events:none;inset:0;border-bottom:var(--ec-brdWd) solid var(--ec-frm-trmTtbBrdBtmCol)}.expressive-code .frame pre{background:var(--code-background)}.expressive-code .copy{display:flex;gap:0.25rem;flex-direction:row;position:absolute;inset-block-start:calc(var(--ec-brdWd) + var(--button-spacing));inset-inline-end:calc(var(--ec-brdWd) + var(--ec-uiPadInl) / 2)}@media (scripting: none){.expressive-code .copy{display:none}}.expressive-code .copy{direction:ltr;unicode-bidi:isolate}.expressive-code .copy button{position:relative;align-self:flex-end;margin:0;padding:0;border:none;border-radius:0.2rem;z-index:1;cursor:pointer;transition-property:opacitybackgroundborder-color;transition-duration:0.2s;transition-timing-function:cubic-bezier(0.250.460.450.94);width:2.5rem;height:2.5rem;background:var(--code-background);opacity:0.75}.expressive-code .copy button div{position:absolute;inset:0;border-radius:inherit;background:var(--ec-frm-inlBtnBg);opacity:var(--ec-frm-inlBtnBgIdleOpa);transition-property:inherit;transition-duration:inherit;transition-timing-function:inherit}.expressive-code .copy button::before{content:'';position:absolute;pointer-events:none;inset:0;border-radius:inherit;border:var(--ec-brdWd) solid var(--ec-frm-inlBtnBrd);opacity:var(--ec-frm-inlBtnBrdOpa)}.expressive-code .copy button::after{content:'';position:absolute;pointer-events:none;inset:0;background-color:var(--ec-frm-inlBtnFg);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75'%3E%3Cpath d='M3 19a2 2 0 0 1-1-2V2a2 2 0 0 1 1-1h13a2 2 0 0 1 2 1'/%3E%3Crect x='6' y='5' width='16' height='18' rx='1.5' ry='1.5'/%3E%3C/svg%3E");-webkit-mask-repeat:no-repeat;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75'%3E%3Cpath d='M3 19a2 2 0 0 1-1-2V2a2 2 0 0 1 1-1h13a2 2 0 0 1 2 1'/%3E%3Crect x='6' y='5' width='16' height='18' rx='1.5' ry='1.5'/%3E%3C/svg%3E");mask-repeat:no-repeat;margin:0.475rem;line-height:0}.expressive-code .copy button:hover,.expressive-code .copy button:focus:focus-visible{opacity:1}.expressive-code .copy button:hover div,.expressive-code .copy button:focus:focus-visible div{opacity:var(--ec-frm-inlBtnBgHoverOrFocusOpa)}.expressive-code .copy button:active{opacity:1}.expressive-code .copy button:active div{opacity:var(--ec-frm-inlBtnBgActOpa)}.expressive-code .copy .feedback{--tooltip-arrow-size:0.35rem;--tooltip-bg:var(--ec-frm-tooltipSuccessBg);color:var(--ec-frm-tooltipSuccessFg);pointer-events:none;user-select:none;-webkit-user-select:none;position:relative;align-self:center;background-color:var(--tooltip-bg);z-index:99;padding:0.125rem 0.75rem;border-radius:0.2rem;margin-inline-end:var(--tooltip-arrow-size);opacity:0;transition-property:opacitytransform;transition-duration:0.2s;transition-timing-function:ease-in-out;transform:translate3d(00.25rem0)}.expressive-code .copy .feedback::after{content:'';position:absolute;pointer-events:none;top:calc(50% - var(--tooltip-arrow-size));inset-inline-end:calc(-2 * (var(--tooltip-arrow-size) - 0.5px));border:var(--tooltip-arrow-size) solid transparent;border-inline-start-color:var(--tooltip-bg)}.expressive-code .copy .feedback.show{opacity:1;transform:translate3d(000)}@media (hover: hover){.expressive-code{}.expressive-code .copy button{opacity:0;width:2rem;height:2rem}.expressive-code .frame:hover .copy button:not(:hover),.expressive-code .frame:focus-within :focus-visible ~ .copy button:not(:hover),.expressive-code .frame .copy .feedback.show ~ button:not(:hover){opacity:0.75}}.expressive-code :nth-child(1 of .ec-line) .code{padding-inline-end:calc(2rem + var(--ec-codePadInl))}.expressive-code .gutter .ln{display:inline-flex;justify-content:flex-end;align-items:flex-start;box-sizing:content-box;min-width:var(--lnWidth2ch);padding-inline:2ch;color:var(--ec-lineNumbers-fg)}.highlight .expressive-code .gutter .ln{color:var(--ec-lineNumbers-hlFg)}.expressive-code .ec-css-color-chip::before{content:"";display:inline-block;box-sizing:border-box;width:var(--ec-colChips-size);height:var(--ec-colChips-size);margin-inline-end:0.25em;vertical-align:text-bottom;background:linear-gradient(var(--ec-css-color-chip)var(--ec-css-color-chip)), conic-gradient(var(--ec-colChips-transparencyShadeTwo) 25%var(--ec-colChips-transparencyShadeOne) 25%var(--ec-colChips-transparencyShadeOne) 50%var(--ec-colChips-transparencyShadeTwo) 50%var(--ec-colChips-transparencyShadeTwo) 75%var(--ec-colChips-transparencyShadeOne) 75%);border-width:var(--ec-colChips-brdWd);border-:solid;border-color:var(--ec-colChips-brdCol);border-radius:var(--ec-colChips-brdRad)}.expressive-code .frame pre.output{background-color:#171a28;display:block;border:var(--ec-brdWd) solid var(--ec-brdCol);border-top:var(--ec-brdWd) dashed var(--ec-brdCol);padding:var(--ec-codePadBlk) 0;padding-inline-start:var(--ec-codePadInl)}:root,:root:not([data-theme='catppuccin-macchiato']) .expressive-code[data-theme='catppuccin-macchiato']{--ec-brdRad:0.3rem;--ec-brdWd:1.5px;--ec-brdCol:#00000000;--ec-codeFontFml:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;--ec-codeFontSize:0.85rem;--ec-codeFontWg:400;--ec-codeLineHt:1.65;--ec-codePadBlk:1rem;--ec-codePadInl:1.35rem;--ec-codeBg:#24273a;--ec-codeFg:#cad3f5;--ec-codeSelBg:#939ab740;--ec-gtrFg:#8087a2e3;--ec-gtrBrdCol:#8087a233;--ec-gtrBrdWd:1.5px;--ec-gtrHlFg:#c6a0f6cd;--ec-uiFontFml:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';--ec-uiFontSize:0.9rem;--ec-uiFontWg:400;--ec-uiLineHt:1.65;--ec-uiPadBlk:0.25rem;--ec-uiPadInl:1rem;--ec-uiSelBg:#5b6078;--ec-uiSelFg:#cad3f5;--ec-focusBrd:#c6a0f6;--ec-sbThumbCol:#5b607880;--ec-sbThumbHoverCol:#6e738d;--ec-tm-lineMarkerAccentMarg:0rem;--ec-tm-lineMarkerAccentWd:0.15rem;--ec-tm-lineMarkerLabelPadInl:0.2rem;--ec-tm-lineMarkerLabelCol:white;--ec-tm-lineDiffIndMargLeft:0.3rem;--ec-tm-inlMarkerBrdWd:1.5px;--ec-tm-inlMarkerBrdRad:0.2rem;--ec-tm-inlMarkerPad:0.15rem;--ec-tm-insDiffIndContent:'+';--ec-tm-delDiffIndContent:'-';--ec-tm-markBg:#264a8980;--ec-tm-markBrdCol:#5570b3d0;--ec-tm-insBg:#26561c80;--ec-tm-insBrdCol:#4e7e41d0;--ec-tm-insDiffIndCol:#7eb070d0;--ec-tm-delBg:#81322b80;--ec-tm-delBrdCol:#ae594fd0;--ec-tm-delDiffIndCol:#e68a7ed0;--ec-frm-shdCol:#1e203080;--ec-frm-frameBoxShdCssVal:0.1rem 0.1rem 0.2rem #1e203080;--ec-frm-edActTabBg:#24273a;--ec-frm-edActTabFg:#c6a0f6;--ec-frm-edActTabBrdCol:transparent;--ec-frm-edActTabIndHt:1.5px;--ec-frm-edActTabIndTopCol:#c6a0f6;--ec-frm-edActTabIndBtmCol:#00000000;--ec-frm-edTabsMargInlStart:0;--ec-frm-edTabsMargBlkStart:0;--ec-frm-edTabBrdRad:0.3rem;--ec-frm-edTabBarBg:#181926;--ec-frm-edTabBarBrdCol:#00000000;--ec-frm-edTabBarBrdBtmCol:transparent;--ec-frm-edBg:#24273a;--ec-frm-trmTtbFg:#cad3f5;--ec-frm-trmTtbDotsFg:#cad3f5;--ec-frm-trmTtbDotsOpa:0.15;--ec-frm-trmTtbBg:#181926;--ec-frm-trmTtbBrdBtmCol:#00000000;--ec-frm-trmBg:#24273a;--ec-frm-inlBtnFg:#cad3f5;--ec-frm-inlBtnBg:#cad3f5;--ec-frm-inlBtnBgIdleOpa:0;--ec-frm-inlBtnBgHoverOrFocusOpa:0.2;--ec-frm-inlBtnBgActOpa:0.3;--ec-frm-inlBtnBrd:#cad3f5;--ec-frm-inlBtnBrdOpa:0.4;--ec-frm-tooltipSuccessBg:#5f7d56;--ec-frm-tooltipSuccessFg:white;--ec-lineNumbers-fg:inherit;--ec-lineNumbers-hlFg:inherit;--ec-colChips-size:1.2em;--ec-colChips-brdWd:1px;--ec-colChips-brdRad:50%;--ec-colChips-brdCol:#cad3f5;--ec-colChips-transparencyShadeOne:#777;--ec-colChips-transparencyShadeTwo:#000}.expressive-code .ec-line :where(span[^='--']:not([class])),:root:not([data-theme='catppuccin-macchiato']) .expressive-code[data-theme='catppuccin-macchiato'] .ec-line :where(span[^='--']:not([class])){color:var(--0inherit);font-:var(--0fsinherit);font-weight:var(--0fwinherit);text-decoration:var(--0tdinherit)}@media (prefers-color-scheme: light){:root:not([data-theme='catppuccin-macchiato']){--ec-codeBg:#eff1f5;--ec-codeFg:#4c4f69;--ec-codeSelBg:#7c7f934d;--ec-gtrFg:#808393;--ec-gtrBrdCol:#80839333;--ec-gtrHlFg:#8839ef;--ec-uiSelBg:#acb0be;--ec-uiSelFg:#4c4f69;--ec-focusBrd:#8839ef;--ec-sbThumbCol:#acb0be80;--ec-sbThumbHoverCol:#9599a8;--ec-tm-markBg:#9fb6ff80;--ec-tm-insBg:#94c68480;--ec-tm-insDiffIndCol:#3a692fd0;--ec-tm-delBg:#fea09280;--ec-tm-delDiffIndCol:#97453dd0;--ec-frm-shdCol:#e6e9ef80;--ec-frm-frameBoxShdCssVal:0.1rem 0.1rem 0.2rem #e6e9ef80;--ec-frm-edActTabBg:#eff1f5;--ec-frm-edActTabFg:#8839ef;--ec-frm-edActTabIndTopCol:#8839ef;--ec-frm-edTabBarBg:#dce0e8;--ec-frm-edBg:#eff1f5;--ec-frm-trmTtbFg:#4c4f69;--ec-frm-trmTtbDotsFg:#4c4f69;--ec-frm-trmTtbBg:#dce0e8;--ec-frm-trmBg:#eff1f5;--ec-frm-inlBtnFg:#4c4f69;--ec-frm-inlBtnBg:#4c4f69;--ec-frm-inlBtnBrd:#4c4f69;--ec-frm-tooltipSuccessBg:#358524;--ec-colChips-brdCol:#4c4f69;--ec-colChips-transparencyShadeOne:#fff;--ec-colChips-transparencyShadeTwo:#bbb}:root:not([data-theme='catppuccin-macchiato']) .expressive-code .ec-line :where(span[^='--']:not([class])){color:var(--1inherit);font-:var(--1fsinherit);font-weight:var(--1fwinherit);text-decoration:var(--1tdinherit)}}:root[data-theme='catppuccin-latte'] .expressive-code:not([data-theme='catppuccin-macchiato']),.expressive-code[data-theme='catppuccin-latte']{--ec-codeBg:#eff1f5;--ec-codeFg:#4c4f69;--ec-codeSelBg:#7c7f934d;--ec-gtrFg:#808393;--ec-gtrBrdCol:#80839333;--ec-gtrHlFg:#8839ef;--ec-uiSelBg:#acb0be;--ec-uiSelFg:#4c4f69;--ec-focusBrd:#8839ef;--ec-sbThumbCol:#acb0be80;--ec-sbThumbHoverCol:#9599a8;--ec-tm-markBg:#9fb6ff80;--ec-tm-insBg:#94c68480;--ec-tm-insDiffIndCol:#3a692fd0;--ec-tm-delBg:#fea09280;--ec-tm-delDiffIndCol:#97453dd0;--ec-frm-shdCol:#e6e9ef80;--ec-frm-frameBoxShdCssVal:0.1rem 0.1rem 0.2rem #e6e9ef80;--ec-frm-edActTabBg:#eff1f5;--ec-frm-edActTabFg:#8839ef;--ec-frm-edActTabIndTopCol:#8839ef;--ec-frm-edTabBarBg:#dce0e8;--ec-frm-edBg:#eff1f5;--ec-frm-trmTtbFg:#4c4f69;--ec-frm-trmTtbDotsFg:#4c4f69;--ec-frm-trmTtbBg:#dce0e8;--ec-frm-trmBg:#eff1f5;--ec-frm-inlBtnFg:#4c4f69;--ec-frm-inlBtnBg:#4c4f69;--ec-frm-inlBtnBrd:#4c4f69;--ec-frm-tooltipSuccessBg:#358524;--ec-colChips-brdCol:#4c4f69;--ec-colChips-transparencyShadeOne:#fff;--ec-colChips-transparencyShadeTwo:#bbb}:root[data-theme='catppuccin-latte'] .expressive-code:not([data-theme='catppuccin-macchiato']) .ec-line :where(span[^='--']:not([class])),.expressive-code[data-theme='catppuccin-latte'] .ec-line :where(span[^='--']:not([class])){color:var(--1inherit);font-:var(--1fsinherit);font-weight:var(--1fwinherit);text-decoration:var(--1tdinherit)}>Terminal window curl openssh-sftp-server luci-theme-argon luci-app-argon-config luci-i18n-argon-config-zh-cn luci-app-diskman -
点击“请求构建”按钮,等待构建完成。
-
下载 SquashFS 版本的固件。
安装 OpenWrt 官方镜像的步骤和 ImmortalWrt 类似,但 OpenWrt 官方仓库提供的软件包较少,很多软件包需要手动安装。以下是准备 OpenWrt 官方镜像的步骤,点击展开查看:
💡 如何准备 OpenWrt 官方镜像
-
选择对应的设备和版本,这里选择 R4S,版本选择 24.10.0。
-
展开“自定义预安装软件包和/或首次启动脚本”选项,填入以下内容,省去后续在本机下载安装这些依赖项的步骤。
Terminal window curl openssh-sftp-server luci-i18n-base-zh-cn block-mount luci-compat luci-lib-ipkg -
点击“请求构建”按钮,等待构建完成。
-
下载 SquashFS 版本的固件。
烧录镜像
Windows 用户可以下载 Rufus,将下载的镜像刷到一张 TF 卡里。TF 卡不用格式化,直接选择设备和镜像文件,点击开始即可。

Mac 用户可以使用 BalenaEtcher,操作类似。
刷写完成后,将 TF 卡插入机器,通电开机。
配置 SSH
- 首先将网线接入 LAN 口,等到电脑获取 IP 后,访问
192.168.1.1登录 LuCI 后台,密码为空。
Windows 下用如下命令刷新 IP,如果还是无法获取 IP,可以尝试禁用再启用网卡。
ipconfig /renew为保证路由器安全性,在后台的系统 - 控制权页面中:
- 修改登录密码
- 添加 SSH公钥(可选)

修改二级路由(可选)
我的环境中有两级路由,一级路由是主路由,二级是 R4S,用于提供代理。为了避免冲突,需要修改二级路由的 IP 地址(如下图中的 192.168.28.1)。
在网络中选择 lan 接口进行编辑
修改 IPv4 地址
应用修改后,刷新 IP 并用新 IP 访问 OpenWrt 后台,系统会提示配置应用成功,并要求重新连接。再次刷新本机 IP,确认 IP 地址更新为新设置的子网 IP 和网关后,用新 IP 再次连接 LuCI 后台,并使用新密码登录后台。
最后插入 WAN 口网线,在状态 - 概览中确认 WAN 口网卡已经识别出了 IPv4 上游地址。如果有 IPv6 也应该会识别出来。

OpenWrt 安装主题
💡 点击展开查看
由于 OpenWrt 官方仓库里没有提供,主题和其他一些工具需要通过下载 ipk 包手动安装。我们需要登录 SSH 来下载和安装它们。
通过 SSH(使用上面设定的新密码;如果上传了公钥,也可以免密码登录)进入 OpenWrt,首先更新 opkg。
opkg update如果 opkg 不能正常更新,需要替换成使用国内的仓库镜像。以浙大镜像为例:
-
备份
/etc/opkg/distfeeds.confTerminal window cp /etc/opkg/distfeeds.conf /etc/opkg/distfeeds.conf.bak -
将 distfeeds.conf 文件内容替换为下面的内容,注意要和当前 OpenWrt 版本匹配,如这里是
24.10.0Terminal window src/gz openwrt_core https://mirrors.zju.edu.cn/openwrt/releases/24.10.0/targets/rockchip/armv8/packagessrc/gz openwrt_base https://mirrors.zju.edu.cn/openwrt/releases/24.10.0/packages/aarch64_generic/basesrc/gz openwrt_kmods https://mirrors.zju.edu.cn/openwrt/releases/24.10.0/targets/rockchip/armv8/kmods/6.6.73-1-f35e93bc2c89b98d107e57cdea041972src/gz openwrt_luci https://mirrors.zju.edu.cn/openwrt/releases/24.10.0/packages/aarch64_generic/lucisrc/gz openwrt_packages https://mirrors.zju.edu.cn/openwrt/releases/24.10.0/packages/aarch64_generic/packagessrc/gz openwrt_routing https://mirrors.zju.edu.cn/openwrt/releases/24.10.0/packages/aarch64_generic/routingsrc/gz openwrt_telephony https://mirrors.zju.edu.cn/openwrt/releases/24.10.0/packages/aarch64_generic/telephony也可以在这里找到其他镜像源: OpenWRT 软件源整理 - Oskyla 烹茶室
-
再次运行
opkg update,如果能正常更新,说明镜像源替换成功。
更新成功后安装主题。依旧是在 SSH 中,运行以下命令来安装 argon 主题、主题管理工具、以及管理工具的中文包:
curl -OL https://gh-proxy.com/https://github.com/jerrykuku/luci-theme-argon/releases/download/v2.3.2/luci-theme-argon_2.3.2-r20250207_all.ipkcurl -OL https://gh-proxy.com/https://github.com/jerrykuku/luci-app-argon-config/releases/download/v0.9/luci-app-argon-config_0.9_all.ipkcurl -OL https://gh-proxy.com/https://github.com/jerrykuku/luci-app-argon-config/releases/download/v0.9/luci-i18n-argon-config-zh-cn_git-22.114.24542-d1474ba_all.ipkopkg install luci-theme-argon*.ipk luci-app-argon-config*.ipk luci-i18n-argon-config*.ipk安装时如果出现找不到
/etc/uci-defaults/*的报错信息可以忽略,目前我还没发现有什么影响。
安装完成后,刷新后台页面,可以看到界面已经改成了新主题,并且在系统里出现新的页面“Argon 主题设置”。可以考虑把壁纸来源换成 Bing 壁纸。

分区扩容
新建分区
OpenWrt 的镜像只分配了 300MB 左右的空间(因为要顾及镜像文件本身的大小)。这对于安装一些第三方软件包来说是远远不够的。我们需要将 TF 卡上剩余的空间分配给 /overlay,这样就可以安装更多的软件包了。
我们将使用 LuCI 界面工具 luci-app-diskman 来扩展分区。
💡 OpenWrt 需手动安装 diskman,点击展开
首先安装luci-app-diskman,这是一个磁盘管理工具,可以用来管理磁盘分区。
curl -OL https://gh-proxy.com/https://github.com/lisaac/luci-app-diskman/releases/download/v0.2.11/luci-app-diskman_v0.2.11_all.ipkopkg install luci-app-diskman*.ipk安装后刷新后台页面,就可以在系统看到新的磁盘管理页面。没出现的话可以退出 LuCI 再登录。
在后台界面系统分类下,找到磁盘管理工具。

磁盘列表里只有一项,就是我们的 TF 卡。点击它的“编辑”,将 Free space 创建为新的分区,调整分区大小,并格式化为 ext4格式
注意 如果只有一张 TF 卡,这里建议加两个分区,一个用于系统管理的 /overlay,一个用于 /opt存放第三方数据

可以在“容量”文本框里填入 +15g来轻松设置分区大小。

挂载分区
在系统 - 挂载点中,找到底部的挂载点分组,然后点击添加,将两个新设备(即分区)分别挂载到 /mnt/new和/opt。
注意在选择挂载点时,目标位置是可以自己填任意值的,不一定要在提供的两个选项里选一个。

添加好后,确认挂载点如下所示,然后点击“保存并应用”。

接下来我们要将 /overlay 挂载的新分区上。
由于 /overlay
是系统的关键目录,我们不能直接删除它,所以需要先将它的内容拷贝到新分区上。
在 SSH 中,通过命令行将 /overlay下所有文件拷贝到 /mnt/new:
cp -r /overlay/* /mnt/new完成后,/mnt/new下应有两个文件夹:upper 和 work。
回到系统 - 挂载点页面,还是找到挂载点分组:
- 记住
/mnt/new是挂载到哪个设备的(如我这里是/dev/mmcblk1p3),然后删除这个挂载点。 - 添加新的挂载点,选择刚才删掉的设备,挂载点选择“作为外部 overlay 使用(/overlay)”,保存。
- 把 /overlay 拖到 /opt 上面去,变成如下图的样子,然后保存并应用。

重启设备并祈祷,如果一切顺利,你会在状态-概览-存储空间使用里看到磁盘空间已经变为了你设定的大小。

后续
恭喜!🥳 你已经成功安装了 Immortal/OpenWrt,并且配置了一些常用的功能。接下来你可以:
- 安装代理软件,如 Nikki。
- 安装 Docker 或其他服务,开始发挥 R4S 的潜力。



