构建基于Raspberry Pi的RDP瘦客户端

随着Raspberry Pi等微型PC以及类似克隆的日益普及,在企业的IT基础架构,智能家居/别墅/车库和其他应用中使用它们的案例很多。

方便且理想的情况之一是将RPi用作通过RDP连接到基于Windows的系统的瘦客户端。

如果您对如何在Raspberry Pi的基础上设置这样的位置感兴趣,并且以“设置后忘记”的方式感兴趣-欢迎来到猫。 有一个完全懒惰的现成图像(请参阅第6.B节)。

图片引起关注


具体来说,根据我的经验(会计/管理自动化专家),我经常不得不组织工作场所,其唯一目的是访问程序(大部分为黄色),办公套件,Internet和邮件。 有时-使用闪存驱动器。 同时,服务器已经在企业中。

同时,要求该站低噪声,紧凑和可靠。 或者说实话,便宜。 尤其是在有关零售的问题上,应将所有内容都“钉牢”。

同时,在过去,许多解决方案都以专门的“铁”瘦客户机形式进行了尝试,但是由于多种原因,结果却使他们感到不舒服。 在某个地方,需要执行一些特定的相关任务,例如将打印机转发到服务器无法处理的任务。 在某个地方,表格慢慢出现,这使用户发疯。 瘦客户机仅在某个地方工作过,而无法理解为什么。 反复无常的网络负载无法正常工作,或者未通过DHCP传输参数。

因此,以某种自然的方式,一切都得出了这样的结论:购买垃圾上网本并安装一套最少的软件比猜测带有晦涩铁皮的游戏要容易得多,而且要自费购买,因为事先不知道什么地方和什么地方不起作用,但可以肯定的是,一切都应该没问题,并且不会花费太多时间。

这篇文章的相关性太晚了。 如果返回相同的黄色程序,则该平台近年来已经发展起来,拥有自己的瘦客户机,并且在远程桌面模式下部署的相关性也有所下降。

但是,还有许多其他任务适合通过RDP连接的安静可靠的工作站。 近年来,微型PC的价格已经跃升,标准计算机和Nettop的成本已经上涨(构建硬件,解决方案花费了一个小时的硬件成本,一个小时的专业工作以及Windows Server的CAL / TCAL许可证)。

问题陈述


因此,在Raspberry Pi的基础上,我们需要将瘦RDP客户端(“钉子”)部署到特定服务器,并在出现故障的情况下提供重新连接。

用户与设备本身的任何交互都应排除在外。 因此,没有本地桌面和控制台命令。 仅在RDP会话中输入密码。

另外,-组织自动安装并选择可移动的USB驱动器。

鉴于:

  • 纯树莓派3 B型1 Gb或4 B型1 Gb
  • 5v 2A电源适配器,
  • HDMI电缆
  • 带HDMI的适配器连接到显示器(如果显示器没有内置的HDMI端口),
  • 以太网电缆(或存在WiFi网络),
  • 具有8 GB或更大容量的MicroSD存储卡(客观上4 GB足够,但是在我看来,您只能在博物馆购买4 GB的存储卡)。
  • 显示器,键盘,Raspberry鼠标。

在安装时-一台装有Windows或Linux的计算机(笔记本电脑),一个microSD卡适配器。

假定读者具有管理Linux系统的基本技能,并且“创建和编辑文件,将本文中的文本复制到其中”或“通过SSH连接”这一问题不会造成困难。 但是,对于那些可能没有专门与Raspbian接触的人,有时我会让自己更深入。

通用逻辑:配置基本系统,安装RDP客户端,配置自动登录,测试,修复问题。

它还将描述如何将完成的程序集克隆到另一个Raspberry。

软件布局本身并不复杂,大约在9年前就以一种或另一种形式诞生了-就像我现在记得的那样,我是在Debian Etch的领导下完成的。 从那时起,它在软件和硬件版本之间进行了一些更改,现在是时候将其移植到Raspberry。

计划的时间消耗约为30分钟。

1.设置基本系统


1.1下载系统镜像


我们将选择Raspbian作为系统。

在撰写本文时, 可以在这里完成 。 当前版本是Buster。

