[{"data":1,"prerenderedAt":3231},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002Fch9-qi-ta-cao-zuo":3,"wiki-doc-items-2024-03-30-linux-jiao-cheng":3178},{"id":4,"title":5,"body":6,"chapter":3165,"chapterSort":3166,"date":3167,"description":31,"docKey":3168,"docRoot":3169,"docTitle":3170,"extension":3171,"isWikiDoc":1151,"isWikiIndex":3172,"meta":3173,"navigation":1151,"path":3174,"seo":3175,"stem":3176,"wikiDepth":38,"__hash__":3177},"wiki\u002Fwiki\u002F2024-03-30-Linux教程\u002Fch9-其他操作.md","其他操作",{"type":7,"value":8,"toc":3156},"minimark",[9,13,17,25,313,316,389,392,396,400,406,409,412,415,420,423,426,429,435,438,443,446,449,454,457,462,465,468,473,476,481,484,500,503,506,518,521,530,533,536,545,548,557,560,563,572,575,578,597,600,603,612,617,620,623,632,635,644,647,656,659,668,673,676,684,689,692,701,704,712,717,720,729,732,735,739,742,747,750,755,770,775,780,791,796,802,807,822,827,830,835,840,845,853,858,865,870,881,886,889,892,895,898,903,906,928,933,936,945,950,953,977,980,1011,1014,1019,1022,1037,1042,1061,1064,1067,1072,1084,1089,1094,1097,1102,1105,1120,1123,1128,1133,1137,1142,1196,1199,1203,1209,1215,1220,1223,1230,1235,1242,1245,1248,1255,1270,1273,1336,1339,1354,1367,1457,1460,1463,1532,1535,1538,1541,1563,1566,1571,1576,1583,1588,1591,1595,1600,1605,1609,1612,1615,1658,1663,1666,1688,1703,1705,1710,1722,1782,1784,1786,1844,1846,1848,1851,1867,1872,1875,1880,1883,1886,1951,1956,1959,1961,1965,1977,2059,2061,2063,2121,2127,2129,2135,2140,2142,2147,2150,2171,2206,2210,2225,2228,2231,2234,2237,2245,2248,2261,2264,2279,2282,2301,2350,2353,2373,2376,2390,2396,2399,2408,2424,2436,2476,2481,2509,2514,2519,2549,2553,2557,2560,2565,2570,2583,2595,2598,2603,2618,2625,2658,2663,2681,2684,2688,2691,2695,2698,2702,2705,2709,2718,2724,2729,2741,2746,2751,2756,2783,2786,2791,2802,2807,2813,2818,2821,2826,3036,3040,3045,3050,3054,3059,3071,3079,3082,3087,3091,3096,3101,3106,3112,3117,3122,3127,3130,3133,3139,3144,3149,3152],[10,11,12],"h3",{"id":12},"工控机如何连wifi",[14,15,16],"p",{},"当我们工控机从一个环境移动到另一个环境，且新的环境的wifi我们没有连接过，我们没有屏幕如何让工控机连上网呢？",[14,18,19,20,24],{},"进入工控机的硬盘目录，进入",[21,22,23],"code",{},"\u002Fetc\u002Fnetplan\u002F","，底下有很多yaml,找到一个最符合下方格式的yaml:",[26,27,32],"pre",{"className":28,"code":29,"language":30,"meta":31,"style":31},"language-YAML shiki shiki-themes github-light github-dark","network: \n  version: 2 \n  wifis: \n    NM-6f414fe0-2658-48ff-89ee-c7981b87bc96: \n      renderer: NetworkManager \n      match: \n        name: \"wlan0\" \n      dhcp4: true \n      dhcp6: true \n      access-points: \n        \"EMIS_Vinci_Robocon_5G\": \n          auth: \n            key-management: \"psk\" \n            password: \"vinci666\" \n          networkmanager: \n            uuid: \"6f414fe0-2658-48ff-89ee-c7981b87bc96\" \n            name: \"EMIS_Vinci_Robocon_5G\" \n            passthrough: \n              wifi-security.auth-alg: \"open\" \n              ipv6.addr-gen-mode: \"default\" \n              ipv6.ip6-privacy: \"-1\" \n              proxy._: \"\" \n      networkmanager: \n        uuid: \"6f414fe0-2658-48ff-89ee-c7981b87bc96\" \n        name: \"EMIS_Vinci_Robocon_5G\"\n\n","YAML","",[21,33,34,47,63,71,79,93,101,114,127,139,147,155,163,176,189,197,210,223,231,244,257,270,283,291,303],{"__ignoreMap":31},[35,36,39,43],"span",{"class":37,"line":38},"line",1,[35,40,42],{"class":41},"s9eBZ","network",[35,44,46],{"class":45},"sVt8B",": \n",[35,48,50,53,56,60],{"class":37,"line":49},2,[35,51,52],{"class":41},"  version",[35,54,55],{"class":45},": ",[35,57,59],{"class":58},"sj4cs","2",[35,61,62],{"class":45}," \n",[35,64,66,69],{"class":37,"line":65},3,[35,67,68],{"class":41},"  wifis",[35,70,46],{"class":45},[35,72,74,77],{"class":37,"line":73},4,[35,75,76],{"class":41},"    NM-6f414fe0-2658-48ff-89ee-c7981b87bc96",[35,78,46],{"class":45},[35,80,82,85,87,91],{"class":37,"line":81},5,[35,83,84],{"class":41},"      renderer",[35,86,55],{"class":45},[35,88,90],{"class":89},"sZZnC","NetworkManager",[35,92,62],{"class":45},[35,94,96,99],{"class":37,"line":95},6,[35,97,98],{"class":41},"      match",[35,100,46],{"class":45},[35,102,104,107,109,112],{"class":37,"line":103},7,[35,105,106],{"class":41},"        name",[35,108,55],{"class":45},[35,110,111],{"class":89},"\"wlan0\"",[35,113,62],{"class":45},[35,115,117,120,122,125],{"class":37,"line":116},8,[35,118,119],{"class":41},"      dhcp4",[35,121,55],{"class":45},[35,123,124],{"class":58},"true",[35,126,62],{"class":45},[35,128,130,133,135,137],{"class":37,"line":129},9,[35,131,132],{"class":41},"      dhcp6",[35,134,55],{"class":45},[35,136,124],{"class":58},[35,138,62],{"class":45},[35,140,142,145],{"class":37,"line":141},10,[35,143,144],{"class":41},"      access-points",[35,146,46],{"class":45},[35,148,150,153],{"class":37,"line":149},11,[35,151,152],{"class":89},"        \"EMIS_Vinci_Robocon_5G\"",[35,154,46],{"class":45},[35,156,158,161],{"class":37,"line":157},12,[35,159,160],{"class":41},"          auth",[35,162,46],{"class":45},[35,164,166,169,171,174],{"class":37,"line":165},13,[35,167,168],{"class":41},"            key-management",[35,170,55],{"class":45},[35,172,173],{"class":89},"\"psk\"",[35,175,62],{"class":45},[35,177,179,182,184,187],{"class":37,"line":178},14,[35,180,181],{"class":41},"            password",[35,183,55],{"class":45},[35,185,186],{"class":89},"\"vinci666\"",[35,188,62],{"class":45},[35,190,192,195],{"class":37,"line":191},15,[35,193,194],{"class":41},"          networkmanager",[35,196,46],{"class":45},[35,198,200,203,205,208],{"class":37,"line":199},16,[35,201,202],{"class":41},"            uuid",[35,204,55],{"class":45},[35,206,207],{"class":89},"\"6f414fe0-2658-48ff-89ee-c7981b87bc96\"",[35,209,62],{"class":45},[35,211,213,216,218,221],{"class":37,"line":212},17,[35,214,215],{"class":41},"            name",[35,217,55],{"class":45},[35,219,220],{"class":89},"\"EMIS_Vinci_Robocon_5G\"",[35,222,62],{"class":45},[35,224,226,229],{"class":37,"line":225},18,[35,227,228],{"class":41},"            passthrough",[35,230,46],{"class":45},[35,232,234,237,239,242],{"class":37,"line":233},19,[35,235,236],{"class":41},"              wifi-security.auth-alg",[35,238,55],{"class":45},[35,240,241],{"class":89},"\"open\"",[35,243,62],{"class":45},[35,245,247,250,252,255],{"class":37,"line":246},20,[35,248,249],{"class":41},"              ipv6.addr-gen-mode",[35,251,55],{"class":45},[35,253,254],{"class":89},"\"default\"",[35,256,62],{"class":45},[35,258,260,263,265,268],{"class":37,"line":259},21,[35,261,262],{"class":41},"              ipv6.ip6-privacy",[35,264,55],{"class":45},[35,266,267],{"class":89},"\"-1\"",[35,269,62],{"class":45},[35,271,273,276,278,281],{"class":37,"line":272},22,[35,274,275],{"class":41},"              proxy._",[35,277,55],{"class":45},[35,279,280],{"class":89},"\"\"",[35,282,62],{"class":45},[35,284,286,289],{"class":37,"line":285},23,[35,287,288],{"class":41},"      networkmanager",[35,290,46],{"class":45},[35,292,294,297,299,301],{"class":37,"line":293},24,[35,295,296],{"class":41},"        uuid",[35,298,55],{"class":45},[35,300,207],{"class":89},[35,302,62],{"class":45},[35,304,306,308,310],{"class":37,"line":305},25,[35,307,106],{"class":41},[35,309,55],{"class":45},[35,311,312],{"class":89},"\"EMIS_Vinci_Robocon_5G\"\n",[14,314,315],{},"将其改为新wifi的名和密码：",[26,317,319],{"className":28,"code":318,"language":30,"meta":31,"style":31},"network:\n  version: 2\n  wifis:\n    wlan0:\n      dhcp4: true\n      dhcp6: true\n      access-points:\n        \"EMIS_Vinci_Robocon_5G\":\n          password: \"vinci666\"\n\n",[21,320,321,328,337,343,350,359,367,373,379],{"__ignoreMap":31},[35,322,323,325],{"class":37,"line":38},[35,324,42],{"class":41},[35,326,327],{"class":45},":\n",[35,329,330,332,334],{"class":37,"line":49},[35,331,52],{"class":41},[35,333,55],{"class":45},[35,335,336],{"class":58},"2\n",[35,338,339,341],{"class":37,"line":65},[35,340,68],{"class":41},[35,342,327],{"class":45},[35,344,345,348],{"class":37,"line":73},[35,346,347],{"class":41},"    wlan0",[35,349,327],{"class":45},[35,351,352,354,356],{"class":37,"line":81},[35,353,119],{"class":41},[35,355,55],{"class":45},[35,357,358],{"class":58},"true\n",[35,360,361,363,365],{"class":37,"line":95},[35,362,132],{"class":41},[35,364,55],{"class":45},[35,366,358],{"class":58},[35,368,369,371],{"class":37,"line":103},[35,370,144],{"class":41},[35,372,327],{"class":45},[35,374,375,377],{"class":37,"line":116},[35,376,152],{"class":89},[35,378,327],{"class":45},[35,380,381,384,386],{"class":37,"line":129},[35,382,383],{"class":41},"          password",[35,385,55],{"class":45},[35,387,388],{"class":89},"\"vinci666\"\n",[14,390,391],{},"工控机开机即可连上网。",[10,393,395],{"id":394},"ssh远程开发","SSH远程开发",[397,398,399],"h4",{"id":399},"环境准备",[14,401,402],{},[403,404,405],"strong",{},"1.硬件准备",[14,407,408],{},"首先要有一台工控机（X86小型电脑，专业工控机，树莓派等等）。",[14,410,411],{},"控制系统的硬件载体是具有多样性的，常用的多是基于ARM、x86等架构的处理器，比如：PC、工控机、树莓派、NVIDIA Jetson...。不同的处理器都存在一定的优缺点，PC和工控机，处理器性能强大，但是功耗高、体积大、灵活性差，嵌入式系统则反之。对于我们而言，可以根据机器人平台的电气、载重、空间以及用途等诸多要素自主选择合适的控制系统。",[14,413,414],{},"无论选用何种处理器，只要是要进行机器人的开发，安装了ROS或者ROS2，那么对于开发人员而言，在使用上，没有任何本质的区别，或者换言之，作为软件工程师，部分场景下无需关注于硬件的选型。",[14,416,417],{},[403,418,419],{},"2.设置固定IP",[14,421,422],{},"远程连接时，不管使用何种工具，需要根据IP地址定位到被连接的主机，再通过账号和密码登录该主机，因此，我们需要先获取该IP地址。并且每次连接时，都需要使用到IP，为了保证连接的便利性和稳定性，最好将被连接主机的IP地址设置为固定IP，具体操作如下。",[14,424,425],{},"1.进入设置界面",[14,427,428],{},"启动被连接的主机（启动时需要连接显示器或使用HDMI采集卡，并且配置完SSH远程访问之后，可以不再使用显示器或HDMI采集卡），并进入设置界面。",[14,430,431],{},[432,433],"img",{"alt":31,"src":434},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage332.webp",[14,436,437],{},"2.配置所连接的网络",[14,439,440],{},[432,441],{"alt":31,"src":442},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage333.webp",[14,444,445],{},"3.设置固定IP",[14,447,448],{},"查看当前IP地址。",[14,450,451],{},[432,452],{"alt":31,"src":453},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage334.webp",[14,455,456],{},"设置固定IP。",[14,458,459],{},[432,460],{"alt":31,"src":461},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage335.webp",[14,463,464],{},"至此，IP配置完毕。",[397,466,467],{"id":467},"环境搭建",[14,469,470],{},[403,471,472],{},"概念",[14,474,475],{},"SSH（Secure Shell）是一种通用的、功能强大的、基于软件的网络安全解决方案。计算机每次向网络发送数据时，SSH都会自动对其进行加密。数据到达目的地时，SSH自动对加密数据进行解密。整个过程都是透明的，使用OpenSSH工具将会增进你的系统安全性。SSH安装容易、使用简单。",[14,477,478],{},[403,479,480],{},"实现",[14,482,483],{},"SSH实现架构上分为客户端和服务器端两大部分，客户端是数据的发送方，服务端是数据的接收方，当前场景下，我们需要从本地主机发送数据到远程主机，那么本地主机需要安装并启动SSH客户端，而远程主机则需要安装并启动SSH服务端，整个实现具体流程如下：",[485,486,487,491,494,497],"ol",{},[488,489,490],"li",{},"本地主机安装SSH客户端，远程主机安装SSH服务端；",[488,492,493],{},"远程主机启动SSH服务；",[488,495,496],{},"本地主机登陆远程主机；",[488,498,499],{},"实现数据传输。",[14,501,502],{},"1.安装SSH客户端与服务端",[14,504,505],{},"默认情况下，Ubuntu系统已经安装了SSH客户端，因此只需要在远程主机安装SSH服务端即可，安装命令如下：",[26,507,512],{"className":508,"code":509,"language":510,"meta":511,"style":31},"language-Plain shiki shiki-themes github-light github-dark"," sudo apt install openssh-server\n","Plain","Text",[21,513,514],{"__ignoreMap":31},[35,515,516],{"class":37,"line":38},[35,517,509],{},[14,519,520],{},"如果SSH客户端需要自行安装，那么调用如下命令:",[26,522,524],{"className":508,"code":523,"language":510,"meta":511,"style":31},"sudo apt install openssh-client\n",[21,525,526],{"__ignoreMap":31},[35,527,528],{"class":37,"line":38},[35,529,523],{},[14,531,532],{},"2.远程主机启动SSH服务",[14,534,535],{},"远程主机启动 ssh 服务命令如下：",[26,537,539],{"className":508,"code":538,"language":510,"meta":511,"style":31},"sudo \u002Fetc\u002Finit.d\u002Fssh start\n",[21,540,541],{"__ignoreMap":31},[35,542,543],{"class":37,"line":38},[35,544,538],{},[14,546,547],{},"启动后可使用如下命令查看服务是否正常运行：",[26,549,551],{"className":508,"code":550,"language":510,"meta":511,"style":31},"ps -e | grep ssh\n",[21,552,553],{"__ignoreMap":31},[35,554,555],{"class":37,"line":38},[35,556,550],{},[14,558,559],{},"如果启动成功，会包含 sshd 程序。",[14,561,562],{},"以后需要频繁的使用ssh远程登录，为了简化实现，可以将远程主机的ssh服务设置为开机自启动，命令如下：",[26,564,566],{"className":508,"code":565,"language":510,"meta":511,"style":31},"sudo systemctl enable ssh\n",[21,567,568],{"__ignoreMap":31},[35,569,570],{"class":37,"line":38},[35,571,565],{},[14,573,574],{},"3.本地远程登录",[14,576,577],{},"登录远程主机可以调用如下命令:",[26,579,583],{"className":580,"code":581,"language":582,"meta":31,"style":31},"language-bash shiki shiki-themes github-light github-dark","ssh -X 用户名@ip地址\n","bash",[21,584,585],{"__ignoreMap":31},[35,586,587,591,594],{"class":37,"line":38},[35,588,590],{"class":589},"sScJk","ssh",[35,592,593],{"class":58}," -X",[35,595,596],{"class":89}," 用户名@ip地址\n",[14,598,599],{},"然后根据提示，录入登陆密码，即可成功登录。",[14,601,602],{},"如果退出，可以调用exit命令：",[26,604,606],{"className":508,"code":605,"language":510,"meta":511,"style":31},"exit\n",[21,607,608],{"__ignoreMap":31},[35,609,610],{"class":37,"line":38},[35,611,605],{},[14,613,614],{},[403,615,616],{},"4.实现数据传输",[14,618,619],{},"通过SSH在本地主机只需调用相关指令，便可方便的实现与远程主机的数据上传或下载，指令格式如下所示：",[14,621,622],{},"上传文件指令格式如下：",[26,624,626],{"className":508,"code":625,"language":510,"meta":511,"style":31},"scp 本地文件路径 账号@ip:路径\n",[21,627,628],{"__ignoreMap":31},[35,629,630],{"class":37,"line":38},[35,631,625],{},[14,633,634],{},"上传文件夹指令格式如下：",[26,636,638],{"className":508,"code":637,"language":510,"meta":511,"style":31},"scp -r 本地文件夹路径 账号@ip:路径\n",[21,639,640],{"__ignoreMap":31},[35,641,642],{"class":37,"line":38},[35,643,637],{},[14,645,646],{},"下载文件指令格式如下：",[26,648,650],{"className":508,"code":649,"language":510,"meta":511,"style":31},"scp 账号@ip:路径 本地文件夹路径\n",[21,651,652],{"__ignoreMap":31},[35,653,654],{"class":37,"line":38},[35,655,649],{},[14,657,658],{},"下载文件夹指令格式如下：",[26,660,662],{"className":508,"code":661,"language":510,"meta":511,"style":31},"scp -r 账号@ip:路径 本地文件夹路径\n",[21,663,664],{"__ignoreMap":31},[35,665,666],{"class":37,"line":38},[35,667,661],{},[14,669,670],{},[403,671,672],{},"优化",[14,674,675],{},"每次远程登录时，都需要输入密码，使用不方便，可以借助密钥简化登录过程，实现免密登录，提高操作效率。实现思想是：生成一对公钥私钥，私钥存储在本地，公钥上传至服务器，每次登录时，本地直接上传私钥到服务器，服务器有匹配的公钥就认为是合法用户，直接创建SSH连接即可。具体实现步骤只有两步：",[485,677,678,681],{},[488,679,680],{},"本地生成密钥对；",[488,682,683],{},"将公钥上传至远程主机。",[14,685,686],{},[403,687,688],{},"1.生成密钥对",[14,690,691],{},"本地客户端生成公私钥：（一路回车默认即可）",[26,693,695],{"className":508,"code":694,"language":510,"meta":511,"style":31},"ssh-keygen\n",[21,696,697],{"__ignoreMap":31},[35,698,699],{"class":37,"line":38},[35,700,694],{},[14,702,703],{},"上面这个命令会在用户目录.ssh文件夹下创建公私钥：",[485,705,706,709],{},[488,707,708],{},"id_rsa （私钥）；",[488,710,711],{},"id_rsa.pub (公钥)。",[14,713,714],{},[403,715,716],{},"2.公钥上传",[14,718,719],{},"上传指令如下：",[26,721,723],{"className":508,"code":722,"language":510,"meta":511,"style":31},"ssh-copy-id -i ~\u002F.ssh\u002Fid_rsa.pub 账号@ip\n",[21,724,725],{"__ignoreMap":31},[35,726,727],{"class":37,"line":38},[35,728,722],{},[14,730,731],{},"上面这条指令是将本地公钥上传到远程主机的ssh目录下，该目录下有文件authorized_keys保存了公钥内容。",[14,733,734],{},"以后再远程登录就无需录入密码了。",[397,736,738],{"id":737},"使用vscode优化","使用VScode优化",[14,740,741],{},"上一节，我们介绍了ssh远程连接的使用，但是如果只是纯粹使用ssh也存在一些不足，比如：编辑文件内容时，需要使用vi编辑器，且在一个终端内，无法同时编辑多个文件。本节将介绍一更为实用的功能——VSCode结合插件实现远程开发，这使我们可以以图形化的方式实现远程开发，比ssh的使用更方便快捷，可以大大的提高程序开发效率。",[14,743,744],{},[403,745,746],{},"1.准备工作",[14,748,749],{},"VScode远程开发依赖于ssh，请首先按照上一节内容配置ssh远程连接。",[14,751,752],{},[403,753,754],{},"2.为VScode安装远程开发插件",[14,756,757,758,761,762,765,766,769],{},"启动VScode，首先点击侧边栏的扩展按钮，然后在",[21,759,760],{},"扩展：商店","的搜索栏输入",[21,763,764],{},"Remote Development","并点击同名插件，最后在右侧显示区中点击",[21,767,768],{},"安装","。",[14,771,772],{},[432,773],{"alt":31,"src":774},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage336.webp",[14,776,777],{},[403,778,779],{},"3.配置远程连接",[14,781,782,783,786,787,790],{},"步骤1：使用快捷键",[21,784,785],{},"ctrl + shift + p","打开命令输入窗口，并输入",[21,788,789],{},"Remote-SSH:Connect to Host...","，弹出列表中选择与之同名的选项。",[14,792,793],{},[432,794],{"alt":31,"src":795},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage337.webp",[14,797,798,799,769],{},"步骤2：步骤1完成将弹出一个新的命令窗口如下，选择下拉列表中的 ",[21,800,801],{},"Add New SSH Host",[14,803,804],{},[432,805],{"alt":31,"src":806},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage338.webp",[14,808,809,810,813,814,817,818,821],{},"步骤3：步骤2完成又将弹出一个新的命令窗口，在其中输入：",[21,811,812],{},"ssh -X ubuntu@192.168.43.164","，其中，",[21,815,816],{},"ubuntu","需要替换为你的登录用户名，",[21,819,820],{},"192.18.43.164"," 则替换为被远程连接主机的ip地址。",[14,823,824],{},[432,825],{"alt":31,"src":826},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage339.webp",[14,828,829],{},"步骤4：选择步骤3完成后的弹窗列表中的第一个选项(或直接回车)，即可完成配置，配置成功后会有提示信息。",[14,831,832],{},[432,833],{"alt":31,"src":834},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage340.webp",[14,836,837],{},[432,838],{"alt":31,"src":839},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage341.webp",[14,841,842],{},[403,843,844],{},"4.使用",[14,846,847,848,786,850,852],{},"步骤1：继续使用快捷键",[21,849,785],{},[21,851,789],{},"，此时列表中将显示步骤3中配置的ip地址，直接选择，选择后，VScode将打开一个新的窗口。",[14,854,855],{},[432,856],{"alt":31,"src":857},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage342.webp",[14,859,860,861,864],{},"或者，也可以点击侧边栏的",[21,862,863],{},"远程资源管理器","，在弹出的服务器列表中选择要连接的服务器，并右击，选择在本窗口或新窗口中实现远程连接。",[14,866,867],{},[432,868],{"alt":31,"src":869},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage343.webp",[14,871,872,873,876,877,880],{},"步骤2：选择菜单栏的",[21,874,875],{},"文件","下的",[21,878,879],{},"打开文件夹","，在弹窗列表中选择需要打开的文件夹并点击确定即可。",[14,882,883],{},[432,884],{"alt":31,"src":885},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage344.webp",[14,887,888],{},"最终，我们就可以像操作本地文件一样实现远程开发了。",[10,890,891],{"id":891},"远程桌面",[14,893,894],{},"因为用X11转发效率太低太低，所以还是要选用远程访问桌面的形式来看Rviz2和Gazebo等等（如果有需求的话）",[14,896,897],{},"我们选择使用VNC来看。",[485,899,900],{},[488,901,902],{},"安装VNC服务器：",[14,904,905],{},"这里以TigerVNC为例进行安装：",[26,907,909],{"className":580,"code":908,"language":582,"meta":31,"style":31},"sudo apt install tigervnc-standalone-server tigervnc-common\n",[21,910,911],{"__ignoreMap":31},[35,912,913,916,919,922,925],{"class":37,"line":38},[35,914,915],{"class":589},"sudo",[35,917,918],{"class":89}," apt",[35,920,921],{"class":89}," install",[35,923,924],{"class":89}," tigervnc-standalone-server",[35,926,927],{"class":89}," tigervnc-common\n",[485,929,930],{"start":49},[488,931,932],{},"设置VNC密码：",[14,934,935],{},"为VNC用户设置密码，运行以下命令：",[26,937,939],{"className":580,"code":938,"language":582,"meta":31,"style":31},"vncpasswd\n",[21,940,941],{"__ignoreMap":31},[35,942,943],{"class":37,"line":38},[35,944,938],{"class":589},[485,946,947],{"start":65},[488,948,949],{},"配置VNC启动脚本:",[14,951,952],{},"创建VNC配置文件，在用户家目录内的.vnc文件夹中创建启动文件：",[26,954,956],{"className":580,"code":955,"language":582,"meta":31,"style":31},"mkdir -p ~\u002F.vnc\nnano ~\u002F.vnc\u002Fxstartup\n",[21,957,958,969],{"__ignoreMap":31},[35,959,960,963,966],{"class":37,"line":38},[35,961,962],{"class":589},"mkdir",[35,964,965],{"class":58}," -p",[35,967,968],{"class":89}," ~\u002F.vnc\n",[35,970,971,974],{"class":37,"line":49},[35,972,973],{"class":589},"nano",[35,975,976],{"class":89}," ~\u002F.vnc\u002Fxstartup\n",[14,978,979],{},"在打开的编辑器里面输入以下内容（以GNOME为例）：",[26,981,983],{"className":580,"code":982,"language":582,"meta":31,"style":31},"#!\u002Fbin\u002Fsh\nunset SESSION_MANAGER\nunset DBUS_SESSION_BUS_ADDRESS\ngnome-session\n",[21,984,985,991,999,1006],{"__ignoreMap":31},[35,986,987],{"class":37,"line":38},[35,988,990],{"class":989},"sJ8bj","#!\u002Fbin\u002Fsh\n",[35,992,993,996],{"class":37,"line":49},[35,994,995],{"class":58},"unset",[35,997,998],{"class":89}," SESSION_MANAGER\n",[35,1000,1001,1003],{"class":37,"line":65},[35,1002,995],{"class":58},[35,1004,1005],{"class":89}," DBUS_SESSION_BUS_ADDRESS\n",[35,1007,1008],{"class":37,"line":73},[35,1009,1010],{"class":589},"gnome-session\n",[14,1012,1013],{},"保存并退出（在nano中按Ctrl + O保存，然后按Ctrl + X退出）。",[485,1015,1016],{"start":73},[488,1017,1018],{},"给予执行权限：",[14,1020,1021],{},"为xstartup文件设置执行权限：",[26,1023,1025],{"className":580,"code":1024,"language":582,"meta":31,"style":31},"chmod +x ~\u002F.vnc\u002Fxstartup\n",[21,1026,1027],{"__ignoreMap":31},[35,1028,1029,1032,1035],{"class":37,"line":38},[35,1030,1031],{"class":589},"chmod",[35,1033,1034],{"class":89}," +x",[35,1036,976],{"class":89},[485,1038,1039],{"start":81},[488,1040,1041],{},"启动VNC服务器：",[26,1043,1045],{"className":580,"code":1044,"language":582,"meta":31,"style":31},"vncserver -geometry 1920x1080 -localhost=0\n",[21,1046,1047],{"__ignoreMap":31},[35,1048,1049,1052,1055,1058],{"class":37,"line":38},[35,1050,1051],{"class":589},"vncserver",[35,1053,1054],{"class":58}," -geometry",[35,1056,1057],{"class":89}," 1920x1080",[35,1059,1060],{"class":58}," -localhost=0\n",[14,1062,1063],{},"geometry 选项指定窗口大小，localhost 选项设为 0 以开放连接。(设为1是只允许本地连接)",[14,1065,1066],{},"你将看到类似于:1的输出，这表示VNC会话的显示编号。例如，如果输出为:1，则VNC监听的端口为5901（5900 + 显示编号）。",[485,1068,1069],{"start":95},[488,1070,1071],{},"查看已开启的VNC服务器：",[26,1073,1075],{"className":580,"code":1074,"language":582,"meta":31,"style":31},"vncserver -list\n",[21,1076,1077],{"__ignoreMap":31},[35,1078,1079,1081],{"class":37,"line":38},[35,1080,1051],{"class":589},[35,1082,1083],{"class":58}," -list\n",[14,1085,1086],{},[432,1087],{"alt":31,"src":1088},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage345.webp",[485,1090,1091],{"start":103},[488,1092,1093],{},"连接到VNC服务器：",[14,1095,1096],{},"使用VNC客户端（如vncviewer）连接到VNC服务器，输入你的服务器IP和端口。例如，如果服务器IP为192.168.31.10，且显示编号为1，你应该连接到192.168.31.10:1，或者直接输入192.168.31.10:5901。",[485,1098,1099],{"start":116},[488,1100,1101],{},"停止VNC服务器：",[14,1103,1104],{},"如果需要停止VNC服务器，可以使用以下命令：",[26,1106,1108],{"className":580,"code":1107,"language":582,"meta":31,"style":31},"vncserver -kill :1\n",[21,1109,1110],{"__ignoreMap":31},[35,1111,1112,1114,1117],{"class":37,"line":38},[35,1113,1051],{"class":589},[35,1115,1116],{"class":58}," -kill",[35,1118,1119],{"class":89}," :1\n",[14,1121,1122],{},"将:1替换为你实际使用的显示编号。",[14,1124,1125],{},[432,1126],{"alt":31,"src":1127},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage346.webp",[14,1129,1130],{},[432,1131],{"alt":31,"src":1132},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage347.webp",[10,1134,1136],{"id":1135},"usb端口设置","USB端口设置",[14,1138,1139],{},[403,1140,1141],{},"首先先配置好权限",[26,1143,1145],{"className":580,"code":1144,"language":582,"meta":31,"style":31},"\n# 将用户权限提高\nsudo usermod -aG dialout $USER\nnewgrp dialout\n\n# 查看下面命令是否输出dialout（若输出才正常）\ngroups\n",[21,1146,1147,1153,1158,1174,1182,1186,1191],{"__ignoreMap":31},[35,1148,1149],{"class":37,"line":38},[35,1150,1152],{"emptyLinePlaceholder":1151},true,"\n",[35,1154,1155],{"class":37,"line":49},[35,1156,1157],{"class":989},"# 将用户权限提高\n",[35,1159,1160,1162,1165,1168,1171],{"class":37,"line":65},[35,1161,915],{"class":589},[35,1163,1164],{"class":89}," usermod",[35,1166,1167],{"class":58}," -aG",[35,1169,1170],{"class":89}," dialout",[35,1172,1173],{"class":45}," $USER\n",[35,1175,1176,1179],{"class":37,"line":73},[35,1177,1178],{"class":589},"newgrp",[35,1180,1181],{"class":89}," dialout\n",[35,1183,1184],{"class":37,"line":81},[35,1185,1152],{"emptyLinePlaceholder":1151},[35,1187,1188],{"class":37,"line":95},[35,1189,1190],{"class":989},"# 查看下面命令是否输出dialout（若输出才正常）\n",[35,1192,1193],{"class":37,"line":103},[35,1194,1195],{"class":589},"groups\n",[14,1197,1198],{},"因为我们插拔USB设备，他的端口号可能会一直变，所以我们要给他的tty起一个固定的别名。",[397,1200,1202],{"id":1201},"根据usb设备绑定端口多个不同设备","根据USB设备绑定端口(多个不同设备)",[14,1204,1205,1208],{},[403,1206,1207],{},"需求："," Ubuntu系统中现接入雷达和智能小车，请为二者绑定端口。",[14,1210,1211,1214],{},[403,1212,1213],{},"实现原理："," 可以通过USB设备本身的“标识”实现端口绑定。",[14,1216,1217],{},[403,1218,1219],{},"流程如下：",[14,1221,1222],{},"（1）.查找设备idVendor和idProduct",[14,1224,1225,1226,1229],{},"接入两个USB设备，在终端调用指令",[21,1227,1228],{},"lsusb","查看显示系统中以及连接到系统的USB设备信息。",[14,1231,1232],{},[432,1233],{"alt":31,"src":1234},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage348.webp",[14,1236,1237,1238,1241],{},"如上图所示，红色方框内数据为USB设备，ID后面的",[21,1239,1240],{},"1a86:7523","分别为USB的idVendor和idProduct（两个参数之间使用”：“分隔）。",[14,1243,1244],{},"另外：可以通过重新插拔比较的方式确定哪些数据对应接入的USB设备。",[14,1246,1247],{},"（2）.编写映射规则",[14,1249,1250,1251,1254],{},"在",[21,1252,1253],{},"\u002Fetc\u002Fudev\u002Frules.d","目录下新建文件xxx.rules（文件名自定义）",[26,1256,1258],{"className":580,"code":1257,"language":582,"meta":31,"style":31},"sudo vim \u002Fetc\u002Fudev\u002Frules.d\u002Fxxx.rules\n",[21,1259,1260],{"__ignoreMap":31},[35,1261,1262,1264,1267],{"class":37,"line":38},[35,1263,915],{"class":589},[35,1265,1266],{"class":89}," vim",[35,1268,1269],{"class":89}," \u002Fetc\u002Fudev\u002Frules.d\u002Fxxx.rules\n",[14,1271,1272],{},"输入如下内容：",[26,1274,1276],{"className":580,"code":1275,"language":582,"meta":31,"style":31},"KERNEL==\"ttyUSB*\", ATTRS{idVendor}==\"10c4\", ATTRS{idProduct}==\"ea60\", MODE:=\"0777\", SYMLINK+=\"mylidar\"\nKERNEL==\"ttyUSB*\", ATTRS{idVendor}==\"1a86\", ATTRS{idProduct}==\"7523\", MODE:=\"0777\", SYMLINK+=\"mycar\"\n",[21,1277,1278,1311],{"__ignoreMap":31},[35,1279,1280,1283,1287,1290,1293,1296,1299,1302,1305,1308],{"class":37,"line":38},[35,1281,1282],{"class":45},"KERNEL",[35,1284,1286],{"class":1285},"szBVR","=",[35,1288,1289],{"class":89},"=\"ttyUSB*\",",[35,1291,1292],{"class":589}," ATTRS",[35,1294,1295],{"class":89},"{idVendor}==",[35,1297,1298],{"class":589},"\"10c4\"",[35,1300,1301],{"class":589},",",[35,1303,1304],{"class":89}," ATTRS{idProduct}==\"ea60\",",[35,1306,1307],{"class":89}," MODE:=\"0777\",",[35,1309,1310],{"class":89}," SYMLINK+=\"mylidar\"\n",[35,1312,1313,1315,1317,1319,1321,1323,1326,1328,1331,1333],{"class":37,"line":49},[35,1314,1282],{"class":45},[35,1316,1286],{"class":1285},[35,1318,1289],{"class":89},[35,1320,1292],{"class":589},[35,1322,1295],{"class":89},[35,1324,1325],{"class":589},"\"1a86\"",[35,1327,1301],{"class":589},[35,1329,1330],{"class":89}," ATTRS{idProduct}==\"7523\",",[35,1332,1307],{"class":89},[35,1334,1335],{"class":89}," SYMLINK+=\"mycar\"\n",[14,1337,1338],{},"代码解释：",[1340,1341,1342,1345,1348,1351],"ul",{},[488,1343,1344],{},"KERNEL是内核固定名称，这里统一是“ttyUSB*”；",[488,1346,1347],{},"MODE是节点权限，通常改为“0777”，表示可读写可运行；",[488,1349,1350],{},"SYMLINK是符号连接，即绑定的别名；",[488,1352,1353],{},"ATTRS是设备厂商的唯一标识，idVendor和idProduct正好组成上面通过lsusb查找到的设备ID。",[14,1355,1356,1357,1361,1364],{},"***小提示：***",[1358,1359,1360],"em",{},"一般的USB设备供应商都会提供类似的脚本文件，对于调用者而言，直接复制该文件到",[21,1362,1363],{},"\u002Fetc\u002Fudev\u002Frule.d",[1358,1365,1366],{},"目录即可。",[1368,1369,1370,1387],"table",{},[1371,1372,1373],"thead",{},[1374,1375,1376,1381,1384],"tr",{},[1377,1378,1380],"th",{"align":1379},"left","设备类型",[1377,1382,1383],{"align":1379},"内核名称示例",[1377,1385,1386],{"align":1379},"说明",[1388,1389,1390,1402,1413,1424,1435,1446],"tbody",{},[1374,1391,1392,1396,1399],{},[1393,1394,1395],"td",{"align":1379},"USB 串口设备",[1393,1397,1398],{"align":1379},"ttyUSB*",[1393,1400,1401],{"align":1379},"USB 转串口设备，如 \u002Fdev\u002FttyUSB0",[1374,1403,1404,1407,1410],{},[1393,1405,1406],{"align":1379},"串口设备",[1393,1408,1409],{"align":1379},"ttyS*",[1393,1411,1412],{"align":1379},"物理串口设备，如 \u002Fdev\u002FttyS0",[1374,1414,1415,1418,1421],{},[1393,1416,1417],{"align":1379},"存储设备",[1393,1419,1420],{"align":1379},"sd*",[1393,1422,1423],{"align":1379},"SCSI 磁盘设备，如 \u002Fdev\u002Fsda",[1374,1425,1426,1429,1432],{},[1393,1427,1428],{"align":1379},"网络设备",[1393,1430,1431],{"align":1379},"eth*",[1393,1433,1434],{"align":1379},"以太网设备，如 \u002Fdev\u002Feth0",[1374,1436,1437,1440,1443],{},[1393,1438,1439],{"align":1379},"输入设备",[1393,1441,1442],{"align":1379},"event*",[1393,1444,1445],{"align":1379},"输入事件设备，如 \u002Fdev\u002Finput\u002Fevent0",[1374,1447,1448,1451,1454],{},[1393,1449,1450],{"align":1379},"蓝牙设备",[1393,1452,1453],{"align":1379},"rfcomm*",[1393,1455,1456],{"align":1379},"蓝牙串口设备，如 \u002Fdev\u002Frfcomm0",[14,1458,1459],{},"（3）.使规则生效",[14,1461,1462],{},"在终端下输入如下指令：",[26,1464,1466],{"className":580,"code":1465,"language":582,"meta":31,"style":31},"\n# Ubuntu用下方命令\nsudo service udev reload\nsudo service udev restart\n\n#Fedora用下方命令\nsudo udevadm control --reload\nsudo udevadm trigger\n",[21,1467,1468,1472,1477,1490,1501,1505,1510,1523],{"__ignoreMap":31},[35,1469,1470],{"class":37,"line":38},[35,1471,1152],{"emptyLinePlaceholder":1151},[35,1473,1474],{"class":37,"line":49},[35,1475,1476],{"class":989},"# Ubuntu用下方命令\n",[35,1478,1479,1481,1484,1487],{"class":37,"line":65},[35,1480,915],{"class":589},[35,1482,1483],{"class":89}," service",[35,1485,1486],{"class":89}," udev",[35,1488,1489],{"class":89}," reload\n",[35,1491,1492,1494,1496,1498],{"class":37,"line":73},[35,1493,915],{"class":589},[35,1495,1483],{"class":89},[35,1497,1486],{"class":89},[35,1499,1500],{"class":89}," restart\n",[35,1502,1503],{"class":37,"line":81},[35,1504,1152],{"emptyLinePlaceholder":1151},[35,1506,1507],{"class":37,"line":95},[35,1508,1509],{"class":989},"#Fedora用下方命令\n",[35,1511,1512,1514,1517,1520],{"class":37,"line":103},[35,1513,915],{"class":589},[35,1515,1516],{"class":89}," udevadm",[35,1518,1519],{"class":89}," control",[35,1521,1522],{"class":58}," --reload\n",[35,1524,1525,1527,1529],{"class":37,"line":116},[35,1526,915],{"class":589},[35,1528,1516],{"class":89},[35,1530,1531],{"class":89}," trigger\n",[14,1533,1534],{},"再重新插拔设备即可。",[14,1536,1537],{},"（4）.测试",[14,1539,1540],{},"终端下输入如下指令",[26,1542,1544],{"className":580,"code":1543,"language":582,"meta":31,"style":31},"ll \u002Fdev | grep ttyUSB\n",[21,1545,1546],{"__ignoreMap":31},[35,1547,1548,1551,1554,1557,1560],{"class":37,"line":38},[35,1549,1550],{"class":589},"ll",[35,1552,1553],{"class":89}," \u002Fdev",[35,1555,1556],{"class":1285}," |",[35,1558,1559],{"class":589}," grep",[35,1561,1562],{"class":89}," ttyUSB\n",[14,1564,1565],{},"运行结果如下：",[14,1567,1568],{},[432,1569],{"alt":31,"src":1570},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage349.webp",[14,1572,1573],{},[432,1574],{"alt":31,"src":1575},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage350.webp",[14,1577,1578,1579,1582],{},"也可以多次插拔USB设备，会发现设备端口",[21,1580,1581],{},"ttyUSBn","中的n编号会变动，但是别名是始终可以指向对应的USB设备的。至此，就可以使用别名来关联所需使用的USB设备了。",[14,1584,1585],{},[403,1586,1587],{},"缺点：",[14,1589,1590],{},"上述实现也存在一定的局限性，当Ubuntu接入两台或多台相同型号的USB设备时，由于设备ID是一样的，该种实现方式只会对其中的一台设备生效，这种情况下，就需要通过第二种策略来实现端口的绑定了。",[397,1592,1594],{"id":1593},"根据主机硬件绑定端口多个相同设备","根据主机硬件绑定端口（多个相同设备)",[14,1596,1597,1599],{},[403,1598,1207],{}," 无人车中现接入一前一后两台相同型号的雷达，请为二者绑定端口。",[14,1601,1602,1604],{},[403,1603,1213],{}," USB设备所连接主机的USB接口也是有其“标识”的，可以通过这个标识实现端口绑定。",[14,1606,1607],{},[403,1608,1219],{},[14,1610,1611],{},"（1）.查看所连接的主机USB接口的KERNELS",[14,1613,1614],{},"调用如下指令查看第一台雷达的USB信息：",[26,1616,1618],{"className":580,"code":1617,"language":582,"meta":31,"style":31},"udevadm info --attribute-walk --name=\u002Fdev\u002FttyUSB0 | grep KERNELS\nudevadm info --attribute-walk --name=\u002Fdev\u002FttyACM0 | grep KERNELS\n",[21,1619,1620,1641],{"__ignoreMap":31},[35,1621,1622,1625,1628,1631,1634,1636,1638],{"class":37,"line":38},[35,1623,1624],{"class":589},"udevadm",[35,1626,1627],{"class":89}," info",[35,1629,1630],{"class":58}," --attribute-walk",[35,1632,1633],{"class":58}," --name=\u002Fdev\u002FttyUSB0",[35,1635,1556],{"class":1285},[35,1637,1559],{"class":589},[35,1639,1640],{"class":89}," KERNELS\n",[35,1642,1643,1645,1647,1649,1652,1654,1656],{"class":37,"line":49},[35,1644,1624],{"class":589},[35,1646,1627],{"class":89},[35,1648,1630],{"class":58},[35,1650,1651],{"class":58}," --name=\u002Fdev\u002FttyACM0",[35,1653,1556],{"class":1285},[35,1655,1559],{"class":589},[35,1657,1640],{"class":89},[14,1659,1660],{},[432,1661],{"alt":31,"src":1662},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage351.webp",[14,1664,1665],{},"调用如下指令查看第二台雷达的USB信息：",[26,1667,1669],{"className":580,"code":1668,"language":582,"meta":31,"style":31},"udevadm info --attribute-walk --name=\u002Fdev\u002FttyUSB1 | grep KERNELS\n",[21,1670,1671],{"__ignoreMap":31},[35,1672,1673,1675,1677,1679,1682,1684,1686],{"class":37,"line":38},[35,1674,1624],{"class":589},[35,1676,1627],{"class":89},[35,1678,1630],{"class":58},[35,1680,1681],{"class":58}," --name=\u002Fdev\u002FttyUSB1",[35,1683,1556],{"class":1285},[35,1685,1559],{"class":589},[35,1687,1640],{"class":89},[14,1689,1690,1691,1694,1695,1698,1699,1702],{},"运行结果相比较不同的KERNELS，第一台雷达端口地址为",[21,1692,1693],{},"KERNELS==1-1.3:1.0","，第二个雷达端口地址为",[21,1696,1697],{},"KERNELS==1-1.4:1.0","。可以使用此数据作为不同端口的“",[403,1700,1701],{},"唯一性标识","”。",[14,1704,1247],{},[14,1706,1250,1707,1709],{},[21,1708,1253],{},"目录下新建文件xxx.rules（文件名自定义），输入如下内容：",[26,1711,1712],{"className":580,"code":1257,"language":582,"meta":31,"style":31},[21,1713,1714],{"__ignoreMap":31},[35,1715,1716,1718,1720],{"class":37,"line":38},[35,1717,915],{"class":589},[35,1719,1266],{"class":89},[35,1721,1269],{"class":89},[26,1723,1725],{"className":580,"code":1724,"language":582,"meta":31,"style":31},"KERNEL==\"ttyUSB*\", KERNELS==\"1-1.3:1.0\", MODE:=\"0777\", SYMLINK+=\"rplidar_front\"\nKERNEL==\"ttyUSB*\", KERNELS==\"1-1.4:1.0\", MODE:=\"0777\", SYMLINK+=\"rplidar_back\"\n",[21,1726,1727,1756],{"__ignoreMap":31},[35,1728,1729,1731,1733,1735,1738,1740,1743,1746,1748,1751,1753],{"class":37,"line":38},[35,1730,1282],{"class":45},[35,1732,1286],{"class":1285},[35,1734,1289],{"class":89},[35,1736,1737],{"class":45}," KERNELS",[35,1739,1286],{"class":1285},[35,1741,1742],{"class":89},"=\"1-1.3:1.0\",",[35,1744,1745],{"class":589}," MODE:",[35,1747,1286],{"class":89},[35,1749,1750],{"class":589},"\"0777\"",[35,1752,1301],{"class":589},[35,1754,1755],{"class":89}," SYMLINK+=\"rplidar_front\"\n",[35,1757,1758,1760,1762,1764,1766,1768,1771,1773,1775,1777,1779],{"class":37,"line":49},[35,1759,1282],{"class":45},[35,1761,1286],{"class":1285},[35,1763,1289],{"class":89},[35,1765,1737],{"class":45},[35,1767,1286],{"class":1285},[35,1769,1770],{"class":89},"=\"1-1.4:1.0\",",[35,1772,1745],{"class":589},[35,1774,1286],{"class":89},[35,1776,1750],{"class":589},[35,1778,1301],{"class":589},[35,1780,1781],{"class":89}," SYMLINK+=\"rplidar_back\"\n",[14,1783,1459],{},[14,1785,1462],{},[26,1787,1788],{"className":580,"code":1465,"language":582,"meta":31,"style":31},[21,1789,1790,1794,1798,1808,1818,1822,1826,1836],{"__ignoreMap":31},[35,1791,1792],{"class":37,"line":38},[35,1793,1152],{"emptyLinePlaceholder":1151},[35,1795,1796],{"class":37,"line":49},[35,1797,1476],{"class":989},[35,1799,1800,1802,1804,1806],{"class":37,"line":65},[35,1801,915],{"class":589},[35,1803,1483],{"class":89},[35,1805,1486],{"class":89},[35,1807,1489],{"class":89},[35,1809,1810,1812,1814,1816],{"class":37,"line":73},[35,1811,915],{"class":589},[35,1813,1483],{"class":89},[35,1815,1486],{"class":89},[35,1817,1500],{"class":89},[35,1819,1820],{"class":37,"line":81},[35,1821,1152],{"emptyLinePlaceholder":1151},[35,1823,1824],{"class":37,"line":95},[35,1825,1509],{"class":989},[35,1827,1828,1830,1832,1834],{"class":37,"line":103},[35,1829,915],{"class":589},[35,1831,1516],{"class":89},[35,1833,1519],{"class":89},[35,1835,1522],{"class":58},[35,1837,1838,1840,1842],{"class":37,"line":116},[35,1839,915],{"class":589},[35,1841,1516],{"class":89},[35,1843,1531],{"class":89},[14,1845,1534],{},[14,1847,1537],{},[14,1849,1850],{},"终端下输入如下指令，运行结果如下：",[26,1852,1853],{"className":580,"code":1543,"language":582,"meta":31,"style":31},[21,1854,1855],{"__ignoreMap":31},[35,1856,1857,1859,1861,1863,1865],{"class":37,"line":38},[35,1858,1550],{"class":589},[35,1860,1553],{"class":89},[35,1862,1556],{"class":1285},[35,1864,1559],{"class":589},[35,1866,1562],{"class":89},[14,1868,1869],{},[432,1870],{"alt":31,"src":1871},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage352.webp",[14,1873,1874],{},"至此，就可以使用别名来关联所需使用的USB设备了。",[14,1876,1877,1879],{},[403,1878,1587],{}," USB设备必须连接在主机的指定端口上，否则，会导致端口绑定失败，或产生逻辑错误。(而且增加新设备可能会导致端口改变)",[397,1881,1882],{"id":1882},"根据其他属性绑定端口",[14,1884,1885],{},"（1）.查看所连接的主机USB接口的信息",[26,1887,1889],{"className":580,"code":1888,"language":582,"meta":31,"style":31},"udevadm info -a -p $(udevadm info -q path -n \u002Fdev\u002FttyACM0)\nudevadm info -a -p $(udevadm info -q path -n \u002Fdev\u002FttyUSB0)\n",[21,1890,1891,1924],{"__ignoreMap":31},[35,1892,1893,1895,1897,1900,1902,1905,1907,1909,1912,1915,1918,1921],{"class":37,"line":38},[35,1894,1624],{"class":589},[35,1896,1627],{"class":89},[35,1898,1899],{"class":58}," -a",[35,1901,965],{"class":58},[35,1903,1904],{"class":45}," $(",[35,1906,1624],{"class":589},[35,1908,1627],{"class":89},[35,1910,1911],{"class":58}," -q",[35,1913,1914],{"class":89}," path",[35,1916,1917],{"class":58}," -n",[35,1919,1920],{"class":89}," \u002Fdev\u002FttyACM0",[35,1922,1923],{"class":45},")\n",[35,1925,1926,1928,1930,1932,1934,1936,1938,1940,1942,1944,1946,1949],{"class":37,"line":49},[35,1927,1624],{"class":589},[35,1929,1627],{"class":89},[35,1931,1899],{"class":58},[35,1933,965],{"class":58},[35,1935,1904],{"class":45},[35,1937,1624],{"class":589},[35,1939,1627],{"class":89},[35,1941,1911],{"class":58},[35,1943,1914],{"class":89},[35,1945,1917],{"class":58},[35,1947,1948],{"class":89}," \u002Fdev\u002FttyUSB0",[35,1950,1923],{"class":45},[14,1952,1953],{},[432,1954],{"alt":31,"src":1955},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage353.webp",[14,1957,1958],{},"这些数据都是不会变的，所以可以拿这些数据来做标识",[14,1960,1247],{},[14,1962,1250,1963,1709],{},[21,1964,1253],{},[26,1966,1967],{"className":580,"code":1257,"language":582,"meta":31,"style":31},[21,1968,1969],{"__ignoreMap":31},[35,1970,1971,1973,1975],{"class":37,"line":38},[35,1972,915],{"class":589},[35,1974,1266],{"class":89},[35,1976,1269],{"class":89},[26,1978,1980],{"className":580,"code":1979,"language":582,"meta":31,"style":31},"KERNEL==\"ttyACM*\", ATTRS{idVendor}==\"1a86\", ATTRS{idProduct}==\"55d4\", ATTRS{serial}==\"0001\", MODE:=\"0777\", SYMLINK+=\"ttyACM_Lidar\"\nKERNEL==\"ttyACM*\", ATTRS{idVendor}==\"1a86\", ATTRS{idProduct}==\"55d4\", ATTRS{serial}==\"0002\", MODE:=\"0777\", SYMLINK+=\"ttyACM_MCU\"\nKERNEL==\"ttyUSB*\", ATTRS{idVendor}==\"1a86\", ATTRS{idProduct}==\"7523\", MODE:=\"0777\", SYMLINK+=\"ttyUSB_IMU\"\n",[21,1981,1982,2010,2036],{"__ignoreMap":31},[35,1983,1984,1986,1988,1991,1993,1995,1997,1999,2002,2005,2007],{"class":37,"line":38},[35,1985,1282],{"class":45},[35,1987,1286],{"class":1285},[35,1989,1990],{"class":89},"=\"ttyACM*\",",[35,1992,1292],{"class":589},[35,1994,1295],{"class":89},[35,1996,1325],{"class":589},[35,1998,1301],{"class":589},[35,2000,2001],{"class":89}," ATTRS{idProduct}==\"55d4\",",[35,2003,2004],{"class":89}," ATTRS{serial}==\"0001\",",[35,2006,1307],{"class":89},[35,2008,2009],{"class":89}," SYMLINK+=\"ttyACM_Lidar\"\n",[35,2011,2012,2014,2016,2018,2020,2022,2024,2026,2028,2031,2033],{"class":37,"line":49},[35,2013,1282],{"class":45},[35,2015,1286],{"class":1285},[35,2017,1990],{"class":89},[35,2019,1292],{"class":589},[35,2021,1295],{"class":89},[35,2023,1325],{"class":589},[35,2025,1301],{"class":589},[35,2027,2001],{"class":89},[35,2029,2030],{"class":89}," ATTRS{serial}==\"0002\",",[35,2032,1307],{"class":89},[35,2034,2035],{"class":89}," SYMLINK+=\"ttyACM_MCU\"\n",[35,2037,2038,2040,2042,2044,2046,2048,2050,2052,2054,2056],{"class":37,"line":65},[35,2039,1282],{"class":45},[35,2041,1286],{"class":1285},[35,2043,1289],{"class":89},[35,2045,1292],{"class":589},[35,2047,1295],{"class":89},[35,2049,1325],{"class":589},[35,2051,1301],{"class":589},[35,2053,1330],{"class":89},[35,2055,1307],{"class":89},[35,2057,2058],{"class":89}," SYMLINK+=\"ttyUSB_IMU\"\n",[14,2060,1459],{},[14,2062,1462],{},[26,2064,2065],{"className":580,"code":1465,"language":582,"meta":31,"style":31},[21,2066,2067,2071,2075,2085,2095,2099,2103,2113],{"__ignoreMap":31},[35,2068,2069],{"class":37,"line":38},[35,2070,1152],{"emptyLinePlaceholder":1151},[35,2072,2073],{"class":37,"line":49},[35,2074,1476],{"class":989},[35,2076,2077,2079,2081,2083],{"class":37,"line":65},[35,2078,915],{"class":589},[35,2080,1483],{"class":89},[35,2082,1486],{"class":89},[35,2084,1489],{"class":89},[35,2086,2087,2089,2091,2093],{"class":37,"line":73},[35,2088,915],{"class":589},[35,2090,1483],{"class":89},[35,2092,1486],{"class":89},[35,2094,1500],{"class":89},[35,2096,2097],{"class":37,"line":81},[35,2098,1152],{"emptyLinePlaceholder":1151},[35,2100,2101],{"class":37,"line":95},[35,2102,1509],{"class":989},[35,2104,2105,2107,2109,2111],{"class":37,"line":103},[35,2106,915],{"class":589},[35,2108,1516],{"class":89},[35,2110,1519],{"class":89},[35,2112,1522],{"class":58},[35,2114,2115,2117,2119],{"class":37,"line":116},[35,2116,915],{"class":589},[35,2118,1516],{"class":89},[35,2120,1531],{"class":89},[14,2122,2123,2124],{},"再重新插拔设备即可，或者 ",[403,2125,2126],{},"直接重启系统。",[14,2128,1537],{},[14,2130,1540,2131,2134],{},[21,2132,2133],{},"ll \u002Fdev | grep ttyUSB","，运行结果如下：",[14,2136,2137],{},[432,2138],{"alt":31,"src":2139},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage354.webp",[14,2141,1874],{},[14,2143,2144,2146],{},[403,2145,1587],{}," 一些设备可能没有串口号等。",[397,2148,2149],{"id":2149},"其他注意事项",[14,2151,2152,2153,2155,2156,2159,2160,2163,2164,2167,2168,2170],{},"并非所有的USB设备端口号都是",[21,2154,1581],{},"的格式，比如Arduino的端口号可能是",[21,2157,2158],{},"ttyACMn","，而对于USB摄像头而言，一台设备则对应两个端口号，分别是",[21,2161,2162],{},"videon","和",[21,2165,2166],{},"video(n+1)","，并且启用摄像头设备一般使用的是",[21,2169,2162],{},"端口，绑定时需要关联的也是该接口。",[14,2172,2173,2174,2177,2178,2181,2182,2184,2185,2188,2189,2192,2193,2196,2197,2196,2200,2196,2203,769],{},"但是无论是外接何种USB设备，也不管采用上述两种方案的哪一种进行端口绑定，其原理都是类似的，只是实现细节不同而已。如果是外接的Arduino设备，那么需要在rules文件中的将",[21,2175,2176],{},"KERNEL==\"ttyUSB*\"","修改为",[21,2179,2180],{},"KERNEL==\"ttyACM*\"","，如果外接的是USB摄像头，那么则需要在rules文件中的将",[21,2183,2176],{},"修改为类似于",[21,2186,2187],{},"KERNEL==\"video[0,2,4,6]\"","的格式，其中",[21,2190,2191],{},"video[0,2,4,6]","表示可以绑定的端口为",[21,2194,2195],{},"video0","或",[21,2198,2199],{},"video2",[21,2201,2202],{},"video4",[21,2204,2205],{},"video6",[10,2207,2209],{"id":2208},"linux分区gui工具","Linux分区Gui工具",[26,2211,2213],{"className":508,"code":2212,"language":510,"meta":511,"style":31},"sudo apt install gparted\nsudo dnf install gparted\n",[21,2214,2215,2220],{"__ignoreMap":31},[35,2216,2217],{"class":37,"line":38},[35,2218,2219],{},"sudo apt install gparted\n",[35,2221,2222],{"class":37,"line":49},[35,2223,2224],{},"sudo dnf install gparted\n",[10,2226,2227],{"id":2227},"挂载内网网页",[14,2229,2230],{},"可以把本地的网页挂载到路由器端，或者同内网段其他设备上，甚至可以挂载在本地。",[14,2232,2233],{},"下面以安卓设备为例子，由于安卓设备暂时不能直接打开html,所以我们可以把html挂载到本地服务器，再通过浏览器查看。",[14,2235,2236],{},"由于安卓系统基于Linux内核，所以我们可以下载一个叫termux的app来敲一些Linux命令：",[14,2238,2239],{},[2240,2241,2242],"a",{"href":2242,"rel":2243},"https:\u002F\u002Fgithub.com\u002Ftermux\u002Ftermux-app",[2244],"nofollow",[14,2246,2247],{},"首先打开app后，先更新软件缓存：",[26,2249,2251],{"className":580,"code":2250,"language":582,"meta":31,"style":31},"pkg update\n",[21,2252,2253],{"__ignoreMap":31},[35,2254,2255,2258],{"class":37,"line":38},[35,2256,2257],{"class":589},"pkg",[35,2259,2260],{"class":89}," update\n",[14,2262,2263],{},"然后换源",[26,2265,2267],{"className":580,"code":2266,"language":582,"meta":31,"style":31},"nano $PREFIX\u002Fetc\u002Fapt\u002Fsources.list\n",[21,2268,2269],{"__ignoreMap":31},[35,2270,2271,2273,2276],{"class":37,"line":38},[35,2272,973],{"class":589},[35,2274,2275],{"class":45}," $PREFIX",[35,2277,2278],{"class":89},"\u002Fetc\u002Fapt\u002Fsources.list\n",[14,2280,2281],{},"将该文件内容替换为下面：",[26,2283,2285],{"className":580,"code":2284,"language":582,"meta":31,"style":31},"deb https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Ftermux\u002Ftermux-packages-24 stable main\n",[21,2286,2287],{"__ignoreMap":31},[35,2288,2289,2292,2295,2298],{"class":37,"line":38},[35,2290,2291],{"class":589},"deb",[35,2293,2294],{"class":89}," https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Ftermux\u002Ftermux-packages-24",[35,2296,2297],{"class":89}," stable",[35,2299,2300],{"class":89}," main\n",[1340,2302,2303,2330],{},[488,2304,2305,2306,2308,2309],{},"如果你使用的是",[21,2307,973],{},"编辑器：",[1340,2310,2311,2318,2324],{},[488,2312,2313,2314,2317],{},"按 ",[21,2315,2316],{},"Ctrl+O"," 保存文件。",[488,2319,2313,2320,2323],{},[21,2321,2322],{},"Enter"," 确认文件名。",[488,2325,2313,2326,2329],{},[21,2327,2328],{},"Ctrl+X"," 退出编辑器。",[488,2331,2305,2332,2308,2335],{},[21,2333,2334],{},"vim",[1340,2336,2337,2343],{},[488,2338,2313,2339,2342],{},[21,2340,2341],{},"Esc"," 退出编辑模式。",[488,2344,2345,2346,2349],{},"输入 ",[21,2347,2348],{},":wq"," 保存并退出。",[14,2351,2352],{},"接下来重新更新软件源：",[26,2354,2356],{"className":580,"code":2355,"language":582,"meta":31,"style":31},"pkg update && pkg upgrade\n",[21,2357,2358],{"__ignoreMap":31},[35,2359,2360,2362,2365,2368,2370],{"class":37,"line":38},[35,2361,2257],{"class":589},[35,2363,2364],{"class":89}," update",[35,2366,2367],{"class":45}," && ",[35,2369,2257],{"class":589},[35,2371,2372],{"class":89}," upgrade\n",[14,2374,2375],{},"安装python：",[26,2377,2379],{"className":580,"code":2378,"language":582,"meta":31,"style":31},"pkg install python3\n",[21,2380,2381],{"__ignoreMap":31},[35,2382,2383,2385,2387],{"class":37,"line":38},[35,2384,2257],{"class":589},[35,2386,921],{"class":89},[35,2388,2389],{"class":89}," python3\n",[14,2391,2392,2395],{},[403,2393,2394],{},"通过Termux访问设备存储"," ：",[14,2397,2398],{},"如果文件在安卓设备上，可以使用Termux的文件管理器访问设备的存储：",[26,2400,2402],{"className":580,"code":2401,"language":582,"meta":31,"style":31},"termux-setup-storage\n",[21,2403,2404],{"__ignoreMap":31},[35,2405,2406],{"class":37,"line":38},[35,2407,2401],{"class":589},[485,2409,2410],{},[488,2411,2412,2395,2415],{},[403,2413,2414],{},"进入HTML文件所在的目录",[485,2416,2417],{},[488,2418,2419,2420,2423],{},"使用",[21,2421,2422],{},"cd","命令进入HTML文件所在的目录：",[26,2425,2427],{"className":580,"code":2426,"language":582,"meta":31,"style":31},"cd ~\u002Fyour_html_folder\n",[21,2428,2429],{"__ignoreMap":31},[35,2430,2431,2433],{"class":37,"line":38},[35,2432,2422],{"class":58},[35,2434,2435],{"class":89}," ~\u002Fyour_html_folder\n",[485,2437,2438],{"start":49},[488,2439,2440,2395,2443,2448,2467],{},[403,2441,2442],{},"启动Python HTTP服务器",[485,2444,2445],{},[488,2446,2447],{},"运行以下命令启动一个简单的HTTP服务器：",[26,2449,2451],{"className":580,"code":2450,"language":582,"meta":31,"style":31},"python3 -m http.server 8000\n",[21,2452,2453],{"__ignoreMap":31},[35,2454,2455,2458,2461,2464],{"class":37,"line":38},[35,2456,2457],{"class":589},"python3",[35,2459,2460],{"class":58}," -m",[35,2462,2463],{"class":89}," http.server",[35,2465,2466],{"class":58}," 8000\n",[485,2468,2469],{"start":65},[488,2470,2471,2472,2475],{},"这会在端口",[21,2473,2474],{},"8000","上启动一个Web服务器。",[1340,2477,2478],{},[488,2479,2480],{},"启动服务器后，Termux会显示日志信息，例如：",[26,2482,2484],{"className":580,"code":2483,"language":582,"meta":31,"style":31},"Serving HTTP on 0.0.0.0 port 8000 (http:\u002F\u002F0.0.0.0:8000\u002F) ...\n",[21,2485,2486],{"__ignoreMap":31},[35,2487,2488,2491,2494,2497,2500,2503,2506],{"class":37,"line":38},[35,2489,2490],{"class":589},"Serving",[35,2492,2493],{"class":89}," HTTP",[35,2495,2496],{"class":89}," on",[35,2498,2499],{"class":58}," 0.0.0.0",[35,2501,2502],{"class":89}," port",[35,2504,2505],{"class":58}," 8000",[35,2507,2508],{"class":45}," (http:\u002F\u002F0.0.0.0:8000\u002F) ...\n",[1340,2510,2511],{},[488,2512,2513],{},"这表示服务器已成功启动。",[14,2515,2516],{},[403,2517,2518],{},"在浏览器中访问HTML文件",[485,2520,2521],{},[488,2522,2523,2395,2526,2531,2540],{},[403,2524,2525],{},"在同一设备上访问",[485,2527,2528],{},[488,2529,2530],{},"打开安卓设备上的浏览器（如Chrome），输入以下地址：",[26,2532,2534],{"className":580,"code":2533,"language":582,"meta":31,"style":31},"http:\u002F\u002Flocalhost:8000\n",[21,2535,2536],{"__ignoreMap":31},[35,2537,2538],{"class":37,"line":38},[35,2539,2533],{"class":589},[485,2541,2542],{"start":65},[488,2543,2544,2545,2548],{},"如果HTML文件中有",[21,2546,2547],{},"index.html","，它会自动加载；否则，你需要手动点击文件链接。",[10,2550,2552],{"id":2551},"rustdesk","RustDesk",[397,2554,2556],{"id":2555},"rustdesk无人值守远程控制","RustDesk无人值守远程控制",[14,2558,2559],{},"目前rustdesk还没办法进行无人值守在wayland下,所以我们需要把登陆密码,锁屏和休眠待机全部关掉.",[2561,2562,2564],"h5",{"id":2563},"设置-kde6-自动登录","设置 KDE6 自动登录",[485,2566,2567],{},[488,2568,2569],{},"可以先查自己的sddm类型",[26,2571,2573],{"className":580,"code":2572,"language":582,"meta":31,"style":31},"ls \u002Fusr\u002Fshare\u002Fxsessions\u002F\n",[21,2574,2575],{"__ignoreMap":31},[35,2576,2577,2580],{"class":37,"line":38},[35,2578,2579],{"class":589},"ls",[35,2581,2582],{"class":89}," \u002Fusr\u002Fshare\u002Fxsessions\u002F\n",[26,2584,2586],{"className":580,"code":2585,"language":582,"meta":31,"style":31},"ls \u002Fusr\u002Fshare\u002Fwayland-sessions\u002F\n",[21,2587,2588],{"__ignoreMap":31},[35,2589,2590,2592],{"class":37,"line":38},[35,2591,2579],{"class":589},[35,2593,2594],{"class":89}," \u002Fusr\u002Fshare\u002Fwayland-sessions\u002F\n",[14,2596,2597],{},"看哪个会输出东西,输出东西的文件夹就是你拥有的sddm,比如xsessions输出内容的话,那就是x11的sddm,如果wayland-sessions输出内容的话你就是wayland的sddm.",[485,2599,2600],{"start":49},[488,2601,2602],{},"编辑 SDDM 配置：",[26,2604,2606],{"className":580,"code":2605,"language":582,"meta":31,"style":31},"sudo nano \u002Fetc\u002Fsddm.conf\n",[21,2607,2608],{"__ignoreMap":31},[35,2609,2610,2612,2615],{"class":37,"line":38},[35,2611,915],{"class":589},[35,2613,2614],{"class":89}," nano",[35,2616,2617],{"class":89}," \u002Fetc\u002Fsddm.conf\n",[14,2619,2620,2621,2624],{},"在文件最上面有个",[35,2622,2623],{},"Autologin",",在这个底下加入下面的内容：",[26,2626,2628],{"className":580,"code":2627,"language":582,"meta":31,"style":31},"[Autologin]\nUser=你的用户名\nSession=plasma.desktop   # 或 plasma.desktop（X11），方案一可用 Wayland\n",[21,2629,2630,2635,2645],{"__ignoreMap":31},[35,2631,2632],{"class":37,"line":38},[35,2633,2634],{"class":45},"[Autologin]\n",[35,2636,2637,2640,2642],{"class":37,"line":49},[35,2638,2639],{"class":45},"User",[35,2641,1286],{"class":1285},[35,2643,2644],{"class":89},"你的用户名\n",[35,2646,2647,2650,2652,2655],{"class":37,"line":65},[35,2648,2649],{"class":45},"Session",[35,2651,1286],{"class":1285},[35,2653,2654],{"class":89},"plasma.desktop",[35,2656,2657],{"class":989},"   # 或 plasma.desktop（X11），方案一可用 Wayland\n",[485,2659,2660],{"start":65},[488,2661,2662],{},"保存退出后重启 SDDM：",[26,2664,2666],{"className":580,"code":2665,"language":582,"meta":31,"style":31},"sudo systemctl restart sddm\n",[21,2667,2668],{"__ignoreMap":31},[35,2669,2670,2672,2675,2678],{"class":37,"line":38},[35,2671,915],{"class":589},[35,2673,2674],{"class":89}," systemctl",[35,2676,2677],{"class":89}," restart",[35,2679,2680],{"class":89}," sddm\n",[14,2682,2683],{},"✅ 开机后自动进入桌面，无需输入密码",[2561,2685,2687],{"id":2686},"关闭锁屏在-kde6-系统设置里","关闭锁屏在 KDE6 系统设置里：",[14,2689,2690],{},"打开 系统设置 → 屏幕锁定(Screen Locking)\n关闭自动锁定\n关闭屏幕关闭 \u002F 屏幕保护锁定\n这样 RustDesk 可以开机后直接控制桌面，不会被锁屏阻挡",[2561,2692,2694],{"id":2693},"关闭休眠系统设置-电源管理power-managerment","关闭休眠系统设置 → 电源管理(Power Managerment)",[14,2696,2697],{},"禁用“休眠”或“自动挂起”\n保证电脑开机一直在线，RustDesk 可随时远控\n如果必须休眠，可在 BIOS 设置里禁用休眠，保证开机即联网",[397,2699,2701],{"id":2700},"rustdesk自建服务器","RustDesk自建服务器",[2561,2703,2704],{"id":2704},"在服务器端安装",[2706,2707,2708],"h6",{"id":2708},"命令行方式",[485,2710,2711],{},[488,2712,2713,2714],{},"打开官网:",[2240,2715,2716],{"href":2716,"rel":2717},"https:\u002F\u002Frustdesk.com\u002Fdocs\u002Fzh-cn\u002Fself-host\u002F",[2244],[14,2719,2720],{},[432,2721],{"alt":2722,"src":2723},"alt text","https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768144998052.webp",[485,2725,2726],{"start":49},[488,2727,2728],{},"用ssh访问你需要安装RustDesk的服务器",[26,2730,2732],{"className":580,"code":2731,"language":582,"meta":31,"style":31},"ssh tungchiahui@10.0.0.4\n",[21,2733,2734],{"__ignoreMap":31},[35,2735,2736,2738],{"class":37,"line":38},[35,2737,590],{"class":589},[35,2739,2740],{"class":89}," tungchiahui@10.0.0.4\n",[14,2742,2743],{},[432,2744],{"alt":2722,"src":2745},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768145500558.webp",[485,2747,2748],{"start":65},[488,2749,2750],{},"使用方法二的命令",[14,2752,2753],{},[432,2754],{"alt":2722,"src":2755},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768145605588.webp",[26,2757,2759],{"className":580,"code":2758,"language":582,"meta":31,"style":31},"wget https:\u002F\u002Fraw.githubusercontent.com\u002Ftechahold\u002Frustdeskinstall\u002Fmaster\u002Finstall.sh\nchmod +x install.sh\n.\u002Finstall.sh\n",[21,2760,2761,2769,2778],{"__ignoreMap":31},[35,2762,2763,2766],{"class":37,"line":38},[35,2764,2765],{"class":589},"wget",[35,2767,2768],{"class":89}," https:\u002F\u002Fraw.githubusercontent.com\u002Ftechahold\u002Frustdeskinstall\u002Fmaster\u002Finstall.sh\n",[35,2770,2771,2773,2775],{"class":37,"line":49},[35,2772,1031],{"class":589},[35,2774,1034],{"class":89},[35,2776,2777],{"class":89}," install.sh\n",[35,2779,2780],{"class":37,"line":65},[35,2781,2782],{"class":589},".\u002Finstall.sh\n",[14,2784,2785],{},".\u002Finstall.sh的设置看下一节",[485,2787,2788],{"start":73},[488,2789,2790],{},"配置与查看KEY",[14,2792,2793,2794,2797,2798,2801],{},"这里如果你是想直接用公网ip则选择",[21,2795,2796],{},"1)IP",",如果你是DDNS等用域名绑定了IP地址,则选择",[21,2799,2800],{},"2)",".",[14,2803,2804],{},[432,2805],{"alt":2722,"src":2806},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768148704646.webp",[14,2808,2809,2810],{},"这个选",[21,2811,2812],{},"2)No",[14,2814,2815],{},[432,2816],{"alt":2722,"src":2817},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768148806049.webp",[14,2819,2820],{},"这个是KEY,要复制下来,等后面软件配置的时候要用.",[14,2822,2823],{},[432,2824],{"alt":2722,"src":2825},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768148866392.webp",[485,2827,2828],{"start":81},[488,2829,2830,2831,2836,2852,2830,2855,2905,2910,2946,2830,2948],{},"配置防火墙",[485,2832,2833],{},[488,2834,2835],{},"如果你是Debian系\n安装防火墙",[26,2837,2839],{"className":580,"code":2838,"language":582,"meta":31,"style":31},"sudo apt install ufw\n",[21,2840,2841],{"__ignoreMap":31},[35,2842,2843,2845,2847,2849],{"class":37,"line":38},[35,2844,915],{"class":589},[35,2846,918],{"class":89},[35,2848,921],{"class":89},[35,2850,2851],{"class":89}," ufw\n",[2853,2854],"br",{},[26,2856,2858],{"className":580,"code":2857,"language":582,"meta":31,"style":31},"sudo ufw allow 22\n\nufw allow 21114:21119\u002Ftcp\nufw allow 21116\u002Fudp\nsudo ufw enable\n",[21,2859,2860,2873,2877,2887,2896],{"__ignoreMap":31},[35,2861,2862,2864,2867,2870],{"class":37,"line":38},[35,2863,915],{"class":589},[35,2865,2866],{"class":89}," ufw",[35,2868,2869],{"class":89}," allow",[35,2871,2872],{"class":58}," 22\n",[35,2874,2875],{"class":37,"line":49},[35,2876,1152],{"emptyLinePlaceholder":1151},[35,2878,2879,2882,2884],{"class":37,"line":65},[35,2880,2881],{"class":589},"ufw",[35,2883,2869],{"class":89},[35,2885,2886],{"class":89}," 21114:21119\u002Ftcp\n",[35,2888,2889,2891,2893],{"class":37,"line":73},[35,2890,2881],{"class":589},[35,2892,2869],{"class":89},[35,2894,2895],{"class":89}," 21116\u002Fudp\n",[35,2897,2898,2900,2902],{"class":37,"line":81},[35,2899,915],{"class":589},[35,2901,2866],{"class":89},[35,2903,2904],{"class":89}," enable\n",[485,2906,2907],{"start":49},[488,2908,2909],{},"如果你是RHEL系\n安装防火墙",[26,2911,2913],{"className":580,"code":2912,"language":582,"meta":31,"style":31},"# 如果你是RHEL系\nsudo dnf install firewalld\nsudo systemctl enable --now firewalld\n",[21,2914,2915,2920,2932],{"__ignoreMap":31},[35,2916,2917],{"class":37,"line":38},[35,2918,2919],{"class":989},"# 如果你是RHEL系\n",[35,2921,2922,2924,2927,2929],{"class":37,"line":49},[35,2923,915],{"class":589},[35,2925,2926],{"class":89}," dnf",[35,2928,921],{"class":89},[35,2930,2931],{"class":89}," firewalld\n",[35,2933,2934,2936,2938,2941,2944],{"class":37,"line":65},[35,2935,915],{"class":589},[35,2937,2674],{"class":89},[35,2939,2940],{"class":89}," enable",[35,2942,2943],{"class":58}," --now",[35,2945,2931],{"class":89},[2853,2947],{},[26,2949,2951],{"className":580,"code":2950,"language":582,"meta":31,"style":31},"sudo firewall-cmd --add-port=22\u002Ftcp --permanent\nsudo firewall-cmd --reload\n\nsudo firewall-cmd --add-port=21114-21119\u002Ftcp --permanent\nsudo firewall-cmd --reload\n\nsudo firewall-cmd --add-port=21116\u002Fudp --permanent\nsudo firewall-cmd --reload\n\nsudo systemctl enable --now firewalld\n",[21,2952,2953,2966,2974,2978,2989,2997,3001,3012,3020,3024],{"__ignoreMap":31},[35,2954,2955,2957,2960,2963],{"class":37,"line":38},[35,2956,915],{"class":589},[35,2958,2959],{"class":89}," firewall-cmd",[35,2961,2962],{"class":58}," --add-port=22\u002Ftcp",[35,2964,2965],{"class":58}," --permanent\n",[35,2967,2968,2970,2972],{"class":37,"line":49},[35,2969,915],{"class":589},[35,2971,2959],{"class":89},[35,2973,1522],{"class":58},[35,2975,2976],{"class":37,"line":65},[35,2977,1152],{"emptyLinePlaceholder":1151},[35,2979,2980,2982,2984,2987],{"class":37,"line":73},[35,2981,915],{"class":589},[35,2983,2959],{"class":89},[35,2985,2986],{"class":58}," --add-port=21114-21119\u002Ftcp",[35,2988,2965],{"class":58},[35,2990,2991,2993,2995],{"class":37,"line":81},[35,2992,915],{"class":589},[35,2994,2959],{"class":89},[35,2996,1522],{"class":58},[35,2998,2999],{"class":37,"line":95},[35,3000,1152],{"emptyLinePlaceholder":1151},[35,3002,3003,3005,3007,3010],{"class":37,"line":103},[35,3004,915],{"class":589},[35,3006,2959],{"class":89},[35,3008,3009],{"class":58}," --add-port=21116\u002Fudp",[35,3011,2965],{"class":58},[35,3013,3014,3016,3018],{"class":37,"line":116},[35,3015,915],{"class":589},[35,3017,2959],{"class":89},[35,3019,1522],{"class":58},[35,3021,3022],{"class":37,"line":129},[35,3023,1152],{"emptyLinePlaceholder":1151},[35,3025,3026,3028,3030,3032,3034],{"class":37,"line":141},[35,3027,915],{"class":589},[35,3029,2674],{"class":89},[35,3031,2940],{"class":89},[35,3033,2943],{"class":58},[35,3035,2931],{"class":89},[2706,3037,3039],{"id":3038},"_1panel方式","1Panel方式",[485,3041,3042],{},[488,3043,3044],{},"在面板里搜RustDesk并安装",[14,3046,3047],{},[432,3048],{"alt":2722,"src":3049},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768146100467.webp",[485,3051,3052],{"start":49},[488,3053,2830],{},[14,3055,3056],{},[432,3057],{"alt":2722,"src":3058},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768146828373.webp",[14,3060,3061,3062,3065,3068],{},"添加几个端口\n",[432,3063],{"alt":2722,"src":3064},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768146848849.webp",[432,3066],{"alt":2722,"src":3067},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768146858053.webp",[432,3069],{"alt":2722,"src":3070},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768146876612.webp",[485,3072,3073],{"start":65},[488,3074,3075,3076],{},"查看KEY\n",[432,3077],{"alt":2722,"src":3078},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768146996637.webp",[14,3080,3081],{},"复制KEY",[14,3083,3084],{},[432,3085],{"alt":2722,"src":3086},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768147034654.webp",[2561,3088,3090],{"id":3089},"自建服务器后配置rustdesk软件","自建服务器后配置RustDesk软件",[485,3092,3093],{},[488,3094,3095],{},"PC端",[14,3097,3098],{},[432,3099],{"alt":2722,"src":3100},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768147115389.webp",[14,3102,3103],{},[432,3104],{"alt":2722,"src":3105},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768147204480.webp",[14,3107,3108,3109],{},"出现就绪就是配置成功了\n",[432,3110],{"alt":2722,"src":3111},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768147547538.webp",[485,3113,3114],{"start":49},[488,3115,3116],{},"移动端",[14,3118,3119],{},[432,3120],{"alt":2722,"src":3121},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768149138253.webp",[14,3123,3124],{},[432,3125],{"alt":2722,"src":3126},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768149199158.webp",[2706,3128,3129],{"id":3129},"注意的问题",[14,3131,3132],{},"如果你是家庭的内网服务器,则需要让路由器也放行对应端口",[14,3134,3135,3136],{},"找到openwrt防火墙设置,点击添加\n",[432,3137],{"alt":2722,"src":3138},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768148357743.webp",[14,3140,3141],{},[432,3142],{"alt":2722,"src":3143},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768148378543.webp",[14,3145,3146],{},[432,3147],{"alt":2722,"src":3148},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768148398594.webp",[14,3150,3151],{},"这样才可以让你的服务器端口被真正成功放行.",[3153,3154,3155],"style",{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":31,"searchDepth":49,"depth":49,"links":3157},[3158,3159,3160,3161,3162,3163,3164],{"id":12,"depth":65,"text":12},{"id":394,"depth":65,"text":395},{"id":891,"depth":65,"text":891},{"id":1135,"depth":65,"text":1136},{"id":2208,"depth":65,"text":2209},{"id":2227,"depth":65,"text":2227},{"id":2551,"depth":65,"text":2552},"9",9000000,"2024-03-30","2024-03-30-linux-jiao-cheng","\u002Fwiki\u002F2024-03-30-linux-jiao-cheng","Linux教程","md",false,{},"\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002Fch9-qi-ta-cao-zuo",{"title":5,"description":31},"wiki\u002F2024-03-30-Linux教程\u002Fch9-其他操作","-aD9qEp9gK6yo8kfEwK4H6c1blFC13UbJMwEf-OHjXo",[3179,3185,3190,3196,3202,3208,3214,3220,3226,3227],{"path":3180,"stem":3181,"title":3182,"date":3167,"chapter":3183,"chapterSort":3184,"docKey":3168,"docRoot":3169,"docTitle":3170,"isWikiDoc":1151,"isWikiIndex":3172},"\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002Fch1-fa-xing-ban-tui-jian","wiki\u002F2024-03-30-Linux教程\u002Fch1-发行版推荐","发行版推荐","1",1000000,{"path":3186,"stem":3187,"title":3188,"date":3167,"chapter":59,"chapterSort":3189,"docKey":3168,"docRoot":3169,"docTitle":3170,"isWikiDoc":1151,"isWikiIndex":3172},"\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002Fch2-linux-zhuang-ji-jiao-cheng","wiki\u002F2024-03-30-Linux教程\u002Fch2-Linux装机教程","Linux装机教程",2000000,{"path":3191,"stem":3192,"title":3193,"date":3167,"chapter":3194,"chapterSort":3195,"docKey":3168,"docRoot":3169,"docTitle":3170,"isWikiDoc":1151,"isWikiIndex":3172},"\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002Fch3-an-zhuang-bi-bei-pei-zhi","wiki\u002F2024-03-30-Linux教程\u002Fch3-安装必备配置","安装必备配置","3",3000000,{"path":3197,"stem":3198,"title":3199,"date":3167,"chapter":3200,"chapterSort":3201,"docKey":3168,"docRoot":3169,"docTitle":3170,"isWikiDoc":1151,"isWikiIndex":3172},"\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002Fch4-ming-ling-jiao-cheng-chang-qi-ji-lei","wiki\u002F2024-03-30-Linux教程\u002Fch4-命令教程(长期积累)","命令教程(长期积累)","4",4000000,{"path":3203,"stem":3204,"title":3205,"date":3167,"chapter":3206,"chapterSort":3207,"docKey":3168,"docRoot":3169,"docTitle":3170,"isWikiDoc":1151,"isWikiIndex":3172},"\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002Fch5-ge-zhong-huan-jing-pei-zhi","wiki\u002F2024-03-30-Linux教程\u002Fch5-各种环境配置","各种环境配置","5",5000000,{"path":3209,"stem":3210,"title":3211,"date":3167,"chapter":3212,"chapterSort":3213,"docKey":3168,"docRoot":3169,"docTitle":3170,"isWikiDoc":1151,"isWikiIndex":3172},"\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002Fch6-qi-ta-ke-xuan-pei-zhi","wiki\u002F2024-03-30-Linux教程\u002Fch6-其他可选配置","其他可选配置","6",6000000,{"path":3215,"stem":3216,"title":3217,"date":3167,"chapter":3218,"chapterSort":3219,"docKey":3168,"docRoot":3169,"docTitle":3170,"isWikiDoc":1151,"isWikiIndex":3172},"\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002Fch7-qemu-kvm-xu-ni-ji","wiki\u002F2024-03-30-Linux教程\u002Fch7-QEMU-KVM虚拟机","QEMU-KVM虚拟机","7",7000000,{"path":3221,"stem":3222,"title":3223,"date":3167,"chapter":3224,"chapterSort":3225,"docKey":3168,"docRoot":3169,"docTitle":3170,"isWikiDoc":1151,"isWikiIndex":3172},"\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002Fch8-tuo-zhan-gong-neng","wiki\u002F2024-03-30-Linux教程\u002Fch8-拓展功能","拓展功能","8",8000000,{"path":3174,"stem":3176,"title":5,"date":3167,"chapter":3165,"chapterSort":3166,"docKey":3168,"docRoot":3169,"docTitle":3170,"isWikiDoc":1151,"isWikiIndex":3172},{"path":3169,"stem":3228,"title":3170,"date":3167,"chapter":3229,"chapterSort":3230,"docKey":3168,"docRoot":3169,"docTitle":3170,"isWikiDoc":1151,"isWikiIndex":1151},"wiki\u002F2024-03-30-Linux教程\u002Findex",null,0,1778666544370]