这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 【每日总结】liklon从零学嵌入式Linux

共56条 6/6 |‹ 1 2 3 4 5 6 跳转至
高工
2014-08-06 22:55:16     打赏
51楼

第二炮   吐槽一下买了龙芯笔记本8089b之后的“悲惨经历”


      想一想距离发上一炮以及好几天了...在这期间,团购了一款龙芯8089b的笔记本,主要目的是来体验一下国产CPU以及LINUX系统。

     下单后等了两个多星期终于收到了白色的小本。一开机就是红旗linux系统....我也不管了,先开机爽了两把。东搞西搞最后是啥事都没干,,还一不小心把原有的火狐浏览器给卸载掉了。卸载掉浏览器后就坑大了,,,花了4个多小时去装一个浏览器...没有成功,去红旗的官网上下载资料,啥都下载不成功。没办法已经把系统整的乱起八糟了。开始琢磨着换系统....在龙芯吧里看到了个教程是离线安装debian。那就跟着教程开始整呗,,,一开始就让把U盘分区,那我就跟着做,开始U盘分区。没办法,菜鸟注定悲剧,U盘被俺整坏了....最后只能开始动用在论坛用积分换来的U盘。干脆就不分区了,直接上.....结果证明不分区也是可以行的,当时就有抓狂啊。。。

      最后终于安装上了debian.......

      以为可以松口气了,就想着在上面安装个ARM-LINUX的交叉编译器呗,直接在上面开发OK6410多好呀。菜鸟的想法总是单纯可爱的呀。。将之前在虚拟机中安装的交叉编译工具链直接拖到龙芯电脑上安装,,安装完成后就迫不及待的去编译一个小程序试试,结果就呵呵了....无法执行的二进制文件....以为是没有安装好,就开始在网上下载一些其他的交叉编译工具来安装。都统统失败....盲目的试了一通之后花了2天时间额,哎,觉得好好查查原因。龙芯的CPU架构是MIPS 64位。。我安装的交叉编译工具链是针对于X86架构的,32位的。我也不知道是什么原因,感觉是这里的问题,于是在网上搜索针对于龙芯架构的交叉编译工具,又花了两天,毫无结果...

     折腾了一个多星期后,对于在龙芯笔记本上去安装个ARM-linux交叉编译工具链的想法彻底绝望了。但是发现了一点,在龙芯上面使用vi编辑器比较顺手,而我的苦逼海尔电脑上的虚拟机运行起来之后卡的要命。决定在龙芯笔记本上编写代码,在虚拟机中编译....

     为了让两个linux系统的电脑互相传文件嘛....第一个想法就是把一台电脑作为ftp服务器....看起来挺简单的,操蛋的是这两台电脑就是不能连接上..具体问题还在分析中。

     最后就把希望寄托在了scp指令上...虽然期间遇到了一些麻烦,但是scp指令没让我失望...就在刚才,终于传送成功了


     ------------吐槽结束啦,之后将遇到的问题以及解决的方法分享出来,希望得到大伙的指点




高工
2014-08-06 23:29:16     打赏
52楼

第三炮  两台linux电脑之间传输文件(一)


       在上一楼的吐槽中也了解到现在在琢磨在两台电脑之间传输文件。现在将电脑插上网线虚拟机的网络设置为桥接。龙芯笔记本也是通过网线连接到路由器上。

分别用ifconfig查看ip吧。 

    虚拟机的IP是:192.168.1.101

    龙芯小本的是:192.168.1.105  

scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。

可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,

在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。

1.命令格式:

scp [参数] [原路径] [目标路径]

2.命令功能:

scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。

3.命令参数:

-1  强制scp命令使用协议ssh1  

-2  强制scp命令使用协议ssh2  

-4  强制scp命令只使用IPv4寻址  

-6  强制scp命令只使用IPv6寻址  

-B  使用批处理模式(传输过程中不询问传输口令或短语)  

-C  允许压缩。(将-C标志传递给ssh,从而打开压缩功能)  

-p 保留原文件的修改时间,访问时间和访问权限。  