选择基于Debian Buster的最小图像。



下载ZIP档案,从中获取唯一的.img文件。



1.2将其写入闪存卡


a)在Windows下

官方网站下载Rufus程序。 便携式版本就足够了。

运行程序,选择SD卡,然后将图像从1.1节中的存档中拉出。



按下“开始”按钮,确认SD卡上的数据已销毁,等待过程完成(大约5分钟)。

安全取出卡。

b)在Linux下

运行命令:

# dd if=2019-09-26-raspbian-buster-lite.img of=/dev/< SD-> bs=4M 

等待过程完成,取出卡。

1.3将系统部署到RPI


我们将卡重新排列到目标设备。 我们将微型PC与显示器,键盘,鼠标连接起来并为其供电。

一段时间后,无需询问其他问题,小型PC将重新启动到新部署的系统中,并邀请您输入登录名和密码。
默认情况下,这是pi:树莓派。



1.4登录并更改密码


 # passwd pi 



 $ sudo passwd pi 

(我故意以root用户身份为用户pi运行passwd,以使Raspbian不会困扰我们密码的安全性要求,但接受并接受)

除非您显式设置密码,否则您不能直接以root用户身份登录。 一般来说,这还不错。 然后,必须使用sudo prefix命令从用户pi执行必须在超级用户下执行的所有命令。 就像在Ubuntu中一样。

