Win2K3 extra patches

这篇具有很好参考价值的文章主要介绍了Win2K3 extra patches。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Win2K3 extra patches

Anon-maintained list of their own patches.

Changelog

2021-10-21: Initial upload.
2021-10-23: Added "Fixes for decompiled winlogon".

Use long-term test certificates

This is a quite large guide, moved to the separate page.

Identify as Windows XP instead of Windows 2000

Updates string formatter to identify the OS name in systeminfo and msinfo32 as Windows XP instead of Windows 2000.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
--- a/admin/wmi/wbem/providers/win32provider/providers/systemname.cpp
+++ b/admin/wmi/wbem/providers/win32provider/providers/systemname.cpp
@@ -372,7 +372,7 @@ CHString CSystemName::GetLocalizedName(void)
 #else
            if( IsWinNT5() )
            {
-               if ( IsWinNT51() )
+               if ( IsWinNT51() || IsWinNT52() )
                {
                    if (VER_SUITE_PERSONAL & t_ku.SuiteMask())
                    {

Support for SHA-2 RSA signatures in crypt32.dll

Support for SHA-2 RSA certificate signatures was added in XP SP3 only. Without this patch, modern certificates (like ISRG Root X1 from Let's Encrypt) won't be verified.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
--- a/ds/security/cryptoapi/pki/certstor/oidinfo.cpp
+++ b/ds/security/cryptoapi/pki/certstor/oidinfo.cpp
@@ -140,6 +140,11 @@ static CCRYPT_OID_INFO PubKeyAlgTable[] = {
 //  Signature Algorithm Table
 //--------------------------------------------------------------------------
 static const ALG_ID aiRsaPubKey = CALG_RSA_SIGN;
+static const DWORD rgdwRsaSha2Sign[] = {
+    CALG_RSA_SIGN,
+    0,
+    PROV_RSA_AES
+};
 static const DWORD rgdwMosaicSign[] = {
     CALG_DSS_SIGN,
     CRYPT_OID_INHIBIT_SIGNATURE_FORMAT_FLAG |
@@ -160,12 +165,17 @@ static const DWORD rgdwDssSign[] = {
     OID_INFO_LEN, pszOID, pwszName, CRYPT_SIGN_ALG_OID_GROUP_ID, aiHash,     sizeof(rgdwExtra), (BYTE *) rgdwExtra

+#define RSA_SHA2_SIGN_ALG_ENTRY(pszOID, pwszName, aiHash)+    SIGN_EXTRA_ALG_ENTRY(pszOID, pwszName, aiHash, rgdwRsaSha2Sign)
 #define DSS_SIGN_ALG_ENTRY(pszOID, pwszName)     SIGN_EXTRA_ALG_ENTRY(pszOID, pwszName, CALG_SHA1, rgdwDssSign)

 static CCRYPT_OID_INFO SignAlgTable[] = {
     RSA_SIGN_ALG_ENTRY(szOID_RSA_SHA1RSA, L"sha1RSA", CALG_SHA1),
     RSA_SIGN_ALG_ENTRY(szOID_RSA_MD5RSA, L"md5RSA", CALG_MD5),
+    RSA_SHA2_SIGN_ALG_ENTRY("1.2.840.113549.1.1.11", L"sha256RSA", CALG_SHA_256),
+    RSA_SHA2_SIGN_ALG_ENTRY("1.2.840.113549.1.1.12", L"sha384RSA", CALG_SHA_384),
+    RSA_SHA2_SIGN_ALG_ENTRY("1.2.840.113549.1.1.13", L"sha512RSA", CALG_SHA_512),
     DSS_SIGN_ALG_ENTRY(szOID_X957_SHA1DSA, L"sha1DSA"),
     RSA_SIGN_ALG_ENTRY(szOID_OIWSEC_sha1RSASign, L"sha1RSA", CALG_SHA1),
     RSA_SIGN_ALG_ENTRY(szOID_OIWSEC_sha1RSASign, L"shaRSA", CALG_SHA1),

It also probably requires relatively modern rsaenh.dll, but the one provided by win2003_x86-missing-binaries_v2.7z should be enough. Binary only, yes.

Remove "For testing purposes only" message from desktop

Just skip the check for test certificate (which you probably use for builds).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
--- a/windows/core/ntuser/kernel/init.c
+++ b/windows/core/ntuser/kernel/init.c
@@ -3100,7 +3100,7 @@ BOOL xxxUpdatePerUserSystemParameters(
     /*
      * Desktop Build Number Painting
      */
-    if (USER_SHARED_DATA->SystemExpirationDate.QuadPart || gfUnsignedDrivers) {
+    if (0 && (USER_SHARED_DATA->SystemExpirationDate.QuadPart || gfUnsignedDrivers)) {
         gdwCanPaintDesktop = 1;
     } else {
          FastGetProfileDwordW(pProfileUserName, PMAP_DESKTOP, L"PaintDesktopVersion", 0, &gdwCanPaintDesktop, dwPolicyFlags);

Disable waiting for network in ported winlogon

Just reorders some stuff and disables the network check (which is not really needed). For those who still use the ported version of winlogon (Winlogon200X_v3c.zip).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
--- a/ds/security/gina/winlogon/wlxutil.c
+++ b/ds/security/gina/winlogon/wlxutil.c
@@ -2578,6 +2578,9 @@ VOID WaitForServices(

     HANDLE hDsReindexEvent ;
     ULONG SamWaitTime = 15000 ;
+    DWORD fWaitForNetwork;
+    HKEY hKey;
+    DWORD cbData, dwType;

     if ( pTerm->SafeMode )
     {
@@ -2587,6 +2590,30 @@ VOID WaitForServices(
     StatusMessage(FALSE, 0, IDS_STATUS_SYSTEM_STARTUP );
     WaitForServiceToStart( TEXT("SamSs"), SamWaitTime);

+    StatusMessage (TRUE, 0, IDS_STATUS_RPCSS_START);
+    WaitForServiceToStart (TEXT("RpcSs"), 120000);
+
+    fWaitForNetwork = FALSE;
+    if ( RegOpenKeyEx( HKEY_LOCAL_MACHINE,
+                       TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"),
+                       0,
+                       KEY_READ,
+                       &hKey ) == ERROR_SUCCESS )
+    {
+        cbData = sizeof(fWaitForNetwork);
+        RegQueryValueEx( hKey,
+                         TEXT("WaitForNetwork"),
+                         NULL,
+                         &dwType,
+                         (LPBYTE)&fWaitForNetwork,
+                         &cbData );
+        RegCloseKey( hKey );
+    }
+
+    if ( !fWaitForNetwork ) {
+        return;
+    }
+
     if ( pTerm->SafeMode )
     {
         //
@@ -2615,9 +2642,6 @@ VOID WaitForServices(
     StatusMessage (FALSE, 0, IDS_STATUS_NET_START);
     WaitForServiceToStart (SERVICE_NETLOGON, 120000);

-    StatusMessage (TRUE, 0, IDS_STATUS_RPCSS_START);
-    WaitForServiceToStart (TEXT("RpcSs"), 120000);
-
     StatusMessage (TRUE, 0, IDS_STATUS_MUP_START);
     WaitForMUP (120000);

Fixes for decompiled winlogon

This version of winlogon (ds.zip_decompiled_XPSP1_winlogon.zip) can't be built without additional fixes. Moreover, it has some controversial stuff which can be easily removed.

  1. Everything in licensing is completely unnecessary. It contains a lot of unreadable disassembled code (and it's explained why in the included readme file). This directory can be easily removed with some code changes.
  2. Smartcard logon (sclogon2.c) is incomplete and conflicts with definitions from sclgnrpc.h. I decided to just remove it intead of trying to fix.
  3. Windows 3.1 migration code is incomplete and of course it's not needed at all. Moreover, even the ported version of winlogon doesn't have it (it was replaced with stubs, so I did the same).
  4. Some minor fixes here and there to make it buildable.

文章来源地址https://www.toymoban.com/news/detail-806509.html

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
--- a/ds/security/gina/winlogon/sas.c
+++ b/ds/security/gina/winlogon/sas.c
@@ -10,8 +10,6 @@
 #include <tsperf.h>
 #include <rdfilter.h>

-#include "../../licensing/explib/checkstatus.h"
-
 #define SHELL_RESTART_TIMER_ID  100
 //#define EVENT_SHELL_RESTARTED (1002 | 0x40000000)

@@ -1294,13 +1292,10 @@ LRESULT SASWndProc(
                 if ( pTerm->UserLoggedOn &&
                      !IsLocked( pTerm->WinlogonState ))
                 {
-                    DWORD val = 0;
-                    if (!sub_1043104(978, &val) && val) {
                         StartApplication(pTerm,
                                          szDesktop,
                                          pTerm->pWinStaWinlogon->UserProcessData.pEnvironment,
                                          szTaskMgr);
-                    }
                 }
                 return(0);
             }
@@ -1814,6 +1809,7 @@ LRESULT SASWndProc(
             DWORD dwType, dwSize;


+#if 0
             if (wParam == 977) {
                 DWORD val = 0;
                 // licensing check timer
@@ -1836,6 +1832,7 @@ LRESULT SASWndProc(
                     SetTimer(hwnd, 976, 3600000, NULL);
                 return 0;
             }
+#endif

             if (wParam != SHELL_RESTART_TIMER_ID) {
                 break;
--- a/ds/security/gina/winlogon/sources
+++ b/ds/security/gina/winlogon/sources
@@ -75,7 +75,6 @@ SOURCES=          secboot.c          notify.c          sc.c-         sclogon2.c          wlxutil.c          jobwait.c          samwait.c@@ -115,8 +114,6 @@ TARGETLIBS=         $(DS_GLOBAL_LIB_PATH)\wxapisrv.lib         $(SHELL_LIB_PATH)\shguidp.lib         $(SDK_LIB_PATH)\uuid.lib-        $(SECURITY_LIB_PATH)\sclgnrpc.lib-        $(SDK_LIB_PATH)\sclogon.lib         $(SDK_LIB_PATH)\advapip.lib         $(DS_LIB_PATH)\rsa32.lib         $(DS_LIB_PATH)\bignum.lib@@ -125,12 +122,6 @@ TARGETLIBS=         $(NET_LIB_PATH)\mprp.lib         $(SDK_LIB_PATH)\psapi.lib         $(SDK_LIB_PATH)\version.lib-        ..\..\licensing\shortsig\$(O)\shortsig.lib-        ..\..\licensing\shortsig00\$(O)\shortsig00.lib-        ..\..\licensing\lib\$(O)\license.lib-        ..\..\licensing\pidlib\$(O)\pidlib.lib-        ..\..\licensing\explib\$(O)\explib.lib-        ..\..\licensing\liclib\$(O)\liclib.lib         $(SDK_LIB_PATH)\oleaut32.lib         $(WINDOWS_LIB_PATH)\user32p.lib         $(SDK_LIB_PATH)\ws2_32.lib--- a/ds/security/gina/winlogon/termutil.c
+++ b/ds/security/gina/winlogon/termutil.c
@@ -790,6 +790,7 @@ DWORD CALLBACK DeferredTSNotify(LPVOID pVoid) {
     HANDLE HandlesToWait[2];
     DWORD dwWaitResult = WAIT_FAILED;
     HANDLE hTermSrvReadyEvent;
+    BOOLEAN pfIsRedirected;

     ASSERT(g_Console); // line 2050
     ASSERT(g_hUserLogoffEvent); // line 2051
@@ -824,7 +825,8 @@ DWORD CALLBACK DeferredTSNotify(LPVOID pVoid) {
             g_TSNotifyData.UserName,
             L"",
             0,
-            &g_pTerminals->MuGlobals.UserConfig))
+            &g_pTerminals->MuGlobals.UserConfig,
+            &pfIsRedirected))
         {
             DebugLog((DEB_ERROR, "FAILED DeferredTSNotify - _WinStationNotifyLogon\n"));
             dwResult = GetLastError();
@@ -1295,6 +1297,7 @@ int MultiUserLogonAttempt(
     PDOMAIN_CONTROLLER_INFO DcInfo = NULL ;
     DWORD Error;
     BOOLEAN WinStaResult;
+    BOOLEAN pfIsRedirected;

     ASSERT(!g_hDeferredTSNotifyThread); // line 1518

@@ -1525,11 +1528,11 @@ int MultiUserLogonAttempt(
     if (!IsAppServer()) {
         WinStaResult = _WinStationNotifyLogon(
             (BOOLEAN)TestTokenForAdmin(hToken), hToken, pMprInfo->pszDomain,
-            pMprInfo->pszUserName, L"", 0, &pTerm->MuGlobals.UserConfig);
+            pMprInfo->pszUserName, L"", 0, &pTerm->MuGlobals.UserConfig, &pfIsRedirected);
     } else {
         WinStaResult = _WinStationNotifyLogon(
             (BOOLEAN)TestTokenForAdmin(hToken), hToken, pMprInfo->pszDomain,
-            pMprInfo->pszUserName, pMprInfo->pszPassword, 0, &pTerm->MuGlobals.UserConfig);
+            pMprInfo->pszUserName, pMprInfo->pszPassword, 0, &pTerm->MuGlobals.UserConfig, &pfIsRedirected);
     }
     if (!WinStaResult) {
         LONG error;
--- a/ds/security/gina/winlogon/win31mig.c
+++ b/ds/security/gina/winlogon/win31mig.c
@@ -114,6 +114,7 @@ Windows31Migration(
     PTERMINAL pTerm
     )
 {
+#if 0
     HANDLE ImpersonationHandle;
     WIN31_MIGRATION_DIALOG  DialogInfo;
     DWORD Win31MigrationFlags;
@@ -151,6 +152,8 @@ Windows31Migration(
                             Win31MigrationDlgProc,
                             (LPARAM)&DialogInfo
                             );
+#endif
+    return FALSE;
 }


@@ -188,6 +191,7 @@ Win31MigrationDlgProc(
     LPARAM  lParam
     )
 {
+#if 0
     PWIN31_MIGRATION_DIALOG pDialogInfo = (PWIN31_MIGRATION_DIALOG) GetWindowLongPtr(hDlg, GWLP_USERDATA);
     HANDLE ImpersonationHandle;
     UINT idFocus = (UINT) -1;
@@ -331,6 +335,7 @@ Win31MigrationDlgProc(
         break;  // Fall through to do default processing
                 // We may have validated part of the window.
     }
+#endif

     // We didn't process the message
     return(FALSE);
--- a/ds/security/gina/winlogon/winlogon.c
+++ b/ds/security/gina/winlogon/winlogon.c
@@ -1180,7 +1180,6 @@ int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
         InitializeUserProfile();
     }

-    SclogonInit();
     if (!g_fHelpAssistantSession)
     {
         BaseInitAppcompatCacheSupport();
@@ -1693,7 +1692,6 @@ VOID PostSetupShutdown(PTERMINAL pTerm, SHUTDOWN_ACTION Action) {

 VOID MiscInitialization (PTERMINAL pTerm)
 {
-    DWORD Win31MigrationFlags;
     DWORD SetupShutdownRequired;


@@ -1744,6 +1742,7 @@ VOID MiscInitialization (PTERMINAL pTerm)
     }


+#if 0
     if (!IsWin9xUpgrade()) {
         //
         // Check to see if there is any WIN.INI or REG.DAT to migrate into
@@ -1762,6 +1761,7 @@ VOID MiscInitialization (PTERMINAL pTerm)
             InitSystemFontInfo();
         }
     }
+#endif


     //
--- a/ds/security/gina/winlogon/wlx.c
+++ b/ds/security/gina/winlogon/wlx.c
@@ -14,7 +14,6 @@
 #include <commctrl.h>
 #define NO_COMMCTRL_ALLOCFCNS
 #include <comctrlp.h>
-#include "../../licensing/explib/checkstatus.h"
 #define _MSGINA_
 #include <msginaexports.h>
 #include <shellapi.h>
@@ -83,7 +82,6 @@ extern TCHAR szNoPageFile[];
 TCHAR szAdminName[ MAX_STRING_BYTES ];

 BOOL g_fReadyForShutdown = FALSE;
-HANDLE dword_1075C6C = NULL;
 HINSTANCE hShell32Module = NULL;
 HANDLE g_hEventReconnect = NULL;

@@ -1479,7 +1477,6 @@ DoStartShell(
     WCHAR            szDesktop[MAX_PATH];
     PWINDOWSTATION   pWS = pTerm->pWinStaWinlogon;
     UINT             ErrorMode ;
-    BOOL             fWPABlockedShell = FALSE;
     HANDLE           hUserLogonEvent;


@@ -1535,6 +1532,7 @@ DoStartShell(
         InitMultimediaForStartShell(pTerm);
     }

+#if 0
     if (dword_1075C6C && WaitForSingleObject(dword_1075C6C, 0)) {
         fWPABlockedShell = TRUE;
     } else {
@@ -1575,9 +1573,7 @@ DoStartShell(
         CloseHandle(dword_1075C6C);
     }
     dword_1075C6C = NULL;
-
-    if (!fWPABlockedShell)
-    {
+#endif

         StatusMessage(TRUE, 0, IDS_STATUS_RESTORE_NET);

@@ -1683,9 +1679,7 @@ DoStartShell(

         SetErrorMode( ErrorMode );

-    }
-
-    return fWPABlockedShell ? FALSE : StartStatus ;
+    return StartStatus;
 }

 //+---------------------------------------------------------------------------
@@ -3241,17 +3235,6 @@ MainLoop(PTERMINAL   pTerm)
         fIsIdleLogonTimeoutDisabled = IsIdleLogonTimeoutDisabled();
     }

-    if (g_Console) {
-        dword_1075C6C = CreateEvent(NULL, FALSE, FALSE, NULL);
-        if (dword_1075C6C == NULL) {
-            return;
-        }
-        if (!QueueUserWorkItem(sub_10470D2, (PVOID)dword_1075C6C, 0)) {
-            return;
-        }
-        SetTimer(pTerm->hwndSAS, 977, 60000, NULL);
-    }
-
     //
     // Start profile mapping APIs
     //
@@ -3620,10 +3603,6 @@ MainLoop(PTERMINAL   pTerm)

         if (WlxResult == WLX_SAS_ACTION_LOGON)
         {
-            sub_10432CC(978, 0);
-            sub_10432CC(977, 0);
-            SetTimer(pTerm->hwndSAS, 977, 60000, NULL);
-
             if (IsPerOrProTerminalServer() && !pTerm->MuGlobals.field_E68 &&
                 (IsActiveConsoleSession() || !g_fHelpAssistantSession))
             {

到了这里,关于Win2K3 extra patches的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023年2K显示器推荐 | 有什么好用的2K显示器?

    开玩笑,如果是同价位来说,当然还是选Nano IPS了,画质好延迟低,妥妥的电竞显示器首选。关键你还是主玩LOL平时看电影,对延迟的要求远低于画质吧,所以TN屏就不用考虑了。Nano IPS的色彩表现的确是IPS屏中的佼佼者,毕竟是色域都可以达到95%以上的DCI-P3,可以产生更加鲜

    2024年02月11日
    浏览(56)
  • 使用 k3d 在Windows上安装 k3s

    k3d是运行k3s的一个轻量化程序,k3s 是Rancher实验室提供的一个k8s分支。k3d 是的 k3s 的安装非常便捷,能极大提高k8s的开发与练习。 kubectl是K8s官方客户端工具,K3s是K8s得简化版本,可以用它来操作k3s。下载完成后将 kubectl.exe 加入 环境变量 path 中。 k3d 即 k3s in docker ,它是将k3s以

    2024年02月09日
    浏览(49)
  • cs231n assignmen3 Extra Credit: Image Captioning with LSTMs

    题面 结合课程和上面的讲解,这部分就是让我们来实现lstm的前向操作,具体的操作流程在上面都写好了 解析 看代码注释吧 代码 输出 题面 计算lstm的反向操作 解析 sigmoid求导 Tanh 求导 反向传播讲解可以看这个 然后结合代码注释,想想链式求导法则就好了 代码 输出 题面 让

    2024年02月10日
    浏览(36)
  • Stable Diffusion WebUI 附加功能/图片放大(Extras):单张图片/批量处理/从目录进行批量处理

    本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 大家好,我是水滴~~ 篇文章主要讲解 Stable Diffusion WebUI 的附加功能/图片放大(Extras)的使用,主要包括:单张图片、批量处理、从目录进行批量处理。文章中包含大量的图片和示

    2024年04月23日
    浏览(48)
  • 【K3s】第1篇 K3s入门级介绍及架构详解

    https://docs.k3s.io/zh/architecture K3s 是一个轻量级的 Kubernetes 发行版,它针对边缘计算、物联网等场景进行了高度优化。K3s 有以下增强功能: 打包为单个二进制文件。 使用基于 sqlite3 的轻量级存储后端作为默认存储机制。同时支持使用 etcd3、MySQL 和 PostgreSQL 作为存储机制。 封装

    2023年04月26日
    浏览(48)
  • S32K3学习笔记---S32K3之MCU模块

    ​ 后续关于MCAL的配置都是基于EB29.0,RTD3.0的配置,MCU是基于S32K324。前期312、344也都使用过,也是第一次使用NXP的多核,后续将记录各个模块学习过程。 环境安装及参考资料如下: ​ 芯片手册:S32K3XXRM.pdf ​ EB工具 :EB29.0安装包 ​ RTD及demo路径:RTD3.0和Demo ​ EB安装步骤:

    2024年02月03日
    浏览(47)
  • Centos 报错 Repository extras is listed more than once in the configuration

    使用 yum update -y 报错 Repository extras is listed more than once in the configuration 2020 年 12 月 8 号,CentOS 官方宣布了停止维护 CentOS Linux 的计划,并推出了 CentOS Stream 项目,CentOS Linux 8 作为 RHEL 8 的复刻版本,生命周期缩短,于 2021 年 12 月 31 日停止更新并停止维护(EOL),更多的信息可

    2024年02月12日
    浏览(36)
  • DIY NAS服务器之OMV 5.6入坑指南(二)- 安装omv-extras插件

    DIY NAS服务器之OMV 5.6入坑指南(一)-openmediavalut 5.6安装 DIY NAS服务器之OMV 5.6入坑指南(二)- 安装omv-extras插件 DIY NAS服务器之OMV 5.6入坑指南(三)- 切换系统源 DIY NAS服务器之OMV 5.6入坑指南(四) -安装docker和Portainer DIY NAS服务器之OMV 5.6入坑指南(五) -数据同步及管理 目录

    2024年02月05日
    浏览(45)
  • macOS Monterey 2K 屏开 HiDPI

    苹果原装 2k 和 1080p 都一言难尽啊(什么时候学学隔壁巨硬家极为先进的缩放技术),还是得开 HiDPI。但是系统更新了,以前的流程不好使了,浅记一下解决问题的流程。 先装 RDM: https://github.com/avibrazil/RDM MacBook 合盖,查外置显示器 ID: output: 两个数字转十六进制: 制作显

    2024年02月10日
    浏览(46)
  • K3S+Rancher

    查看系统版本 查看系统命令集 这是我系统配置情况 服务器清单 名称 IP 配置 系统 主-服务 192.168.23.171 4Cpu8G Ubuntu 20.04.6 副主-服务 192.168.23.103 4Cpu8G Ubuntu 20.04.6 代理-服务 192.168.23.248 4Cpu8G Ubuntu 20.04.6 外置均衡代理 192.168.23.205 4Cpu8G Ubuntu 20.04.6 修改/etc/apt/sources.list文件 修改主机服

    2024年01月18日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包