-q  不显示传输进度条。  

-r  递归复制整个目录。  

-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。   

-c cipher  以cipher将数据传输进行加密,这个选项将直接传递给ssh。   

-F ssh_config  指定一个替代的ssh配置文件,此参数直接传递给ssh。  

-i identity_file  从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。    

-l limit  限定用户所能使用的带宽,以Kbit/s为单位。     

-o ssh_option  如果习惯于使用ssh_config(5)中的参数传递方式,   

-P port  注意是大写的P, port是指定数据传输用到的端口号   

-S program  指定加密传输时所使用的程序。


试着传输一个文件:

liklon@liklon-laptop:/media/sf_liklon-linux$ scp ./google-chrome-stable_current_i386_35.0.1916.114.deb root@192.168.1.105:/liklon-arm
ssh: connect to host 192.168.1.105 port 22: Connection refused
lost connection
liklon@liklon-laptop:/media/sf_liklon-linux$ 




发送有错误,,,错误是没有连接上。查资料后解决的方法如下:

1.如果没有安装ssh可以先执行下面两条指令

liklon@liklon-laptop:sudo apt-get install openssh-client
liklon@liklon-laptop:sudo apt-get install openssh-server


2.查看网络状态,是否启动了ssh


liklon@liklon-laptop:/media/sf_liklon-linux$ netstat -tl
激活Internet连接 (仅服务器)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 *:ftp                   *:*                     LISTEN     
tcp        0      0 localhost:ipp           *:*                     LISTEN     
tcp6       0      0 localhost:ipp           [::]:*                  LISTEN     
liklon@liklon-laptop:/media/sf_liklon-linux$ 


没有启动ssh...


执行下面的语句

liklon@liklon-laptop:/media/sf_liklon-linux$ /etc/init.d/ssh start
 * Starting OpenBSD Secure Shell server sshd                                                                                                                 Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_dsa_key
                                                                                                                                                      [ OK ]
liklon@liklon-laptop:/media/sf_liklon-linux$ sudo /etc/init.d/ssh start
[sudo] password for liklon: 
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service ssh start

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start ssh
liklon@liklon-laptop:/media/sf_liklon-linux$ 

 


可以看出得在root权限下去启动。再来查看


liklon@liklon-laptop:/media/sf_liklon-linux$ netstat -tl
激活Internet连接 (仅服务器)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 *:ftp                   *:*                     LISTEN     
tcp        0      0 *:ssh                   *:*                     LISTEN     
tcp        0      0 localhost:ipp           *:*                     LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 localhost:ipp           [::]:*                  LISTEN     
liklon@liklon-laptop:/media/sf_liklon-linux$ 


两台电脑都保证SSH是启动的。再开始传输。


liklon@liklon-laptop:/media/sf_liklon-linux$ scp ./google-chrome-stable_current_i386_35.0.1916.114.deb root@192.168.1.105:/liklon-arm
The authenticity of host '192.168.1.105 (192.168.1.105)' can't be established.
RSA key fingerprint is 30:bc:02:11:cb:e6:ef:c9:92:a9:e3:ef:97:b7:a6:4d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.105' (RSA) to the list of known hosts.
root@192.168.1.105's password: 
google-chrome-stable_current_i386_35.0.1916.114.deb                                                    100%   45MB   5.6MB/s   00:08    
liklon@liklon-laptop:/media/sf_liklon-linux$ 


OK!!!




高工
2014-08-07 09:11:21     打赏
53楼
多谢支持多谢支持...

高工
2014-08-08 17:34:41     打赏
54楼

第四炮  两台linux电脑之间传输文件(二)

       

        在之前的实验中,让龙芯小本能够和虚拟机传输文件,首先想到的是ftp服务,安装配置之后龙芯小本时钟无法连接到成功。分享一下用ftp传输文件的实验经历。

        首先是安装ftp服务器啦,这个比较简单,过程一般是这样的;


       1.----->     sudo apt-get install vsftpd

       2.----->     sudo vi /etc/vsftpd.conf    编辑配置文件

       3.----->     sudo /etc/init.d/vsftpd restart   重启ftp服务

       4.----->     netstat -tl  可以查看是否启动

        