例如(一个著名的笑话,不要跑!

 $ sudo rm -rf --no-preserve-root 

但是,由于我在病理上很懒,因此,登录到Raspbian或在同一Ubuntu上,我输入:

 $ sudo bash 

我收到邀请函,已经具有提升的权限。 所以我工作。
严格来说,这样做并不好,但是在系统的初始设置阶段可以节省大量时间。

在下文中,如果以上命令以#开头,则必须在超级用户下执行它们。 如果带有$,则位于用户下方(通常在该位置下方显示)。

2.“至少”安装必要的软件,测试连接


2.1配置网络


为此,请运行以下命令来运行管理实用程序:

 # raspi-config 



(导航通过箭头,列表,Enter-选择,ESC-返回进行)
转到网络选项

设置计算机名称(点N1主机名 ),例如TERM1

如果计算机通过以太网电缆连接到网络并收到DHCP地址,则无需执行其他任何操作。

如果您需要配置WiFi网络,请进行配置(指向N2 Wi-Fi )。 选择你的国家。 网络名称将必须手动输入;没有提供概述。 我们指定密码

然后完成->完成

根据要求或使用以下命令重新启动:

 # reboot 

重新登录后,请确保您可以访问Internet。

 # ping 8.8.8.8 

2.2更新系统


更新有关可用软件包的信息。

 # apt-get update 

现在更新系统(可选,但非常理想。稍后可以完成。)

 # apt-get upgrade 

这个阶段可能需要很长时间(我大约有15分钟),因为二进制引导加载程序RPi已更新,这会将许多小文件解压缩到SD卡上。
请注意,下载完成并开始解压缩后,几乎立即,一些讨厌的软件包会要求您按“ q”,以停止该过程。 您需要先单击,然后才能被其他事情分散注意力。
更新结束时,您应该重新启动

 # reboot 

2.3安装俄语语言环境和布局


再次在管理实用程序中:

 # raspi-config 

按照“ 本地化选项”进行操作

  1. 更改区域设置 ,从en-GB.UTF-8中删除*并安装对面ru-RU.UTF-8 。 我们确认,然后在下一个窗口中选择它作为主要窗口。
  2. 更改时区 ,然后选择您所在的国家和城市时区。
  3. 更改键盘布局 ,然后使用通用的105键(Intl)PC其他俄语俄语Control + Shift (或Alt + Shift,如果需要,可以切换布局)→ 没有临时切换器右Alt(AltGr)没有组合键

确认并退出- 完成完成

我们离开了管理实用程序,运行命令:

 # dpkg-reconfigure console-setup 

选择UTF-8猜测最佳字符集让系统选择... (底部)→ 8x16

然后,字体应该在视觉上变得更细,但是最主要的是,它们现在支持西里尔字母。

我们重新启动,登录,测试英语版面,切换和俄语版面。

2.4由辅助软件和编辑器确定


对于处理文件,浏览文件夹结构和编辑文件,我真的很喜欢Midnight Commander ,因此:

 # apt-get install mc 

我在root权限下启动它,并且第一次使用编辑器(某些文件上为F4键)时,我选择mcedit (第2点)。

当然,您可以使用所选工具编辑文件。 例如,使用nano甚至VIM。

2.5安装ssh服务器


 # apt-get install ssh 

编辑/ etc / ssh / sshd_config。 取消注释行:

 ListenAddress 0.0.0.0 

解锁自动加载

 # systemctl enable ssh.service 

重新启动服务

 # systemctl restart ssh.service 

我们用命令找出IP地址

 # ifconfig 

现在,我们可以通过SSH(在Windows下,我个人喜欢PuTTY SSH客户端)从源计算机远程连接到设备,以从便利的工作站进行配置,并能够将本文中的文本复制并粘贴到配置中。 我提醒您,登录名是pi ,不是root。



除非另有说明,否则我建议您进一步通过SSH进行进一步的操作。

2.6将易失性分区移动到虚拟磁盘


例如, / tmp/ var / log ,以便:

  1. 系统没有清理SD卡,
  2. 断电时根文件系统崩溃的可能性较小,
  3. 因此在不久的将来,日志不会阻塞地图上的可用空间。

为此,将行添加到/ etc / fstab中

 tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=100m 0 0 tmpfs /tmp tmpfs defaults,noatime,nosuid,size=100m 0 0 

不要忘记在文件末尾添加换行符。

在这里, / var / log/ tmp部分分别分配了100 mb的内存(仅在内存已满时才使用)。 仅用于RDP的技嘉Pi,这些费用不会阻碍任何事情。

重新启动系统,然后运行命令:

 # df 

并确保将分区安装在tmpfs上(第3列和第4列可能不同):

 tmpfs 102400 8 102392 1% /tmp tmpfs 102400 224 102176 1% /var/log 

2.7我们将让用户在其下自动启动图形外壳


运行命令:

 # adduser user 

设置任意密码。 可以跳过各种名称和电话。 确认一下

2.8以最低版本安装X-server


运行命令:

 # apt-get install xserver-xorg xinit xterm x11-xserver-utils 

这可能需要大约5分钟。

现在,您需要坐在物理终端上 (就显示器,键盘和鼠标而言,它们直接连接到Pi),以用户身份登录并运行以下命令:

 $ startx 

下图应出现在屏幕上,这意味着x服务器已成功安装,您可以继续。



我们将鼠标悬停在光标上(这很重要,因为没有窗口形成框架和窗口标题,并且窗口没有明确的焦点就不会接收文本)并输入

 $ exit 

回来。

2.9安装用于远程桌面的软件


我个人喜欢rdesktop 。 当然,它并非没有细微差别(请参阅“耙提取”部分)。 还有其他选择,例如xfreerdpremmina等,尽管他们也抱怨它们。

我将首先给出一个例子。

 # apt-get install rdesktop 

创建一个全屏运行rdesktop的脚本。 在目录/ home / user中,创建runrdp文件(最好是user):

 #!/bin/bash rdesktop <  IP  > -u <   > -f -z 

如果选择了另一个RDP客户端,请在此处为其编写命令行,或使用rdesktop拥有的大量其他参数。 您甚至可以对密码进行硬编码以自动登录。

您必须授予在此脚本上运行的权限,如果您以root身份创建它,则所有者为user。

 # chmod 755 /home/user/runrdp # chown user:user /home/user/runrdp 

现在,让我们转到用户start startx下的物理控制台,在打开的图形终端中(参见上图),键入:

 $ ./runrdp 

屏幕上将出现用于连接到远程桌面的窗口。



如果:

a)控制台显示有关CredSSP错误的信息,
b)FullHD的全屏模式留下了黑暗的边缘(如本文中的图片4所示,尽管有控制台模式,但您可以看到边缘)
然后请参阅“耙提取”部分。

如果一切正常,则取消系统登录(Esc或“ Disable”(禁用)菜单项),退出到x终端,键入exit,返回控制台。

3.提升会议的自动化


