本文介绍在Linux系统(ubuntu 16.04)中搭建各种服务器的方法,包括NFS、samba、ssh、telnet。另外也会提及交叉编译器的安装。
一、ssh服务器
Linux(包括服务器、设备端)开启SSH,使用如ssh secure shell client等客户端工具连接、登陆,找到对应目录,可实现相互拷贝。
1、安装:
1 | sudo apt-get install openssh-server |
2、重启:
1 | sudo/etc/init.d/ssh restart |
3、修改端口
SSH默认服务端口为22,可修改为其它端口,如220,修改配置文件/etc/ssh/sshd_config,将Port 22
改为Port 220
即可。
附:SSH Secure Shell Client无法连接ubuntu解决方法
1、编辑/etc/ssh/sshd_config配置文件。
1.1、
把PermitRootLogin prohibit-password
改为 PermitRootLogin yes
1.2、最后添加:
1 | Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,3des-cbc,arcfour128,arcfour256,arcfour,blowfish-cbc,cast128-cbc MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96 KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1,curve25519-sha256@libssh.org |
2、重启ssh服务
1 | sudo service ssh restart |
再次使用SSH Secure Shell Client即可连接。
二、samba服务器
Linux主机搭建samba服务器后,可以使用windows连接Linux,并建立硬盘映射,这样,就可以将主机当成Windows一个硬盘使用。
1、samba的安装:
1 | sudo apt-get install samba |
注:如果安装有错误,则要更新源:
1 | sudo apt-get update |
2、创建共享目录(可选):
1 | mkdir /home/latelee/share |
3、创建Samba配置文件:
3.1. 保存现有的配置文件(可选)
1 | sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak |
3.2. 修改现配置文件
1 | sudo vim /etc/samba/smb.conf |
在smb.conf最后添加
1 | [home] # 用于显示在windows的名称 |
注:格式如上,路径根据实际情况改
4、创建samba帐户
1 | sudo touch /etc/samba/smbpasswd (此步不要也行) |
注:如果没有第四步,登录时会提示 session setup failed: NT_STATUS_LOGON_FAILURE
5、重启samba服务器
1 | fc10系统: |
注:不同版本路径、名称可能不同,根据实际情况尝试。
6、测试 (不要也行)
1 | smbclient -L //localhost/共享目录 |
7、使用windows连接
在windows地址栏中输入:\\<虚拟机IP地址>\home
,如:\\192.168.28.131\home
,然后输入账号密码即可。
三、telnet服务器
1、安装:
默认源没有xinetd等软件包,所以要更新源:
1 | sudo apt-get update |
2、配置
修改文件 /etc/xinetd.conf
(xinetd默认为此文件):
1 | # new add by Late Lee |
3、修改端口
修改/etc/services
,将telnet的23改为其它的不冲突的端口号,如250。
4、重启
1 | /etc/init.d/xinetd restart |
5、登陆
命令:
1 | telnet ip 端口号 |
6、允许root登陆
ubuntu不允许root用户用telnet来登陆,但可以使用非root用户,与ssh类似。
如果一定要用root登陆,方法有2种:
6.1、将/etc/securetty文件改名
6.2、在/etc/securetty文件最后添加
1 | # add pts by Late Lee |
说明: securetty文件规定了root可以从哪些终端登陆,像ssh、telnet等是用伪终端pts,另外该文件还有如标准终端的tty*(按Ctrl+Alt+数字登陆)、串口ttyS、ttyUSB、ttyO*(OMAP系的串口),等等
四、NFS服务器
使用nfs挂载之后,可以将远程主机目录作为本地目录那样使用。十分方便。
1、安装
1 | sudo apt-get install nfs-kernel-server |
注:如果失败,可以再尝试一次,或者用命令:
1 | sudo apt-get update |
2、配置
编辑文件/etc/exports
,加入下列语句:
1 | [共享目录绝对路径] *(rw,no_root_squash,no_all_squash,sync) |
例如:
1 | /opt *(rw,no_root_squash,no_all_squash,sync) |
注:可添加多个共享目录
3、启动NFS服务
1 | sudo /etc/init.d/nfs-kernel-server restart |
4、ARM-Linux挂载测试
命令示例:
1 | mount -t nfs -o nolock 172.18.18.18:/opt /mnt/nfs |
说明,最好添加-o nolock
选项,否则可以挂载不成功。
五、交叉编译器安装
交叉编译器种类很多,版本也很多,所以,此处只列出一般的方法。
1、获取
获取交叉编译器的方式有很多种,如果购买了开发板,一般会提供光盘(或网盘压缩包),里面有交叉编译器,如果没有,可以到官方网站下载(国内有的厂家权限管理较严,必须购买板子才提供账号)。也可以在网上搜索得到。下面是笔者找到的几个地址:
http://ftp.arm.linux.org.uk/pub/armlinux/toolchain/ 注:该地址的版本非常低,是十几年前的版本。
在ubuntu下,可以直接使用apt
来安装。比如:
1 | sudo apt-get install -y gcc-arm-linux-gnueabi g++-arm-linux-gnueabi # 普通版本 |
2、安装
安装交叉编译器非常简单,就是设置环境变量PATH的值,即将交叉编译的bin目录设置到PATH里即可。但是目前有很多芯片的开发环境比较复杂(或者将很多库、功能集中在一直,或者依赖工具、库太多),需要专门的脚本才能设置好。这里暂时不涉及。
设置PATH的格式是:export PATH=<交叉编译器bin目录的绝对路径>:$PATH
。一般在~/.bashrc
文件最后添加即可。添加完成后,需要执行source ~/.bashrc
命令更新环境变量。当然,如果是团队协作,可以在/etc/profile
中添加,这样所有登陆用户都可用。
下面是笔者的设置示例(在~/.bashrc
文件末尾,笔者有2个交叉编译器,所以设置了2行):
1 | export PATH=/home/latelee/linux_ebook/arm-unknown-linux-gnueabihf/bin:$PATH |
注:~
表示用户的home目录,比如在笔者虚拟机上就表示/home/latelee
。
3、验证
在命令行输入<交叉编译器名称> -v[或--version]
即可查看编译器版本,也可验证是否正确安装。
直接输入arm
,再按2次Tab
键,输入y
即可查看所有以arm
开头的命令。
笔者在虚拟机上安装了2个,如下:
1 | $ arm-fsl-linux-gnueabi-gcc --version |
arm-fsl-linux-gnueabi-gcc
是由Linaro
出口的,而arm-unknown-linux-gnueabihf-gcc
则是由笔者使用crosstool-ng
编译出来的。
4、使用
交叉编译器的使用与其它编译器没有什么不同。以Makefile为例,可以在Makefile文件中添加或修改CROSS_COMPILE选项,也可以在make的时候手动指定CROSS_COMPILE的值。下面是编译内核的一个例子:
1 | make zImage CROSS_COMPILE=arm-fsl-linux-gnueabi- ARCH=arm |
注:CROSS_COMPILE是默认的交叉编译器前缀。
5、交叉编译器小知识
每个交叉编译器的名称都会有所不同,而且名称都比较长。具体到交叉编译器的bin目录查看。但是,一般情况,都会提供arm-linux-gcc
这样的简称——其实它是一个链接文件。
交叉编译器的名称规则为<前缀>-<工具名称>
。简述如下:
1、前缀如下:<架构>-<CPU核心/或芯片厂家>-<所运行的操作系统>-<编译器库和目标镜像规范>
如arm-fsl-linux-gnueabi-
分别表示:arm芯片,飞思尔卡平台(fsl),生成的文件运行在linux系统,接口规范为gnueabi
。
2、工具名称表示binary utils
,比如编译器为gcc
,调试器为gdb
,链接器为ld
,等等。
综合来说,就构成很多不同的工具,列举如下:
1 | $ arm-fsl-linux-gnueabi- |
注:关于abi、eabi、gnueabi、gnueabihf等的知识,自行了解。
李迟 2017.7.8 周六 傍晚 2019.7.20 周六 补充