root@liklon-laptop:/# netstat -tl
激活Internet连接 (仅服务器)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 *:ftp                   *:*                     LISTEN     
tcp        0      0 *:ssh                   *:*                     LISTEN     
tcp        0      0 localhost:ipp           *:*                     LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 localhost:ipp           [::]:*                  LISTEN     
root@liklon-laptop:/# 


在一切都准备好了之后,开始用龙芯小本去链接:

    ftp 192.168.1.103

    接着就是需要登陆啦登陆名直接用ftp

    

anonymous_enable=YES
no_anon_password=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
ftp_username=ftp
anon_mkdir_write_enable=YES
dirmessage_enable=YES
local_root=/home/ftp/
anon_root=/home/ftp/
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES


上面是配置文件里面的一部分。本地用户登陆后是将/home/ftp/作为根目录。在登陆后龙芯小本那里报错如下:


500 OOPS: vsftpd: refusing to run with writable anonymous root


在查资料后了解到问题的原因:


在建立ftp目录时

    sudo mkdir ftp -m 777

这样就出问题了,因为vsftpd出于安全考虑对 /home/ftp是不允许没有限制的,这导致了上述错误的发生。

    最后将权限修改  :

    cd /home/

    chmod 755 ftp/

修改了之后再链接就可以成功了。

    然后在ftp文件里新建了一个liklon目录,并创建了eepw.c...

    下面是eepw.c的内容(龙芯小本获取文件后,修改,再上传来的)

     

ong:/# ftp 192.168.1.103
Connected to 192.168.1.103.
220 (vsFTPd 2.2.2)
Name (192.168.1.103:root): ftp
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    2 0        0            4096 Aug 08 09:15 liklon
226 Directory send OK.
ftp> cd liklon
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Aug 08 09:15 eepw.c
226 Directory send OK.
ftp> get eepw.c /liklon-arm/
local: /liklon-arm/ remote: eepw.c
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for eepw.c (0 bytes).
local: /liklon-arm/: Is a directory
226 Transfer complete.
225 No transfer to ABOR.
ftp> get eepw.c
local: eepw.c remote: eepw.c
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for eepw.c (0 bytes).
226 Transfer complete.
ftp> bye
221 Goodbye.

 

上面内容是,龙芯小本将文件获取后,将操作指令全部复制下来粘贴到文件里后,再上传到虚拟机的目录上。

在上传的过程中也遇到了一个问题:vsftp上传文件出现553 Could not create file

我是上传在/home/ftp/liklon/目录下,这个目录的权限是777

创建这个目录修改权限后再重新启动ftp服务器就可以了。




            


高工
2014-08-08 17:50:35     打赏
55楼

楼上内容的补充:

Linux ftp命令的一般格式如下:

$ ftp 主机名/IP

其中“主机名/IP”是所要连接的远程机的主机名或IP地址。在命令行中,主机名属于选项,如果指定主机名,ftp将试图与远程机的ftp服务程序进行连接;如果没有指定主机名,ftp将给出提示符,等待用户输入命令:
$ ftp
ftp >
此时在ftp>提示符后面输入open命令加主机名或IP地址,将试图连接指定的主机。
不管使用哪一种方法,如果连接成功,需要在远程机上登录。用户如果在远程机上有帐号,就可以通过ftp使用这一帐号并需要提供口令。在远程机上的用户帐号的读写权限决定该用户在远程机上能下载什么文件和将上载文件放到哪个目录中。
如果没有远程机的专用登录帐号,许多ftp站点设有可以使用的特殊帐号。这个帐号的登录名为anonymous(也称为匿名ftp),当使用这一帐号时,要求输入email地址作为口令。
如果远程系统提供匿名ftp服务,用户使用这项服务可以登录到特殊的,供公开使用的目录。一般专门提供两个目录:pub目录和incoming目录。pub目录包含该站点供公众使用的所有文件,incoming目录存放上载到该站点的文件。
一旦用户使用ftp在远程站点上登录成功,将得到“ftp>”提示符。现在可以自由使用ftp提供的命令,可以用 help命令取得可供使用的命令清单,也可以在 help命令后面指定具体的命令名称,获得这条命令的说明。