如果前面的所有步骤都有效,那么该将所有内容放到一起了。

为此,我们将这样做,以便在系统启动时,用户自动登录到终端,启动X服务器并连接到其下的RDP。 因此,仅在RDP会话中会要求输入密码,这将使不成熟的用户免于驯服Linux的不必要技能。

3.1无限RDP


让我们创建一个脚本,该脚本在启动x服务器时将无休止地尝试打开RDP会话。
为此,在目录/ home / user中 ,在X-session .xinitrc的开头创建一个自动运行文件,其内容如下:
 setxkbmap -option terminate:ctrl_alt_bksp #    Ctrl-Alt-BkSpace setterm -blank 0 -cursor off #   xsetroot -solid gray #      while /bin/true; do ./runrdp done 

3.2无限X服务器


我们将修复一个脚本,该脚本定义在控制台登录期间自动启动程序和配置文件设置,以使x会话自动启动,但仅在用户登录到第一个终端时启动。

感谢gecube提醒我禁用屏幕保护程序。 默认情况下,它是黑屏,对于大多数现代显示器而言,这是相当有害的。


让我们编辑/home/user/.profile ,在其中添加以下行:

 if [ -z "$DISPLAY" ] && [ $(tty) = "/dev/tty1" ]; then startx clear echo " 5    " sleep 5 exit fi 

3.3中级测试一堆


我们重新启动Pi,在终端上坐下来,以用户user身份登录。 我们在屏幕上看到会话开始窗口,如上图所示。

我们尝试拒绝输入密码(esc或Windows版本)-我们在会话开始时获得了相同的窗口(即我们的3.1版脚本一直处于重新连接状态)。

我们等待约一分钟(取决于服务器),而无需触摸键盘和鼠标-用于启动会话的窗口应尽快关闭(密码输入阶段的RDP会话在没有活动的情况下超时)。 当然,由于第3.1节的要求,它将重新连接。

现在按Ctrl + Alt + BkSp 。 X会话应该被打断,将显示大约5秒钟的等待时间,随后控制台会话也将结束。 屏幕将提示您输入带有用户名和密码的终端。

如果一切都那么好-太好了。

我们只需要自动登录到终端即可。

3.4在tty1上无限美味的橙色重复自动登录


为此,请从根目录创建文件/etc/systemd/system/getty@tty1.service.d/autologin.conf ,其内容如下:

 [Service] ExecStart= ExecStart=-/sbin/agetty --autologin user --noclear %I 38400 linux 

然后:

 #systemctl enable getty@tty1.service 

我们重新启动,确保物理控制台以用户身份自动登录,X服务器启动,RDP会话打开,然后一切如3.3所示。
按Ctrl + Alt + BkSp,等待重新连接。

我们进入系统,测试切换,布局工作。 如果出现问题,请参阅第4节。

这样就完成了设置。

应该指示用户,如果出现问题(屏幕变黑,死机等),请先按Ctrl + Alt + BkSp,然后等待响应。

另请参阅第5节“ USB自动安装”。

4.耙子提取


由于这是一个开放源代码,因此耙提取是一个绝望而又持续的过程。 我将尽力勾勒出可能的主要结果,但谁知道我们在等什么。 就我个人而言,我从来都不是幸运的,没有一个小时的指导就可以为我工作。

4.1屏幕分辨率使用不充分的问题


症状:在某些设备(HDMI-DSUB适配器,某些监视器)的情况下,raspbian不会使用全高清监视器的所有可用分辨率。 在相关信息和屏幕的物理边缘之间保留有暗场。

解决方法如下:

编辑/boot/config.txt ,找到这一行

 # disable_overscan = 1 

并取消注释。

重新启动。

现在,在控制台和图形模式下,都应删除屏幕边缘的暗区。

4.2将rdesktop连接到现代RDP服务器时鼠标光标出现问题


这主要涉及Windows 2012、2016,Windows 10,其中包含光标主题。

症状:切换为非标准(沙漏,I符号,窗口加宽箭头等)后,光标消失,绘制效果不佳而忘记了切换为常规箭头。

解决方案:作为您要连接的服务器的用户,请通过控制面板转到鼠标的属性,将主题重置为“否”,并关闭指针下方的阴影。



