参看:ubuntu12.04配置手册
一、vi功能增强
1.1vi中不能正确使用上下箭头解决方法sudo apt-get install vim (安装完整版本的VI)
1.2 ubuntu里面颜色VI的个性设置
新建/etc/vim/vimrc.local,里面添加内容如下(仅供参考):
set nu
set nocp
set ru
set hls
set is
syntax on
set backspace=indent,eol,start
set sw=4
set ts=4
set sm
set cin
colo slate
set guifont=Courier\New\10
map<F3>!g++% -o mainutocmd FileType python setlocal et sta sw=4 sts=4
Vi对中文的支持:
新建用户目录下的.vimrc$vi~/.vimrc
添加如下内容:
let &termencoding=&encoding
set fileencodings=utf-8,gbk,ucs-bom,cp936
在vi的命令行模式下输入:wq!保存退出。
二、安装SSH和telnet服务器
安装ssh服务器
1.安装ssh服务器端
$ sudo apt-get install openssh-server
2.启动ssh-server
$ sudo /etc/init.d/ssh start(或者restart)
出现以下提示表明server sshd已启动:
* Starting OpenBSD Secure Shell server sshd [ OK ]
3.在另外一台机器登录服务器
$ ssh -l zslf 172.17.101.187
-l参数是指定登陆用户
会提示输入密码:
zslf@172.17.101.187's password:
输入登录密码后,登陆成功则会进入登陆电脑的命令行,就可以远程操作登陆机器了。
ubuntu12.04中默认安装了ssh服务器,所以可以直接使用命令ssh来登陆机器。
SSH的英文全称是SecureSHell。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好 处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的"通道"。 SSH客户端与服务器端通讯时,用户名及口令均进行了加密,有效防止了对口令的窃听。
扩展参看:搭架SSH服务器学习笔记
telnet远程控制
ubuntu安装telnet服务
1. sudo apt-get install xinetd telnetd
2. 安装成功后,系统会显示有相应得提示
运行:
sudo vi /etc/inetd.conf 并加入以下一行
telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd
3. sudo vi /etc/xinetd.conf并加入以下内容:
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/
defaults
{
# Please note that you need a log_type line to be able to use
log_on_success
# and log_on_failure. The default is the following :
# log_type = SYSLOG daemon info
instances = 60
log_type = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST
cps = 25 30
}
includedir /etc/xinetd.d
4. sudo vi /etc/xinetd.d/telnet并加入以下内容:
# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}
5. 重启机器或重启网络服务sudo /etc/init.d/xinetd restart
然后看下图登录:
三、启用root密码
为了启用root帐号(也就是设置一个口令)使用:sudo passwd root
如何在终端机模式下切换到root身份?
sudo -s -H
Password: <在这注明您的密码>
【小知识】
缺省禁止root的好处包括了以下内容 :
起初Ubuntu团队希望安装尽可能的简单.不使用root,在安装期间的两个用户交互步骤可以省略.(科林·沃森) 更进一步,如果在安装中使用root,用户将被要求永远记住他们选择的密码--即使他们很少使用到它.Root密码经常被对Unix安全模型不熟悉的用户忘记.(马特·齐默曼) 它防止了缺省登录时"我能做任何事情"--在较大的变化发生之前,你将被提示输入口令,这可以使你考虑你这样做的结果.如果你作为root登录,你可以删除一些"没用的文件夹"并且不会意识到你正处于错误的目录,那时已经太晚了.它是在Unix下长时间使用"su-command-^D"练习的情况下,代替一直呆在rootshell--除非你做严重的系统维护(那时你仍然可以使用"sudosu").(吉姆·奇塔姆和安德鲁·索巴拉)Sudo增加了运行命令的日志记录(在/var/log/auth.log).如果你陷入困境,你总是可以返回并看见那些运行的命令.(安德鲁·Zbikowski)
四、安装FTP服务
sudo apt-get install vsftpd编辑/etc/vsftpd.conf,将anonymous_enable, local_enable,write_enable改成如下形式(如果前面有#号,需要将#号去掉):
anonymous_enable=NO
local_enable=YES
write_enable=YES
查看是否安装:dpkg -l vsftpd
启动vsftpd服务:sudo service vsftpd start
停止vsftpd服务:sudo service vsftpd stop
重新启动vsftpd服务:sudo service vsftpd restart
扩展参看:4步win7下简单FTP服务器搭建
五、Ubuntu 网络环境静态 IP 的设置和 SAMBA 的设置
Ubuntu 网络环境静态 IP 的设置
由于 Ubuntu 的默认安装状态的 IP 是 DHCP,而我们 TFTP SERVER, NFS SERVER, SAMBASERVER 这些网络环境都要求是固定的静态 IP 模式,所以我们先设置静态 IP,编辑/etc/network/interfaces 的文件。
#gedit /etc/network/interfaces
在 auto lo
iface lo inet loopback
的后面加上:
auto eth0
iface eth0 inet static
address 192.168.1.252
netmask 255.255.255.0
gateway 192.168.1.1
broadcast 192.168.1.255
然后保存退出,重启 networking:
#/etc/init.d/networking restart
broadcast广播的意思,在IP地址中,如果最后一个数字是255,则一定是一个广播地址。
设置 DNS
在终端里输入下面的命令:
sudo vi /etc/resolv.conf
打开文档后,找到现有的 DNS 记录,使用“#”注释掉,然后添加新的 DNS 记录:
nameserver x.x.x.x 按照该格式
如:使用谷歌的 DNS 8.8.8.8 8.8.4.4
nameserver 8.8.8.8
nameserver 8.8.4.4
如果重启虚拟机会自动修改DNS 服务器,我们把这些文件进行锁定。
自动修改DNS服务器会出现:
如果ping域名的时候出现ping:unknown host xxx.xxx的错误。
使用如下的代码进行锁定操作:
sudo chattr +i /etc/resolv.conf
如果需要解锁,使用如下的代码:
sudo chattr -i /etc/resolv.conf
进行文件锁定的时会遇到如下问题:
root@zfls:~# chattr +i /etc/resolv.conf
chattr: Operation not supported while reading flags on /etc/resolv.conf
解决步骤如下:
root@zslf:~# dpkg -l | grep resolv
root@zslf:~# apt-get remove resolvconf
root@zslf:~# reboot
root@zslf:~# vim /etc/resolv.conf
root@zslf:~# chattr +i /etc/resolv.conf
问题解决。
ubuntu12.04下配置samba,实现windows xp访问Ubuntu
参看:Ubuntu 14.04 文件服务器--samba的安装和配置
5.1. .实验准备
首先更新software sources,找到最快的源执行:$sudo apt-get update
5.2.samba的安装
#sudo apt-get install samba#sudo apt-get install cifs-utils
#sudo apt-get install system-config-samba
5.3.创建Samba配置文件
1.保存现有的配置文件$sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
2.打开现有的文件
$sudo vim /etc/samba/smb.conf
在smb.conf最后添加
[username]
path = /home/username
available = yes
browseable = yes
public = yes
writeable = yes
如果还想添加其他目录作为共享目录,相同原理,如下:
前提:ubuntu12.04没有tftpboot目录,如果想共享tftpboot 目录,需要先新建tftpboot目录。
[tftpboot]
path=/tftpboot
available=yes
browseable=yes
public=yes
writable=yes
[opt]
path=/opt
available=yes
browseable=yes
public=yes
writable=yes
5.4.创建samba帐户
$sudo smbpasswd -a USERNAME (USERNAME换成你的用户名)会要求你输入samba帐户的密码New SMB password:
Retype new SMB password:
[如果没有第四步,当你登录时会提示session setup failed:NT_STATUS_LOGON_FAILURE]
5.5.重启samba服务器
$sudo /etc/init.d/smbd reload(修改过smb.conf的话要执行一次)$sudo /etc/init.d/smbd restart
5.6.关闭虚拟机防火墙,否则无法通过。
# ufw disable
5.7.测试
可以到windows下输入ubuntu ip试一下了,在“我的电脑”或者在“运行”处输入"\\+Ubuntu机器 的ip" 如:\\192.168.7.100
需要注意的是:
六、安装NFS服务器
6.1 安装NFS server端口映射和服务
$sudo apt-get install nfs-kernel-server先重启rpcbind服务:
$sudo /etc/init.d/rpcbind restart
注意,选取 rpcbind 而非 portmap
编辑/etc/exports,添加目标系统的根文件系统映射目录,假如目标系统的根文件系统最后映射到/opt/filesytem,则/etc/exports内容如下:/opt/filesystem *(subtree_check,rw,no_root_squash,async)
*:指定IP,*代表所有客户端无论IP是多少都可以访问该目录
rw, 读写权限
sync, 同步
no_root_squash:权限
$sudo exportfs -a (最好每修改过/etc/exports后需要执行一次)
扩展: # exportfs [-aruv]
参数说明如下。
1)-a:全部挂载(或卸载)/etc/exports文件内的设定。
2)-r:重新挂载/etc/exports中的设置,此外同步更新/etc/exports及/var/lib/nfs/xtab中的内容。
3)-u:卸载某一目录。
4)-v:在export时将共享的目录显示在屏幕上。
下面是nfs的默认目录和相关属性
ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
async NFS在写入数据前可以相应请求
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
hide 在NFS共享目录中不共享其子目录
no_hide 共享NFS目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squash root用户具有根目录的完全管理访问权限
anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID
no_root_squash:登入到NFS主机的用户如果是ROOT用户,他就拥有ROOT的权限,此参数很不安全,建议不要使用。我在使用nfs的时候发现即使rw权限仍然不能在nfs根目录下创建文件,这个就需要这个参数
root_squash:在登入NFS主機使用分享之目录的使用者如果是root时,那么这个使用者的权限將被压缩成为匿名使用者,通常他的UID与GID都会变成nobody那个身份;
all_squash:不管登陆NFS主机的用户是什么都会被重新设定为nobody。
anonuid:将登入NFS主机的用户都设定成指定的user id,此ID必须存在于/etc/passwd中。
anongid:同anonuid ,但是变成group ID就是了!
sync:资料同步写入存储器中。
async:资料会先暂时存放在内存中,不会直接写入硬盘。
insecure 允许从这台机器过来的非授权访问。
接下来就是要在开发板上启动挂载nfs了,首先要配置一下内核。
make menuconfig
File Systerm ---> Network File Systerm 下选中NFS file systerm support 更重要的是要选中 Root file systerm support。
这样内核就支持nfs启动了。
接下来最重要的就是内核参数了。
关于nfs的内核启动参数如下
root=/dev/nfs nfsroot=PC-ip:nfspath ip=local-ip:PC-ip:gateway:netmask:alias:net-port:off
gateway写成和PC-ip一样就可以。
比如我的参数如下:
root=/dev/nfs rw nfsroot=172.17.101.18:/home/work/nfsroot ip=172.17.101.190:172.17.101.18:172.17.101.18:255.255.255.0:ubuntu:eth0:off
这样启动nfs就自动挂载为根文件系统了。
6.2测试NFS
首先建立一个nfs测试的挂载点(目录):$sudo mkdir /mnt/nfs
$mount ubuntuIP:nfsdir /mnt/nfs -t nfs
比如我的机器: $mount -t nfs 192.168.7.98:/opt/filesystem /mnt/nfs
如果挂载成功,则表示NFS配置成功。
卸载:sudo umount /mnt/nfs
mount指令说明:
1. 要Mount对象的文件系统类型
2. 要Mount对象的设备名称
3. 要将设备Mount到哪个目录去
七、安装TFTP服务,有多种方法:
第一种方法:
7.1 TFTP服务的设置
$sudo mkdir /tftpboot$cp zImage /tftpboot [注:zImage是我用于测试的一个文件, 你可用别的随意文件替代]
$sudo chmod 777 /tftpboot -R
$sudo apt-get install tftp tftpd
$sudo apt-get install openbsd-inetd
$sudo vi /etc/inetd.conf
在里面填入如下一行:
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot
新建/etc/default/tftpd-hpa
#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS=-OPTIONS=-"l -s /tftpboot"
$sudo /etc/init.d/openbsd-inetd reload
$sudo /etc/init.d/openbsd-inetd restart
7.2 TFTP服务测试
在用户自己目录下建议一个目录,将/tftpboot下存在的文件下载到此目录下$tftp ubuntu_IP (VMWARE虚拟机IP地址,比如我的是 192.168.7.98)
tftp>getuImage (如果TFTP正常配置,这个能比较快就下载完毕)(uImage是一个在/tftpboot下面的任意一个拿来做测试用的数据,我这里用的是内核镜像uImage)
tftp>quit 可以看到,在当前目录下有我们通过TFTP下载的文件uImage了。
以后每次启动系统的时候,要执行一下:
$sudo /etc/init.d/openbsd-inetd restart
第二种方法:常用
安装、配置tftp服务
1.安装TFTP软件
sudo apt-get install tftpd-hpa
sudo apt-get install tftpd-hpa
sudo apt-get install tftp
tftp-hpa是客户端,tftpd-hpa是服务器端
2.建立tftpboot目录,作为服务器的目录
sudo mkdir /tftpboot
释放权限:(服务器目录,需要设置权限为777,chomd 777)
sudo chmod 777 /tftpboot
3.配置TFTP服务器
sudo gedit /etc/default/tftpd-hpa
将原来的内容为:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
#TFTP_DIRECTORY="/tftpboot" #修改为自己需要的路径,与上面创建的目录一致
TFTP_ADDRESS="0.0.0.0:69"
#TFTP_OPTIONS="--secure" #可以通过查看mantftpd,看各种参数的意义
#修改为
TFTP_DIRECTORY="/home/shenhao/tftpboot"
TFTP_OPTIONS="-l -c -s"
3.重新启动TFTP服务
sudo service tftpd-hpa restart
4.测试下
$ cd ~/tftpboot echo "hello tftp service">>a.txt
$ echo "hello tftp service,put to tftp serive">>b.txt
$ tftp localhost
tftp> get a.txt
tftp> put b.txt
tftp> quit
其中get是取得文件,put是将文件上传到TFTP服务器上。
第三种方法:
xinetd版本
配置tftp服务的步骤:
1、安装相关软件包:tftpd(服务端),tftp(客户端),xinetd
sudo apt-get install tftpd tftp xinetd
2、建立配置文件
在/etc/xinetd.d/下建立一个配置文件tftp
sudo vi tftp
在文件中输入以下内容:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot -c
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
保存退出
3、建立tftp服务文件目录(上传文件与下载文件的位置),并且更改其权限
sudomkdir /tftpboot
sudochmod 777 /tftpboot -R
4、重新启动服务
sudo /etc/init.d/xinetd restart
至此tftp服务已经安装完成了,下面可以对其进行一下测试。(假设在当前目录下有一个测试文件test.txt)
$tftp 127.0.0.1
tftp> put test.txt
Sent 1018 bytes in 0.0 seconds
tftp> get test.txt
Received 1018 bytes in 0.1 seconds
tftp> quit
通过get命令,可以把当前目录下的test.txt文件,通过tftp上传到它的服务文件目录。这时,在/tftpboot下面会出现test.txt文件。通过put命令,可以从/tftpboot下,下载test.txt文件。这样就验证了tftp服务配置的正确性。当文件上传与下载结束后,可以通过quit命令退出。
严格按照以上步骤配置tftp服务,一般都可以成功。如果出现无法get或者put的时候,可以查看一下防火墙是否关闭。
注意关闭防火墙: service iptables stop
tftp命令参看:Busybox下tftp命令使用详解
上面tftp讲了好多种,然并卵,我一般不使用上面的任何一种,而是使用Windows下的tftpd32:
使用方法:
操作方法:
从PC 上传文件hello.c 到 开发板
tftp -g -r hello.c 192.168.2.192 (ps: 192.168.2.192 为PC 的IP地址)
从开发板 上传文件 hello.c 到 PC
Tftp -p -r hello.c 192.168.2.192 (ps: 192.168.2.192 为PC 的IP地址)
八、安装工具链
执行 $sudo apt-get install cvs build-essential automake autoconf libtool bison flex$sudo apt-get install libncurses5-dev
九、添加库函数手册
ubuntu默认是没有安装c语言的库函数man手册的,所以你在manperror和sendto之类的函数时会显示没有相关文档的问题,这个问题让我郁闷了我好久。解决方法:$sudo apt-get install binutils-doc cpp-doc gcc-4.4-doc gcc-doc glibc-doc libstdc++6-4.4-doc stl-manual cpp-4.4-doc manpages manpages-dev
十、安装gftp服务
安装gftp: sudo apt-get install gftp
然后 tarena@ubuntu:~$ gftp 出现如下界面.
十一、安装kermit服务
以上的方法基于虚拟机上的Ubuntu来操作的
如果是 Ubuntu操作系统和开发板数据传输的话建议使用kermit
[功能]
一个串口传工具。可以传送文件。 用于pc串口通信。
[描述]
C-kermit是一款集成了网络通信、串口通信的工具,它有如下多种功能:
1.支持kermit文件传输协议
2.自定义了一种脚本语言,它强大而易于使用,可用于自动化工作
3.无论是网络通信,还是串口通信,操作是一致的,并支持多种硬件、软件平台
4.有安全认证、加密功能
5.内建FTP、HTTP客户端功能及ssh接口
6.支持字符集转换
[举例]
*安装
$sudo apt-get install ckermit
这样就安装了c-kermit
*配置
$vi $HOME/.kermrc
...
这里,是在$HOME主目录下,建立.kermrc配置文件,文件内容是:
set line /dev/ttyS0
set speed 115200
set carrier-watch off
set handshake none
set flow-control none
robust
set file type bin
set file name lit
set rec pack 1000
set send pack 1000
set window 5
这里,kermit在启动时会查找~/.kermrc文件,调用里面的命令来初始化kermit。只要将你所需的命令写到~/.kermrc文件里,启动后就不用手动敲这些命令配置了。
*运行的时候直接进入命令模式:
$kermit
这里没-c就进入默认的命令模式了。
kermit在启动时会查找~/.kermrc文件,调用里面的命令来初始化kermit。只要将你所需的命令写到~/.kermrc文件里,启动后就不用手动敲入命令配置了。
*运行的时候,直接进入非命令模式:
$kermit -c
这里,加上-c表示进入非命令模式,相当于在命令模式下面运行了connect或者c.在连接好了板子之后,这样就可以连接到串口上面了,当然不要忘记将设备打开,否则你敲入东西的时候是没有反应的。
*进入命令模式,步骤如下:
1)输入"[Ctrl]\".
2)输入"c".
这样进入kermit的命令模式可以进行各种命令(支持TAB补全),例如HELP可以查看帮助,输入"?"列出所有命令。
*从命令模式退回com终端:
输入"connect".
或输入"c".
这样又切换会了串口界面(例如在uboot下面)。
*在命令模式下查看当前主机目录文件:
输入"ls".
*在命令模式下查看当前路径:
输入"pwd".
*在命令模式下进入指定的主机目录/home/test:
输入"cd /home/test".
*传输文件file到板子的flash上面:
输入"send file".
这里,在命令行下的发送命令就是send。如果之前在Uboot下使用了loadb 0xc0008000进入的命令模式,那么发送的文件将会被放在了这个地址上面。
*退出串口程序:
输入"exit".
当然,这里指的是在命令行下面。
[其他]
*一个简单的完整例子:
启动板子uboot之后,我想传一个文件/root/test.sh到地址0xc0008000
步骤如下:
1)$kermit -c
这样,就连接到串口上面了。
2)输入"loadb 0xc0008000"
3)输入"[Ctrl]\"
4)输入"c"
这样进入命令模式.
5)输入"send /root/test.sh"
6)输入"connect".
这样就传完了。ckermit好像只支持kermit协议。
*注意,在网上,据说:
mincom和ckermit均不带xmodem和zmodem之类的协议,所以需要安装lrzsz这个软件,否则就会遇到传输不了文件或者timeout之类的错误。
下载和解压lrzsz后,进入目录执行 ./configure --prefix=/usr/local/lrzsz ,然后make,make install 最后建立软链接。
这个说法使用的配置文件是:
set line /dev/ttyS0 //COM1
set speed 115200
set carrier-watch off
set handshake none
set flow-control none
robust
set file type bin
set file name lit
set rec pack 1000
set send pack 100000 //这里可以改大一点,方便下载内核
set window 5
set protocol xmodem //vivi use xmodem
set protocol zmodem //board Linux usually use rz/sz
其他linux的串口工具有minicom,cutecom等.
十二、使用 SecureCRT 可在SecureCRT上登录 Ubuntu
配置SecureCRT
1.点击快速连接
2.配置如下:
协议采用SSH2
主机名:192.168.1.8
用户名:tarena
其他用默认即可
3.提示输入密码,保存密码
4.点击SCRT菜单栏:
选项->会话选项->仿真->终端:ANSI
并且将使用颜色方案的勾打上;
选项->会话选项->外观->字符编码:UTF-8
字体大小自己可以按照喜好来设置
5.关闭SCRT,重新打开SCRT,选择上一次配置的
设置完成。 再次进入SecureCRT如弹出如下提示:
点击 接收并保存。
然后又会弹出如下提示: 填写你的Ubuntu密码
最后 提示成功进入Ubuntu: