Lab 1:树莓派开玩
来源:互联网 发布:esrvcc切换成功率优化 编辑:程序博客网 时间:2024/05/16 23:50
一、选用的实验器材
RaspberryPi(树莓派)一块、USB-TTL串口线一根(PL2303芯片)、以太网线一根、8G容量SD卡一张、带windows7操作系统的PC一台。
本来还准备了5V/1A电源一个和对应的microUSB线一根,但后来发现没必要,直接用USB-TTL串口线就可以给板子供电了。
二、连接示意图
三、实物连接图
四、安装系统
先在树莓派官网http://www.raspberrypi.org/下载一个系统的镜像文件。如下图所示。
然后在win7环境下安装好win32diskimager工具,插入SD卡后就可以开始安装系统了。
全部安装完成后,发现SD卡在WIN7环境下查看大小只有50多M了。进入SD目录后查看到如下结果:
基本可以确定系统已经成功安装了。
五、开机启动过程
首先尝试使用串口连接去查看一下树莓派的raspbian系统的开机过程。先下载安装串口驱动(PL2303的),驱动安装成功后在设备管理器中查看。
然后安装一个名为Hyper Terminal的串口终端软件。如右图:
打开这个软件我们选择新建连接,并且选择COM3端口
点击确定后,选择如下参数:
随后端口连接成功。然后我们给树莓派接上电源,会看到屏幕上输出了大量的信息。所有的输出信息以及部分的注解分析如下所示:
Uncompressing Linux... done, booting thekernel. //成功解压linux系统,并开启它的内核
[ 0.000000] Booting Linux on physical CPU 0x0 //在CPU上开启linux,是操作系统控制CPU
[ 0.000000] Initializing cgroup subsys cpuset //初始化cgroup
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 4.1.18+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3(crosstool-NG crosstool-ng-1.22.0-88-g8460611) ) #846 Thu Feb 25 14:11:56 GMT2016
//上面显示了linux内核版本,gcc版本,以及当前版本的发布日期
[ 0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7),cr=00c5387d
//上一条显示了CPU型号,可以看出树莓派使用了ARM
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasinginstruction cache
[ 0.000000] Machine model: Raspberry Pi Model B Rev 2 //板子的型号
[ 0.000000] cma: Reserved 8 MiB at 0x17400000
[ 0.000000] Memory policy: Data cache writeback //采用的内存cache写机制为writeback
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 97440
[ 0.000000] Kernel command line: dma.dmachans=0x7f35bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2708.boardrev=0xfbcm2708.serial=0x153640f1 smsc95xx.macaddr=B8:27:EB:36:40:F1bcm2708_fb.fbswap=1 bcm2708.uart_clock=3000000 vc_mem.mem_base=0x1ec00000vc_mem.mem_size=0x20000000 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait //内核输入参数
//下面是各种缓存hash值
[ 0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144bytes)
[ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[ 0.000000] Memory: 371876K/393216K available (5792K kernel code, 488Krwdata, 1788K rodata, 352K init, 720K bss, 13148K reserved, 8192K cma-reserved)//总内存大小和使用情况,从这里看出树莓派的内存并不大,只有370M多
[ 0.000000] Virtual kernel memory layout: //虚拟内存的布局
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
[ 0.000000] vmalloc : 0xd8800000- 0xff000000 ( 616 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xd8000000 ( 384 MB)
[ 0.000000] modules : 0xbf000000- 0xc0000000 ( 16 MB)
[ 0.000000] .text : 0xc0008000- 0xc076f1f0 (7581 kB)
[ 0.000000] .init : 0xc0770000- 0xc07c8000 ( 352 kB)
[ 0.000000] .data : 0xc07c8000- 0xc0842260 ( 489 kB)
[ 0.000000] .bss : 0xc0842260- 0xc08f63e0 ( 721 kB)
[ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] NR_IRQS:522
[ 0.000000] clocksource stc: mask: 0xffffffff max_cycles: 0xffffffff,max_idle_ns: 1911260446275 ns
[ 0.000015] sched_clock: 32 bits at 1000kHz, resolution 1000ns, wrapsevery 2147483647500ns //定时器信息
[ 0.000056] Switching to timer-based delay loop, resolution 1000ns
[ 0.000341] Console: colour dummy device 80x30
[ 0.001270] console [tty1] enabled //使能终端设备tty1
[ 0.001328] Calibrating delay loop (skipped), value calculated using timerfrequency.. 2.00 BogoMIPS (lpj=10000) //校正回环延时
[ 0.001413] pid_max: default: 32768 minimum: 301
[ 0.001786] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.001858] Mountpoint-cache hash table entries: 1024 (order: 0, 4096bytes)
[ 0.002905] Initializing cgroup subsys blkio //初始化cgroup
[ 0.002999] Initializing cgroup subsys memory
[ 0.003066] Initializing cgroup subsys devices
[ 0.003129] Initializing cgroup subsys freezer
[ 0.003190] Initializing cgroup subsys net_cls
[ 0.003310] CPU: Testing write buffer coherency: ok
[ 0.003430] ftrace: allocating 19747 entries in 58 pages
[ 0.107836] Setting up static identity map for 0x81c0 - 0x81f8
[ 0.110013] devtmpfs: initialized
[ 0.120832] VFP support v0.3: implementor 41 architecture 1 part 20variant b rev 5
[ 0.121284] clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff,max_idle_ns: 19112604462750000 ns
[ 0.123276] pinctrl core: initialized pinctrl subsystem
[ 0.124170] NET: Registered protocol family 16 //网络校准
[ 0.129632] DMA: preallocated 4096 KiB pool for atomic coherentallocations
[ 0.131127] bcm2708.uart_clock = 3000000
[ 0.136001] hw-breakpoint: found 6 breakpoint and 1 watchpoint registers.
[ 0.136081] hw-breakpoint: maximum watchpoint size is 4 bytes.
[ 0.136288] Serial: AMBA PL011 UART driver //使用的串口驱动
[ 0.136589] 20201000.uart: ttyAMA0 at MMIO 0x20201000 (irq = 83, base_baud= 0) is a PL011 rev2
[ 0.504515] console [ttyAMA0] enabled //使能串口ttyAMA0
[ 0.508911] bcm2835-mbox 2000b880.mailbox: mailbox enabled //使能邮箱
[ 0.554869] bcm2708-dmaengine 20007000.dma: DMA legacy API manager atf2007000, dmachans=0xf35
[ 0.563600] bcm2708-dmaengine 20007000.dma: Initialized 7 DMA channels (+1 legacy)
[ 0.572162] bcm2708-dmaengine 20007000.dma: Load BCM2835 DMA engine driver
[ 0.579092] bcm2708-dmaengine 20007000.dma: dma_debug:0
[ 0.585243] SCSI subsystem initialized //初始化系统接口
[ 0.589401] usbcore: registered new interface driver usbfs
[ 0.595122] usbcore: registered new interface driver hub
[ 0.600656] usbcore: registered new device driver usb
[ 0.606686] raspberrypi-firmware soc:firmware: Attached to firmware from2016-02-25 14:31
[ 0.642371] Switched to clocksource stc
[ 0.695500] FS-Cache: Loaded
[ 0.698798] CacheFiles: Loaded
//下面显示的是TCP/IP信息
[ 0.717541] NET: Registered protocol family 2
[ 0.723470] TCP established hash table entries: 4096 (order: 2, 16384bytes)
[ 0.730661] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.737291] TCP: Hash tables configured (established 4096 bind 4096)
[ 0.743929] UDP hash table entries: 256 (order: 0, 4096 bytes)
[ 0.749825] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[ 0.756511] NET: Registered protocol family 1
[ 0.761478] RPC: Registered named UNIX socket transport module.
[ 0.767532] RPC: Registered udp transport module.
[ 0.772266] RPC: Registered tcp transport module.
[ 0.777032] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.784749] hw perfevents: enabled with armv6_1176 PMU driver, 3 countersavailable
[ 0.793884] futex hash table entries: 256 (order: -1, 3072 bytes)
//虚拟文件系统有关信息
[ 0.816313] VFS: Disk quotas dquot_6.6.0
[ 0.820696] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096bytes)
[ 0.830375] FS-Cache: Netfs 'nfs' registered for caching
[ 0.837143] NFS: Registering the id_resolver key type
[ 0.842322] Key type id_resolver registered
[ 0.846658] Key type id_legacy registered
[ 0.854494] Block layer SCSI generic (bsg) driver version 0.4 loaded(major 252)
[ 0.862473] io scheduler noop registered
[ 0.866474] io scheduler deadline registered (default)
[ 0.872047] io scheduler cfq registered
[ 0.878477] BCM2708FB: allocated DMA memory 57800000
[ 0.883646] BCM2708FB: allocated DMA channel 0 @ f2007000
[ 0.894186] Console: switching to colour frame buffer device 82x26
[ 0.905430] Serial: 8250/16550 driver, 0 ports, IRQ sharing disabled
[ 0.915179] vc-cma: Videocore CMA driver
[ 0.920860] vc-cma: vc_cma_base = 0x00000000
[ 0.927309] vc-cma: vc_cma_size = 0x00000000 (0 MiB)
[ 0.934378]vc-cma: vc_cma_initial = 0x00000000 (0MiB)
[ 0.941677] vc-mem: phys_addr:0x00000000 mem_base=0x1ec00000mem_size:0x20000000(512 MiB)
[ 0.972179] brd: module loaded
[ 0.986062] loop: module loaded
[ 0.991863] vchiq: vchiq_init_state: slot_zero = 0xd7880000, is_master = 0
[ 1.002486] Loading iSCSI transport class v2.0-870.
[ 1.010552] usbcore: registered new interface driver smsc95xx
[ 1.018207] dwc_otg: version 3.00a 10-AUG-2012 (platform bus)
[ 1.225875] Core Release: 2.80a
[ 1.230567] Setting default values for core params //设置内核参数的默认值
[ 1.236937] Finished setting default values for core params
[ 1.444371] Using Buffer DMA mode //使用缓冲DMA模式
[ 1.449265] Periodic Transfer Interrupt Enhancement - disabled
[ 1.456709] Multiprocessor Interrupt Enhancement - disabled
[ 1.463935] OTG VER PARAM: 0, OTG VER FLAG: 0
[ 1.469915] Dedicated Tx FIFOs mode
[ 1.475501] WARN::dwc_otg_hcd_init:1047: FIQ DMA bounce buffers: virt =0xd7814000 dma = 0x57814000 len=9024
[ 1.488646] FIQ FSM acceleration enabled for :
[ 1.488646] Non-periodic Split Transactions
[ 1.488646] Periodic Split Transactions
[ 1.488646] High-Speed Isochronous Endpoints
[ 1.511989] WARN::hcd_init_fiq:412: FIQ on core 0 at 0xc03dd6ac
[ 1.519570] WARN::hcd_init_fiq:413: FIQ ASM at 0xc03dd988 length 36
[ 1.527478] WARN::hcd_init_fiq:438: MPHI regs_base at 0xd8896000
[ 1.535197] dwc_otg 20980000.usb: DWC OTG Controller
[ 1.541817] dwc_otg 20980000.usb: new USB bus registered, assigned busnumber 1
[ 1.550854] dwc_otg 20980000.usb: irq 32, io mem 0x00000000
[ 1.558101] Init: Port Power? op_state=1
[ 1.563626] Init: Power Port (0)
//USB配置
[ 1.568714] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 1.577170]usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1.586032] usb usb1: Product: DWC OTG Controller
[ 1.592305] usb usb1: Manufacturer: Linux 4.1.18+ dwc_otg_hcd
[ 1.599648] usb usb1: SerialNumber: 20980000.usb
[ 1.606886] hub 1-0:1.0: USB hub found //未找到USB扩展槽
[ 1.612310] hub 1-0:1.0: 1 port detected
[ 1.619043] usbcore: registered new interface driver usb-storage
[ 1.627142] mousedev: PS/2 mouse device common for all mice //检测鼠标设备
[ 1.635371] bcm2835-cpufreq: min=700000 max=700000
[ 1.642104] sdhci: Secure Digital Host Controller Interface driver
[ 1.649923] sdhci: Copyright(c) Pierre Ossman
[ 1.656279] sdhost: log_buf @ d7813000 (57813000)
[ 1.742444] mmc0: sdhost-bcm2835 loaded - DMA enabled (>1)
[ 1.750098] sdhci-pltfm: SDHCI platform and OF driver helper
[ 1.778321] ledtrig-cpu: registered to indicate activity on CPUs
[ 1.786285] hidraw: raw HID events driver (C) Jiri Kosina
[ 1.793672] usbcore: registered new interface driver usbhid
[ 1.800841] usbhid: USB HID core driver
[ 1.810806] Initializing XFRM netlink socket
[ 1.816970] Indeed it is in host mode hprt0 = 00021501
[ 1.884272] NET: Registered protocol family 17
[ 1.890739] Key type dns_resolver registered
[ 1.904607] registered taskstats version 1
[ 1.910758] vc-sm: Videocore shared memory driver
[ 1.917373] [vc_sm_connected_init]: start
[ 1.924493] [vc_sm_connected_init]: end - returning 0
[ 1.933640] Waiting for root device /dev/mmcblk0p2...
[ 1.950032] mmc0: host does not supportreading read-only switch, assuming write-enable
[ 1.963252] mmc0: new high speed SDHC card at address b368
[ 1.971221] mmcblk0: mmc0:b368 SDC 7.51 GiB
[ 1.979403] mmcblk0: p1 p2
[ 2.045919] EXT4-fs (mmcblk0p2): INFO: recovery required on readonlyfilesystem
[ 2.055107] EXT4-fs (mmcblk0p2): write access will be enabled duringrecovery
[ 2.064011] usb 1-1: new high-speed USB device number 2 using dwc_otg
[ 2.072304] Indeed it is in host mode hprt0 = 00001101
[ 2.272929] usb 1-1: New USB device found, idVendor=0424, idProduct=9512
[ 2.281447] usb 1-1: New USB device strings: Mfr=0, Product=0,SerialNumber=0
[ 2.293574] hub 1-1:1.0: USB hub found
[ 2.299629] hub 1-1:1.0: 3 ports detected
[ 2.582439] usb 1-1.1: new high-speed USB device number 3 using dwc_otg
[ 2.702859] usb 1-1.1: New USB device found, idVendor=0424, idProduct=ec00
[ 2.711539] usb 1-1.1: New USB device strings: Mfr=0, Product=0,SerialNumber=0
[ 2.723755] smsc95xx v1.0.4
[ 2.786975] smsc95xx 1-1.1:1.0 eth0: register 'smsc95xx' atusb-20980000.usb-1.1, smsc95xx USB 2.0 Ethernet, b8:27:eb:36:40:f1
//文件系统
[ 7.346049] EXT4-fs (mmcblk0p2): orphan cleanup on readonly fs
[ 7.354501] EXT4-fs (mmcblk0p2): 1 orphan inode deleted
[ 7.361597] EXT4-fs (mmcblk0p2): recovery complete
[ 8.869364] EXT4-fs (mmcblk0p2): mounted filesystem with ordered datamode. Opts: (null)
[ 8.881111] VFS: Mounted root (ext4 filesystem) readonly on device 179:2.
[ 8.891282] devtmpfs: mounted
[ 8.897259] Freeing unused kernel memory: 352K (c0770000 - c07c8000)
[ 9.236671] random: systemd urandom read with 73 bits of entropy available
[ 9.252265] systemd[1]: systemd 215 running in system mode. (+PAM +AUDIT+SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ -SECCOMP -APPARMOR)
[ 9.270090] systemd[1]: Detected architecture 'arm'.
[ 9.406174] NET: Registered protocol family 10
[ 9.414751] systemd[1]: Inserted module 'ipv6' //支持ipv6
[ 9.426332] systemd[1]: Set hostname to <kamisama>. //设计主机名,此处已经被我修改过
[ 9.634011] uart-pl011 20201000.uart: no DMA platform data
[ 10.258133] systemd[1]: Starting Forward Password Requests to WallDirectory Watch.
[ 10.270389] systemd[1]: Started Forward Password Requests to WallDirectory Watch.
[ 10.282087] systemd[1]: Expecting device dev-ttyAMA0.device...
[ 10.293248] systemd[1]: Starting Remote File Systems (Pre).
[ 10.303622] systemd[1]: Reached target Remote File Systems (Pre).
[ 10.312114] systemd[1]: Starting Arbitrary Executable File Formats FileSystem Automount Point.
[ 10.328272] systemd[1]: Set up automount Arbitrary Executable FileFormats File System Automount Point.
[ 10.342079] systemd[1]: Starting Encrypted Volumes.
[ 10.351909] systemd[1]: Reached target Encrypted Volumes.
[ 10.359658] systemd[1]: Starting Swap.
[ 10.368294] systemd[1]: Reached target Swap.
[ 10.374898] systemd[1]: Expecting device dev-mmcblk0p1.device...
[ 10.385682] systemd[1]: Starting Root Slice.
[ 10.394786] systemd[1]: Created slice Root Slice.
[ 10.401561] systemd[1]: Starting User and Session Slice.
[ 10.411810] systemd[1]: Created slice User and Session Slice.
[ 10.419709] systemd[1]: Starting Delayed Shutdown Socket.
[ 10.429852] systemd[1]: Listening on Delayed Shutdown Socket.
[ 10.437687] systemd[1]: Starting /dev/initctl Compatibility Named Pipe.
[ 10.449126] systemd[1]: Listening on /dev/initctl Compatibility NamedPipe.
[ 10.458152] systemd[1]: Starting Journal Socket (/dev/log).
[ 10.468458] systemd[1]: Listening on JournalSocket (/dev/log).
[ 10.476524] systemd[1]: Starting udev Control Socket.
[ 10.486376] systemd[1]: Listening on udev Control Socket.
[ 10.493947] systemd[1]: Starting udev Kernel Socket.
[ 10.503531] systemd[1]: Listening on udev Kernel Socket.
[ 10.510903] systemd[1]: Starting Journal Socket.
[ 10.520322] systemd[1]: Listening on Journal Socket.
[ 10.527576] systemd[1]: Starting System Slice.
[ 10.536809] systemd[1]: Created slice System Slice.
[ 10.543946] systemd[1]: Starting File System Check on Root Device...
[ 10.559510] systemd[1]: Starting system-systemd\x2dfsck.slice.
[ 10.580880] systemd[1]: Created slice system-systemd\x2dfsck.slice.
[ 10.595477] systemd[1]: Starting system-autologin.slice.
[ 10.610844] systemd[1]: Created slice system-autologin.slice.
[ 10.620166] systemd[1]: Starting system-serial\x2dgetty.slice.
[ 10.634719] systemd[1]: Created slice system-serial\x2dgetty.slice.
[ 10.643791] systemd[1]: Starting Increase datagram queue length...
[ 10.661224] systemd[1]: Starting Restore / save the current clock...
[ 10.699533] systemd[1]: Starting udev Coldplug all Devices...
[ 10.783765] systemd[1]: Starting Load Kernel Modules... //开始载入内核模块
[ 10.841213] systemd[1]: Mounting Debug File System...
[ 10.911837] systemd[1]: Starting Create list of required static devicenodes for the current kernel...
[ 10.980384] fuse init (API version 7.23)
[ 11.049606] i2c /dev entries driver
[ 11.111757] systemd[1]: Mounted Huge Pages File System.
[ 11.198073] systemd[1]: Started Set Up Additional Binary Formats.
[ 11.224599] systemd[1]: Mounting POSIX Message Queue File System...
[ 11.249546] systemd[1]: Starting Slices.
[ 11.272729] systemd[1]: Reached target Slices.
[ 11.302720] systemd[1]: Mounted POSIX Message Queue File System.
[ 11.314864] systemd[1]: Mounted Debug File System.
[ 11.328551] systemd[1]: Started File System Check on Root Device.
[ 11.356927] systemd[1]: Started Increase datagram queue length.
[ 11.370056] systemd[1]: Started Restore / save the current clock.
[ 11.402777] systemd[1]: Started Load Kernel Modules.
[ 11.426206] systemd[1]: Started Create list of required static devicenodes for the current kernel.
[ 11.460288] systemd[1]: Time has been changed
[ 11.580311] systemd[1]: Started udev Coldplug all Devices.
[ 11.803989] systemd[1]: Starting Create Static Device Nodes in /dev...
[ 11.821373] systemd[1]: Starting Apply Kernel Variables...
[ 11.855747] systemd[1]: Mounting Configuration File System...
[ 11.916927] systemd[1]: Mounting FUSE Control File System...
Raspbian GNU/Linux 8 kamisama ttyAMA0
kamisama login: //开始要求输入账户和密码进行登录
//随后我输入账号和密码即提示登录成功,登录后显示如下信息:
kamisamalogin: pi
Password:
Lastlogin: Wed Mar 9 22:17:19 CST 2016 ontty1 //上次的登录时间以及登录设备
Linuxkamisama 4.1.18+ #846 Thu Feb 25 14:11:56 GMT 2016 armv6l //系统版本发布时间
//系统简介
Theprograms included with the Debian GNU/Linux system are free software;
the exactdistribution terms for each program are described in the
individualfiles in /usr/share/doc/*/copyright.
//法律声明
DebianGNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permittedby applicable law.
六、通过Linux获得硬件数据
我们尝试在登录后输入一些linux命令获取一些硬件信息。
查看CPU信息如下:
还可以输入命令lscpu如右所示:
查看内存使用情况:
查看硬盘分区分布:
查看路由和网关:
七、配置网络
输入命令sudo nano /etc/network/interfaces查看网络配置参数内容如下:
首先我采用的是以太网线直连的方式,所以在局域网内只要把网线插入树莓派网卡,即可自动获得IP。
具体先要在win7系统下进行如下设置:
打开网络和共享中心,点击适配器设置。找到无线网络连接如下:
右键属性。在共享中点击“允许其他网络用户通过此计算机的Internet连接来连接”,并选择本地连接如下:
随后,确定。这时候树莓派就被分配到一个ip地址能上网了。
为了验证,我们在超级终端通过串口连接树莓派,输入ifconfig命令查看当前的网络状态如下:
可以看到此时树莓派被分配到的ip地址是192.168.137.138。实际上从win7上也能看出这点,打开cmd,然后输入arp –a命令我们看到接口192.168.137.1(本地局域网)下面有一个动态的192.168.137.138的地址,这个地址就是分配给树莓派的。
从PC和树莓派两端证明此时网络已经连接的最好办法就是使用PC远程登录树莓派的桌面。
操作如下:
打开window7的Remote Desktop Connection程序,输入树莓派的ip,
然后看到如下所示界面:
这证明成功通过网络远程连接上了树莓派。输入账号和密码后提示登录成功,并且看到了如下所示的树莓派桌面。至此证明了树莓派确实已经连接上互联网了。
八、配置SSH
树莓派的SSH文件的路径为/etc/ssh/ssh_config和/etc/ssh/sshd_config。其中前者是针对客户端的,后者是针对服务器的。
文件内容和关键解释如下:
ssh_config:
# This isthe ssh client system-wide configuration file. See
#ssh_config(5) for more information. Thisfile provides defaults for
# users,and the values can be changed in per-user configuration files
# or onthe command line.
#Configuration data is parsed as follows:
# 1. command line options
# 2. user-specific file
# 3. system-wide file
# Anyconfiguration value is only changed the first time it is set.
# Thus,host-specific definitions should be at the beginning of the
#configuration file, and defaults at the end.
#Site-wide defaults for some commonly used options. For a comprehensive
# list ofavailable options, their meanings and defaults, please see the
#ssh_config(5) man page.
Host *
# ForwardAgent no 设置连接是否经过验证代理(如果存在)转发给远程计算机
# ForwardX11 no 设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAY set)
# ForwardX11Trusted yes
# RhostsRSAAuthentication no设置是否使用用RSA算法的基于rhosts的安全验证
# RSAAuthentication yes 设置是否使用基于rhosts的安全验证
# PasswordAuthentication yes设置是否使用口令验证这里可以改一改试下
# HostbasedAuthentication no基于主机的授权
# GSSAPIAuthentication no 设置是否允许使用基于 GSSAPI 的用户认证
# GSSAPIDelegateCredentials no
# GSSAPIKeyExchange no
# GSSAPITrustDNS no
# BatchMode no 批处理模式
# CheckHostIP yes 检查主机的IP
# AddressFamily any
# ConnectTimeout 0
# StrictHostKeyChecking ask询问是否检查hostkey
# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# Port 22 端口访问为22
# Protocol 2,1 支持SSH1和SSH2协议
# Cipher 3des
# Ciphersaes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
# MACshmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
# EscapeChar ~
# Tunnel no 是否使用隧道
# TunnelDevice any:any
# PermitLocalCommand no
# VisualHostKey no
# ProxyCommand ssh -q -W %h:%pgateway.example.com
# RekeyLimit 1G 1h
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
GSSAPIDelegateCredentials no
sshd_config:
# Packagegenerated configuration file
# See thesshd_config(5) manpage for details
# Whatports, IPs and protocols we listen for
Port22 设置sshd监听的端口号
# Usethese options to restrict which interfaces/protocols sshd will bind to
#ListenAddress::
#ListenAddress0.0.0.0 设置sshd服务器绑定的IP地址
Protocol2 选择的 SSH协议版本
#HostKeys for protocol version 2
HostKey/etc/ssh/ssh_host_rsa_key设置包含计算机私人密匙的文件
HostKey/etc/ssh/ssh_host_dsa_key
HostKey/etc/ssh/ssh_host_ecdsa_key
HostKey/etc/ssh/ssh_host_ed25519_key
#PrivilegeSeparation is turned on for security
UsePrivilegeSeparationyes
#Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval3600
ServerKeyBits1024 定义服务器密匙的位数
# Logging
SyslogFacilityAUTH
LogLevelINFO
#Authentication:
LoginGraceTime120 设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)
PermitRootLoginwithout-password
StrictModesyes
RSAAuthenticationyes 是否使用纯的 RSA 认证
PubkeyAuthenticationyes 是否允许 Public Key
#AuthorizedKeysFile %h/.ssh/authorized_keys上面这个在设定若要使用不需要密码登入的账号时,那么那个账号的存放档案所在档名
# Don'tread the user's ~/.rhosts and ~/.shosts files
IgnoreRhostsyes 设置验证的时候是否使用“rhosts”和“shosts”文件
# Forthis to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthenticationno 这个选项是专门给 SSH1 用的,使用 rhosts档案在
/etc/hosts.equiv配合 RSA演算方式来进行认证!不要使用
# similarfor protocol version 2
HostbasedAuthenticationno
#Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHostsyes 是否忽略家目录内的 ~/.ssh/known_hosts 这个档案所记录
# Toenable empty passwords, change to yes (NOT RECOMMENDED)允许密码为空登录
PermitEmptyPasswordsno
# Changeto yes to enable challenge-response passwords (beware issues with
# somePAM modules and threads)
ChallengeResponseAuthenticationno
# Changeto no to disable tunnelled clear text passwords
#PasswordAuthenticationyes //是否需要密码认证
#Kerberos options
#KerberosAuthenticationno
#KerberosGetAFSTokenno
#KerberosOrLocalPasswdyes
#KerberosTicketCleanupyes
# GSSAPIoptions
#GSSAPIAuthenticationno
#GSSAPICleanupCredentialsyes
有关在 X-Window 底下使用的相关设定
X11Forwardingyes
X11DisplayOffset10
登录后的项目
PrintMotdno
PrintLastLogyes
TCPKeepAliveyes
#UseLoginno
#MaxStartups10:30:60
#Banner/etc/issue.net
# Allowclient to pass locale environment variables
AcceptEnvLANG LC_*
Subsystemsftp /usr/lib/openssh/sftp-server
# Setthis to 'yes' to enable PAM authentication, account processing,
# andsession processing. If this is enabled, PAM authentication will
# beallowed through the ChallengeResponseAuthentication and
#PasswordAuthentication. Depending onyour PAM configuration,
# PAMauthentication via ChallengeResponseAuthentication may bypass
# thesetting of "PermitRootLogin without-password".
# If youjust want the PAM account and session checks to run without
# PAMauthentication, then enable this but set PasswordAuthentication
# andChallengeResponseAuthentication to 'no'.
UsePAMyes
使用SSH的默认配置,我们就可以由电脑访问树莓派。操作如下:
打开win7桌面下的putty,输入树莓派ip,选择端口22。确认后接口进入,然后输入账户和密码登录即成功如下所示:
然后尝试修改SSH的配置文件,从而改变登录过程。要修改的文件是sshd_config。比如我把显示上次登录时间功能去掉,然后把登录端口又22改为25,同时把登陆后所有打印选项设置成no,然后允许空密码登录。重启树莓派。
这之后我们SSH登录树莓派,当再次选择22端口时,提示如右所示错误:
重新换成25端口,重新登录后如下:
此时登录成功了,并且看不到上次登录日期。这证明,针对SSH配置的更改生效了。
九、多端口登录通信
先使用串口登录,在命令行输入who命令查看所有登录的用户和对应设备如下:
给系统新增一个名为kamisama的账户,并且用这个账户以SSH方式连接上树莓派。同样执行who,可以看到如下结果:
这说明系统中增加了一位名为kamisama的新用户,在pts/0设备上登录了。
下面开始尝试不同登录设备的互相通信(使用Linux write命令)。在串口中输入命令如下:
然后在ssh登录端看到如下内容:
我们在串口登录端写下”Hello message from COM3”并回车发送如下:
此时,在SSH端立即能看到接受到的消息如下
再依次多发几条消息后就能接受到。
如下所示:
反之,也能通过上面的方式从SSH登录端向串口登录端发送消息。
如下:
直到最后,对话结束:
十、配置SAMBA客户端进行共享
首先下载安装SAMBA如下:
然后转入/etc/samba目录下可以看到smb.conf文件:
先备份一下smb.conf文件:
打开smb.conf,把它全部的内容用下面几行文字替换:
其中,path = /tmp对应的是树莓派上的目录, read only = no表明文件不仅可读,还可写。
最后public = yes代表访问权限是开放的。
随后重启samba服务:
然后在win7的网络上我们可以看到树莓派主机KAMISAMA
但此时无法登录,我们先要创建一个samba账号:
再然后就可以登录了:
我们看到了tmp文件夹。
将PC上的testfile.txt和testpicture.jpg文件分别拷贝过去:
然后在树莓派下我们可以查看testfile.txt内容了。
这证明树莓派已经能访问PC上的共享目录。
十一、文件传递
通过SAMBA共享:
通过SAMBA共享的方式就如前所述。树莓派的/tmp目录已经和PC进行了共享,双方都可以随意的读取和写入这个目录内的内容了。
通过sftp传递:
在Win7下载一个FileZilla软件,打开后,输入sftp://树莓派主机IP,以及登录用户名和密码,选择22端口后就可以连接了。使用的是SSH文件传输协议。
登录成功后界面如图:
左边是电脑目录,右边是树莓派的目录。
对于树莓派的文件,我们右键下载:
然后就看到Win7桌面上多出了这个文件:
这张图其实是我在树莓派桌面环境下的一张屏幕截图。
下面尝试从win7发送文件到树莓派:
先在主目录下建立一个名为传输测试目录的文件夹:
然后编写一个TextForTest.txt文件内容如下:
选择上传这个文件到上述测试目录中,成功后如下:
在树莓派上我们已经可以查看这个TextForTest.txt文件内容了:
串口协议传递:
首先要在树莓派下安装minicom:
而在windows则要下载一个超级终端。
先尝试从PC发送文件到树莓派上:
操作如下:
然后选择要发送的文件:
协议可以选择ZModem或者XModem。这里选择ZModem。
点击Start就可以开始传输了。
同时,我们通过远程桌面进入树莓派。
输入minicom命令后得到如下所示界面:
设置传输和接收目录都为/home/pi
然后在如下所示界面中选择R,进行文件接受:
选择ZModem:
随后看到树莓派开始接受文件了:
由于速度不快,我们等待一段时间。终于提示接收完成。而在超级终端上我们收到了传输完成的提示:
这个时候我们在/home/pi目录下发现了Test.txt文件,并查看内容发现没有错误:
可见从PC通过串口发送文件到树莓派成功。
然后我们尝试从树莓派通过串口传送文件到PC。
现在树莓派的minicom界面选择要发送的文件:
确定后即可进入传送界面。PC上的超级终端则选择接受文件。
过一段时间后,看到了传输成功的提示。并且在Win7下设定好的目录下就能找到被传输过来的c++.cpp文件。
综合比较上面三种传输方法,从速度上说sftp速度最快,串口传输最慢(稍微大点的文件就不能用这个方法了)。从安全性说,sftp采用SSH协议,安全可靠。而串口传输相对不稳定(我试了几次,有时候会失败)。而且sftp易用,设置简单。至于SAMBA,设置相对比较麻烦。
所以综上,我认为最理想的传输方式是sftp。
十二、交叉编译
首先在ubuntu 14.04 32位版本的虚拟机中下载交叉编译工具链(从CSDN上下载的)并且解压。
解压后修改home目录下的.bashrc文件,结尾加上交叉编译工具链的路径
然后,尝试写一个简单的浮点运算指令:
调用交叉编译工具进行编译:
可以发现编译成功,生成了mydouble文件:
尝试运行mydouble,提示执行格式错误(因为arm型CPU上才能执行):
通过sftp把这个文件发送给树莓派:
在树莓派上给这个文件加上执行权限:
运行:
这说明了整个交叉编译过程是成功的。生成的可执行程序时ARM的可执行文件。
十三、树莓派自己的编译环境
C语言:
进入远程桌面后,编写一个求阶乘的C程序:
然后编译运行:
C++:
编写一个测试用的C++文件:
可见编译后运行成功。
Java:
先写一个简单的java文件:
先使用javac生成一个class文件:
然后运行Java虚拟机:
可以运行成功。
Pyhton:
写一个简单的python文件:
执行结果如下:
十四、远程图形桌面
尝试了Windows自带的远程桌面访问方式。
打开window7的Remote Desktop Connection程序,输入树莓派(已经安装xrdp,其配置文件就是之前提到的SSH配置文件)的ip
然后出现登录界面。
这证明我们成功通过网络远程连接上了树莓派。输入账号和密码后提示登录成功,并且看到了如下所示的树莓派桌面。
- Lab 1:树莓派开玩
- Lab 1
- LAB 1
- [Lab Week] 1->2
- Lab 1 question
- OIM Training Lab 1
- Lab 1: Buffer Overflows
- Lab 1 : Butter Overflow
- 嵌入式LAB 1:启动
- Lab 1:配置环境
- xv6-lab(1)--shell
- # Software-eng lab 1
- Lab 1:MapReuce
- Lab
- LAB
- [1st Lab Summer] W1
- Lab 1: Booting a PC
- CSAPP: Bomb Lab(1)
- 随想(二)-- 基于负载均衡和本地锁的分布式锁
- apk签名
- 验证篇(5.2)-01. 域服务器认证 ❀ 飞塔 (Fortinet) 防火墙
- mybatis映射 一对一、一对多、多对多高级映射
- Android RSA DES等几种加密算法
- Lab 1:树莓派开玩
- AYIT2016省赛集训第六周周一赛 A近似回文词(字符串)
- 大数据处理过程之核心技术ETL详解
- RegOpenKeyEx调用失败返回5
- android 控件 卡片 CardView
- 文本框输入时马上弹出搜索界面
- php安全篇值过滤用户输入的人参数
- DedeCms如何生成栏目以及静态的html文件
- Android 获取内存使用状况的总结