游标必须服从。

4.3。 rdesktop的编码问题


症状:在某些情况下,通过RDP连接,远程系统上的特殊字符输入错误:波浪号,斜杠,引号,点,竖线。 尤其是开始激怒要点,因为它们经常被键入。

解决方案:

/ usr / share / rdesktop / keymaps中创建一个原始文件,并用以下内容填充它:

 include common map 0x419 grave 0x29 asciicircum 0x07 shift backslash 0x2b bar 0x2b shift apostrophe 0x28 greater 0x34 shift less 0x33 shift 

/ home / user / runrdp脚本中,将-k raw参数添加到rdesktop命令提示符。 例如:

 rdesktop 10.0.0.1 -u user -k raw 

通过Ctrl + Alt + BkSp重新启动终端上的会话,或者通常重新启动Pi。

输入RDP,测试所有特殊字符,包括 键盘数字线上的Shift键和字母部分左右两侧的侧键,带Shift键和不带Shift键(引号,冒号,标点符号,小号等)。 一切都应该工作。

4.4。 尝试启动rdesktop时,会话无法打开,控制台中显示错误CredSSP


 CredSSP: Initialize failed, do you have correct kerberos tgt initialized ? Failed to connect, CredSSP required by server. 

目标系统需要现代的客户端身份验证算法,而rdesktop通常无法做到。

解决方案选项:

  1. 通过降低安全性设置来禁用服务器身份验证。 基本上,在Pi尝试将RDP用作客户端的环境中,这不应成为太多的安全问题。
  2. 使用另一个客户端,例如freerdp,remmina,用该客户端的启动行替换runrdp脚本的内容。
  3. 安装和配置kerberos客户端,但是不知何故,那里的一切都很复杂。 如果您想尝试,请从这里开始

4.5。 打开和关闭设备


Raspberry Pi没有关闭按钮。 不好 事实证明,没有有效的方法来打开和关闭它。 关于这一点的文章很多,我将尝试简要地总结一下:

  1. 一方面,我们根本无法关闭设备,只能关闭显示器。 严格来说,在我放置RPi的地方,一切都已完成。 通常,该设备几乎不会发热,不消耗电力,不会产生噪音。 显示器在离开之前,用户将关闭。
  2. 您可以通过Cron配置夜间关闭,但要在早晨打开RPi,用户将需要调整电线或电源。
  3. 您可以通过购买带有打开按钮的USB供电电缆来解决此问题(要打开RPi,只需用一个按钮短暂打开电路即可)。 120卢布是一种荣幸。 但是在这里,用户将以与设备崩溃相同的方式进行自动关机。 鉴于我们已经将易失性分区移至tmpfs,可能不会出现问题,但是由于rootfs崩溃,仍然没有人可以确保用户不会在早上登录。 可以这么说,解决方案没有“钉住”。
  4. 有些解决方案的GPIO端口中包含一个额外的按钮,可以以适当的方式轻轻地打开/关闭设备。 但是集体农场到了建筑物-这是要花费数小时并增加生产成本。
  5. 但是,对于RPi,甚至有一个带有内置按钮的情况(中国人应有尽有)。 但是我个人还没有尝试过。
  6. 我考虑过通过USB电缆中的断路器打开设备,然后通过热键(例如Ctrl + Alt + Shift + P)将其关闭,该键由系统服务监控,但是无法通过此解决方案来解决。

4.6多次重新连接到RDP服务器


在当前方案中,客户端设备将使用RDP协议连接到服务器,显示登录名和密码输入窗口,如果用户未输入任何内容,则一段时间后将重置会话,RDP客户端将再次启动,依此类推。

Mnemonik用户在评论中 ,通过多次永久性重新连接,Windows Server内存不足,并提供了一个解决问题的示例。

我带我来。 我们将修改.xinitrc脚本,以便在下一个rdesktop进程完成后,屏幕上将出现一个模式对话框,阻止其重新启动,直到单击OK按钮为止。

为此,您可以使用xorg软件包中包含的常规xmessage,但是它创建的窗口非常丑陋,以致于我的显示器开裂了。 此外,此应用程序对俄语不友好,打开它是另一项任务。

