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环境下查看大小只有50M了。进入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远程登录树莓派的桌面。

操作如下:

打开window7Remote 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 支持SSH1SSH2协议

#   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.txttestpicture.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,提示执行格式错误(因为armCPU上才能执行):

通过sftp把这个文件发送给树莓派:

在树莓派上给这个文件加上执行权限:

运行:

这说明了整个交叉编译过程是成功的。生成的可执行程序时ARM的可执行文件。

 

十三、树莓派自己的编译环境

C语言:

进入远程桌面后,编写一个求阶乘的C程序:

然后编译运行:

 

 

C++

编写一个测试用的C++文件:

 

 

 

可见编译后运行成功。

 

Java:

先写一个简单的java文件:

先使用javac生成一个class文件:

 

然后运行Java虚拟机:

可以运行成功。

 

Pyhton:

写一个简单的python文件:

执行结果如下:

 

十四、远程图形桌面

尝试了Windows自带的远程桌面访问方式。

打开window7Remote Desktop Connection程序,输入树莓派(已经安装xrdp,其配置文件就是之前提到的SSH配置文件)的ip

然后出现登录界面。

这证明我们成功通过网络远程连接上了树莓派。输入账号和密码后提示登录成功,并且看到了如下所示的树莓派桌面。

 

 

 

0 0