最常用的命令有:
ls 列出远程机的当前目录
cd 在远程机上改变工作目录
lcd 在本地机上改变工作目录
ascii 设置文件传输方式为ASCII模式
binary 设置文件传输方式为二进制模式
close 终止当前的ftp会话
hash 每次传输完数据缓冲区中的数据后就显示一个#号
get(mget) 从远程机传送指定文件到本地机
put(mput) 从本地机传送指定文件到远程机
open 连接远程ftp站点
断开与远程机的连接并退出ftp
? 显示本地帮助信息
! 转到Shell中


下面简单将ftp常用命令作一简介。
◆启动ftp会话 
open命令用于打开一个与远程主机的会话。该命令的一般格式是:
◆open 主机名/IP
如果在ftp 会话期间要与一个以上的站点连接,通常只用不带参数的ftp命令。如果在会话期间只想与一台计算机连接,那么在命令行上指定远程主机名或IP地址作为ftp命令的参数。
◆终止ftp会话 
close、disconnect、和bye命令用于终止与远程机的会话。close和disronnect命令关闭与远程机的连接,但是使用户留在本地计算机的ftp程序中。和bye命令都关闭用户与远程机的连接,然后退出用户机上的ftp 程序。
◆改变目录 
“cd [目录]”命令用于在ftp会话期间改变远程机上的目录,lcd命令改变本地目录,使用户能指定查找或放置本地文件的位置。
◆远程目录列表 
ls命令列出远程目录的内容,就像使用一个交互shell中的ls命令一样。ls命令的一般格式是:
ls [目录] [本地文件]
如果指定了目录作为参数,那么ls就列出该目录的内容。如果给出一个本地文件的名字,那么这个目录列表被放入本地机上您指定的这个文件中。
◆从远程系统获取文件 
get和mget命令用于从远程机上获取文件。get命令的一般格式为:
get 文件名
您还可以给出本地文件名,这个文件名是这个要获取的文件在您的本地机上创建时的文件名。如果您不给出一个本地文件名,那么就使用远程文件原来的名字。
mget命令一次获取多个远程文件。mget命令的一般格式为:
mget 文件名列表
使用用空格分隔的或带通配符的文件名列表来指定要获取的文件,对其中的每个文件都要求用户确认是否传送。
◆向远程系统发送文件 
put和mput命令用于向远程机发送文件。Put命令的一般格式为:
put 文件名
mput命令一次发送多个本地文件,mput命令的一般格式为:
mput 文件名列表
使用用空格分隔的或带通配符的文件名列表来指定要发送的文件。对其中的每个文件都要求用户确认是否发送。
◆改变文件传输模式 
默认情况下,ftp按ASCII模式传输文件,用户也可以指定其他模式。ascii和brinary命令的功能是设置传输的模式。用ASCII模式传输文件对纯文本是非常好的,但为避免对二进制文件的破坏,用户可以以二进制模式传输文件。
◆检查传输状态 
传输大型文件时,可能会发现让ftp提供关于传输情况的反馈信息是非常有用的。hash命令使ftp在每次传输完数据缓冲区中的数据后,就在屏幕上打印一个#字符。本命令在发送和接收文件时都可以使用。
◆ftp中的本地命令 
当您使用ftp时,字符“!”用于向本地机上的命令shell传送一个命令。如果用户处在ftp会话中,需要shell做某些事,就很有用。例如用户要建立一个目录来保存接收到的文件。如果输入!mkdir new_dir,那么Linux就在用户当前的本地目录中创建一个名为new_dir 的目录。



高工
2014-08-09 10:23:59     打赏
56楼
多谢支持啦!!!

共56条 6/6 |‹ 1 2 3 4 5 6 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]