gxmessage给我留下了深刻的印象,它没有这个缺点,但是它拉动了GTK和25 MB的其他依赖项,我也不喜欢。 好吧,让我们选择一个较小的邪恶:
 apt-get install gxmessage 

更改.xinitrc脚本:
 setxkbmap -option terminate:ctrl_alt_bksp #    Ctrl-Alt-BkSpace setterm -blank 0 -cursor off #   xsetroot -solid gray #      while /bin/true; do ./runrdp gxmessage --center " OK      RDP" done 

现在,在rdesktop尝试连接服务器之间,我们的屏幕上将显示一条相应的消息,并且服务器不会持续发生“爆炸”。

轻松完成脚本后,您可以预检查服务器的网络可用性,并显示有关由于缺少通信而重新连接的消息。

4.7配置NTP


感谢gecube提醒我这一刻。 从理论上讲,设备上的时间会随着时间的流逝而变化,这可能会导致身份验证出现问题,并可能导致其他问题。
要解决此小问题,您应该安装ntpdate程序并在cron中注册一个任务,以每小时更新一次时间(设备将需要Internet访问):

 # apt-get install ntpdate # echo "0 * * * * root ntpdate pool.ntp.org" > /etc/cron.d/ntp 

如果您的网络上有本地NTP服务器,请用您自己的主机名替换主机名。

5可选:连接,断开连接和转发USB设备


实际上,本节包括两个关键阶段。 首先,要管理USB设备以确保其自动安装以及至少在某种程度上由用户控制的卸载。 其次,将连接的设备转发到终端,以便可以通过网络访问它们。

5.1。 自动挂载设置


具有文件系统的插入式USB设备将安装在/ media目录的子目录中。 然后,我们将同一目录转发到rdesktop。

我们将需要pmount软件包。

 # apt-get install pmount. 

我们还需要为udev创建一条规则,以捕获连接的设备并将其挂载。

/etc/udev/rules.d中,创建包含以下内容的文件80-usbstick.rules

 ACTION=="add", KERNEL=="sd[az][0-9]", TAG+="systemd", ENV{SYSTEMD_WANTS}="usbstick-handler@%k" 

现在为systemd创建一个服务。

/ lib / systemd / system中,使用以下内容创建usbstick-handler @ .service文件

 [Unit] Description=Mount USB sticks BindsTo=dev-%i.device After=dev-%i.device [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/pmount --umask 000 --noatime -w --sync /dev/%i /media/%i ExecStop=/usr/bin/pumount /dev/%i 

/ usr / local / bin中,创建具有以下内容unmount-devices文件

 #!/bin/bash for folder in /media/*; do pumount $folder echo "Unmounted $folder" done 

赋予他运行权。

 #chmod 755 unmount-devices 

将用户用户添加到plugdev组,以便他可以使用此脚本(pumount允许该组的成员安装和卸载设备)

 # adduser user plugdev 

重新启动。如果一切都正确完成,则将闪存驱动器插入mini-PC的USB端口后,几秒钟后,sda1文件夹等应出现在/ media目录中,将在该目录中安装闪存驱动器以进行读取和写入。

设备安装时带有–sync标志,因此,从理论上讲,如果在写操作完成后拉出设备,则数据安全应该不会有任何问题,但是,不安全的提取标志将保留在设备上。

我们将测试这一点(插入USB闪存驱动器,卸下USB闪存驱动器,然后将设备插入Windows PC并修复可能的错误)。

现在,再次将设备插入Pi,确保/ media / sda1文件夹再次出现。
从用户user下运行unmount-devices。/媒体中的sda1应该消失,并且应该安全地卸载该设备,并且在插入Windows PC时不会出现错误。

5.2通过RDP转发/ media目录并提供自动挂载设备


/ home / user / runrdp中,我们在rdesktop命令行中添加一个附加参数:

 rdesktop …... -r disk:USB=/media/ 

现在编辑/home/user/.profile,添加对卸载设备的调用。

 ... if [ -z "$DISPLAY" ] && [ $(tty) = "/dev/tty1" ]; then startx clear unmount-devices echo " 5    " sleep 5 exit fi 

重新启动。

现在,如果我们正在RDP会话中工作,并且需要将USB磁盘连接到Pi,我们只需将其插入并转到“我的电脑”,我们将在其中大致看到下图。



我们可以自由使用这些设备,它们将显示为文件夹(sda1-xx,sdb1-xx等)。

如果需要删除设备,只需按Ctrl + Alt + BkSp。该会话被断开(并因此必须中止任何装置用于复制,即使它被执行)被显示在控制台卸载设备上(此时所有他们安全地将提取物),并用RDP化合物之前消息等待5秒。
然后,重新连接后,您可以输入密码并从同一点继续工作,但是先前连接的设备将被卸载。此时,可以将其物理删除。

这样就完成了配置步骤。

6.将系统克隆到另一个Rpi


6.A如果独立配置


如果所有耙均已移除,则该设备可以正常工作,然后可以将装配件扩展到其他设备。如果它们是同一类型,则无需从头开始重复该过程。
将SD卡(我有16 GB)插入适配器卡,然后将其插入Raspberry USB端口。

如果您已经从上一节配置了自动挂载,请运行脚本

 # unmount-devices 

这样他就可以卸载新连接的SD卡,该SD卡当然立即安装在/ media / sdxx中。

现在执行lsblk命令并查看设备列表:

 sda 8:0 1 14.6G 0 disk └─sda1 8:1 1 14.6G 0 part mmcblk0 179:0 0 7.4G 0 disk ├─mmcblk0p1 179:1 0 256M 0 part /boot └─mmcblk0p2 179:2 0 7.2G 0 part / 

sda显然是我们的新卡,mmcblk0是系统
运行:

 dd if=/dev/mmcblk0 of=/dev/sda bs=4M 

然后等待结果,这大约需要半小时(对于8GB卡)。

之后,插入另一个Raspberry,在runrdp脚本中更改主机名,用户名,并根据需要重复。

6.B下载完成的图像


如果您当然相信我,则可以通过稍微重新配置它来使用我准备的图像。任何书签,遥测工具等。 -我没有添加,它不是Windows 10,但我不是Microsoft,而且我也不相信在RPi上隐藏挖矿的经济前景。
图像根据说明进行了编译,并压缩后可用于最小2 GB(1977614336字节)GB的SD卡。此外,图像的填充部分通常占据前1966080000字节,即使在大多数中文SD卡中也应适合。

为此,请执行以下操作:
1)从链接(MD5:0B5033A9CA12BA8299340BC482111998)下载档案并解压缩图像文件。
2)参照第1.2节中的说明,将其复制到SD卡中。
3)引导系统,等待图形屏幕出现,然后按Ctrl + Alt + F2进入控制台。
以pi用户身份登录,密码为111。运行:

 $ sudo bash 

4)遵循步骤1.4、2.1,确保Internet正常工作(例如ping命令)。
5)运行raspi-config,转到“高级选项”,选择“扩展文件系统”(将系统映像扩展到SD卡上的所有可用空间)
。6)编辑/ home / user / runrdp,将服务器的主机名替换为名称或IP-服务器的地址,用户名“ user”代表操作员必须连接到服务器的用户名。
7)再次重启并检查操作。

结论


就这样,谢谢您的关注。我希望这些信息对某人有用。
不幸的是,在一篇文章中涵盖所有内容非常困难。如果有积极的反馈,我将写出如何方便地从此程序集中转发打印机。

PS 12/11/2019。感谢同事(gecube,Mnemonik,mkovalevskyi,SannX)的提示和修改。进行了更改:
  • 添加了关闭屏幕保护程序命令;
  • 添加了NTP配置;
  • 有关RDP客户端的多个不完全连接的服务器上的内存消耗的信息,请在脚本中添加一个带有暂停的消息框。

另外,我刚刚测试了从RPi3中取出的卡,方法是将其插入新包装的RPi4 B型1Gb硬盘中。一切正常,无需任何修复。因此,该指令也适用于RPi 4,并且可以适用于其他修改。

为此,我添加了一个可下载的映像(请参阅第6.B节),无需遵循整个说明即可下载和克隆该映像。

Source: https://habr.com/ru/post/zh-CN479504/


All Articles