Difference between revisions of "Linux FAQ"
(Created page with "中文") |
|||
(7 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
[[Linux FAQ/zh|中文]] | [[Linux FAQ/zh|中文]] | ||
+ | |||
+ | ===如何通过命令行连接WiFi?=== | ||
+ | |||
+ | 输入命令: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | start-wifi wpa2 "ESSID""PASSWORD" | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===摄像头的设备名称是什么?=== | ||
+ | |||
+ | ::6410平台: CMOS 摄像头的设备名称为 /dev/video0 ,如果是 USB摄像头,则设备名称为 /dev/video2。 | ||
+ | ::210平台: 代码如下,其中,getCMOSCameraDeviceName函数适用于CMOS和TVP5150摄像头,getUSBCameraDeviceName函数适用于USB摄像头: | ||
+ | <syntaxhighlight lang="c"> | ||
+ | #define DEVICE_MAX 2 | ||
+ | static const char* getCMOSCameraDeviceName() | ||
+ | { | ||
+ | const char* const devInfoNames[DEVICE_MAX] = { | ||
+ | "/sys/class/video4linux/video0/name" | ||
+ | , "/sys/class/video4linux/video2/name"}; | ||
+ | |||
+ | const char* const devNames[DEVICE_MAX] = { | ||
+ | "/dev/video0" | ||
+ | , "/dev/video2"}; | ||
+ | |||
+ | FILE* f; | ||
+ | int i; | ||
+ | for (i=0; i<DEVICE_MAX;i++) { | ||
+ | f = fopen( devInfoNames[i], "r" ); | ||
+ | if (f == NULL) { | ||
+ | continue; | ||
+ | } | ||
+ | |||
+ | char buff[256] = {0}; | ||
+ | int ret = 0; | ||
+ | |||
+ | if (fread(buff, 1, 255, f) <= 0) { | ||
+ | continue; | ||
+ | } | ||
+ | fclose( f ); | ||
+ | |||
+ | const char* fstr = "s3c-fimc"; | ||
+ | if (strstr(buff, fstr) != NULL) { | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | if (i>=DEVICE_MAX) { | ||
+ | return 0; | ||
+ | } | ||
+ | return devNames[i]; | ||
+ | } | ||
+ | |||
+ | static const char* getUSBCameraDeviceName() | ||
+ | { | ||
+ | const char* const devInfoNames[2] = {"/sys/class/video4linux/video0/name" | ||
+ | , "/sys/class/video4linux/video3/name"}; | ||
+ | |||
+ | const char* const devNames[2] = {"/dev/video0" | ||
+ | , "/dev/video3"}; | ||
+ | |||
+ | FILE* f; | ||
+ | int i; | ||
+ | for (i=0; i<2; i++) { | ||
+ | f = fopen( devInfoNames[i], "r" ); | ||
+ | if (f == NULL) { | ||
+ | continue; | ||
+ | } | ||
+ | char buff[256] = {0}; | ||
+ | int ret = 0; | ||
+ | |||
+ | if (fread(buff, 1, 255, f) <= 0) { | ||
+ | continue; | ||
+ | } | ||
+ | fclose( f ); | ||
+ | if (strstr(buff, "s3c-fimc") == NULL) { | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | if (i>=2) { | ||
+ | return 0; | ||
+ | } | ||
+ | return devNames[i]; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===如何开机自动启动我的程序?=== | ||
+ | |||
+ | 修改/etc/init.d/rcS,将/bin/qtopia&这一行改成你想要开机运行的程序。 如果你要开机运行Qt4程序,可参考文档:《Mini6410 Qt4和Qtopia编程开发指南》。 文档下载地址:[http://www.arm9home.net/read.php?tid-9360.html] | ||
+ | |||
+ | ===为什么运行我用Qt4写的程序时无法使用触摸屏?=== | ||
+ | |||
+ | 需要设置相关的环境变量,可参考文档:《Mini6410Qt4和Qtopia编程开发指南》。 文档下载地址:[http://www.arm9home.net/read.php?tid-9360.html] | ||
+ | |||
+ | ===用命令行无法连接WiFi,用图形界面却可以,怎么回事呢?=== | ||
+ | |||
+ | 原因是如果有线网接口是UP状态的,系统会以有线网作为连接,所以在使用WiFi时,先将有线网Down掉,使用如下命令进行: ifconfig eth0 down | ||
+ | |||
+ | ===如何在命令行进行3G拨号=== | ||
+ | |||
+ | 华为E1750在Mini6410和Tiny6410通过命令行拨号的方法是,在终端上执行以下命令: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | 3g-ppp /system/etc/3g-modem/12d1.1446.12d1.1001 | ||
+ | call-ppp wcdma | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 执行以上命令后,就会在后台进行拨号了,然后进入目录/var/run/,查看是否产出文件 ppp0-ok,如果有,则表示已拨号成功,ppp0-ok文件内会存储IP地址和DNS。 | ||
+ | |||
+ | 要断开网终,kill pppd进程ID 即可。 | ||
+ | |||
+ | 其它型号的3G上网卡可以在图形界面上拨号成功后,通过ps查看进程列表来获得3g-ppp的命令行,再结合上面所说的步骤进行。 | ||
+ | |||
+ | ===如何更换Linux/Android内核开机LOGO?=== | ||
+ | |||
+ | 先从光盘中解压 Linux 源代码,这里假设Linux源代码目录为 /opt/linux-3.5, 你要更换的图片为 /opt/logo.png; | ||
+ | 第一步,将图片转换为ppm格式: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | pngtopnm /opt/logo.png > /tmp/linux_logo.pnm | ||
+ | pnmquant 224 /tmp/linux_logo.pnm > /tmp/linux_logo_224.pnm | ||
+ | pnmtoplainpnm /tmp/linux_logo_224.pnm > /tmp/linux_logo_224.ppm | ||
+ | </syntaxhighlight> | ||
+ | 第二步,将ppm格式的图片替换掉默认的内核Logo: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | cp /tmp/linux_logo_224.ppm /opt/linux-3.5/drivers/video/logo/logo_linux_clut224.ppm | ||
+ | </syntaxhighlight> | ||
+ | 第三步,参考用户手册,编译内核即可。 | ||
+ | 如果你在执行命令的过程中找到 pngtopnm 等命令,使用 apt-get install 或 yum install 来安装即可。 | ||
+ | |||
+ | ===如何更攺Mac地址?=== | ||
+ | |||
+ | 在烧写系统时,在FriendlyARM.ini中指定Mac地址 | ||
+ | 只需要在Linux-CommandLine或者Android-CommandLine中加上参数 ethmac 即可指定Mac地址,如下所示: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | Android-CommandLine = root=/dev/mtdblock4 rootfstype=yaffs2 console=ttySAC0,115200 init=/linuxrc androidboot.console=ttySAC0 gs=0 ethmac=08:90:00:A0:02:99 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===在PC上通过SSH远程访问开发板=== | ||
+ | Linux 文件系统中已经集成了 sshd,但是默认没有启动。<br /> | ||
+ | 在启动之前,你需要先为root用户设置个密码,使用命令 passwd root 即可。<br /> | ||
+ | 然后,将以下内容添加到 /etc/init.d/rcS 中,开机自动启动 sshd 服务: | ||
+ | /usr/local/sbin/sshd | ||
+ | 重启开发板,在电脑上输入登录开发板: | ||
+ | ssh root@192.168.x.x |
Latest revision as of 10:12, 9 May 2016
Contents
1 如何通过命令行连接WiFi?
输入命令:
start-wifi wpa2 "ESSID""PASSWORD"
2 摄像头的设备名称是什么?
- 6410平台: CMOS 摄像头的设备名称为 /dev/video0 ,如果是 USB摄像头,则设备名称为 /dev/video2。
- 210平台: 代码如下,其中,getCMOSCameraDeviceName函数适用于CMOS和TVP5150摄像头,getUSBCameraDeviceName函数适用于USB摄像头:
#define DEVICE_MAX 2 static const char* getCMOSCameraDeviceName() { const char* const devInfoNames[DEVICE_MAX] = { "/sys/class/video4linux/video0/name" , "/sys/class/video4linux/video2/name"}; const char* const devNames[DEVICE_MAX] = { "/dev/video0" , "/dev/video2"}; FILE* f; int i; for (i=0; i<DEVICE_MAX;i++) { f = fopen( devInfoNames[i], "r" ); if (f == NULL) { continue; } char buff[256] = {0}; int ret = 0; if (fread(buff, 1, 255, f) <= 0) { continue; } fclose( f ); const char* fstr = "s3c-fimc"; if (strstr(buff, fstr) != NULL) { break; } } if (i>=DEVICE_MAX) { return 0; } return devNames[i]; } static const char* getUSBCameraDeviceName() { const char* const devInfoNames[2] = {"/sys/class/video4linux/video0/name" , "/sys/class/video4linux/video3/name"}; const char* const devNames[2] = {"/dev/video0" , "/dev/video3"}; FILE* f; int i; for (i=0; i<2; i++) { f = fopen( devInfoNames[i], "r" ); if (f == NULL) { continue; } char buff[256] = {0}; int ret = 0; if (fread(buff, 1, 255, f) <= 0) { continue; } fclose( f ); if (strstr(buff, "s3c-fimc") == NULL) { break; } } if (i>=2) { return 0; } return devNames[i]; }
3 如何开机自动启动我的程序?
修改/etc/init.d/rcS,将/bin/qtopia&这一行改成你想要开机运行的程序。 如果你要开机运行Qt4程序,可参考文档:《Mini6410 Qt4和Qtopia编程开发指南》。 文档下载地址:[1]
4 为什么运行我用Qt4写的程序时无法使用触摸屏?
需要设置相关的环境变量,可参考文档:《Mini6410Qt4和Qtopia编程开发指南》。 文档下载地址:[2]
5 用命令行无法连接WiFi,用图形界面却可以,怎么回事呢?
原因是如果有线网接口是UP状态的,系统会以有线网作为连接,所以在使用WiFi时,先将有线网Down掉,使用如下命令进行: ifconfig eth0 down
6 如何在命令行进行3G拨号
华为E1750在Mini6410和Tiny6410通过命令行拨号的方法是,在终端上执行以下命令:
3g-ppp /system/etc/3g-modem/12d1.1446.12d1.1001 call-ppp wcdma
执行以上命令后,就会在后台进行拨号了,然后进入目录/var/run/,查看是否产出文件 ppp0-ok,如果有,则表示已拨号成功,ppp0-ok文件内会存储IP地址和DNS。
要断开网终,kill pppd进程ID 即可。
其它型号的3G上网卡可以在图形界面上拨号成功后,通过ps查看进程列表来获得3g-ppp的命令行,再结合上面所说的步骤进行。
7 如何更换Linux/Android内核开机LOGO?
先从光盘中解压 Linux 源代码,这里假设Linux源代码目录为 /opt/linux-3.5, 你要更换的图片为 /opt/logo.png; 第一步,将图片转换为ppm格式:
pngtopnm /opt/logo.png > /tmp/linux_logo.pnm pnmquant 224 /tmp/linux_logo.pnm > /tmp/linux_logo_224.pnm pnmtoplainpnm /tmp/linux_logo_224.pnm > /tmp/linux_logo_224.ppm
第二步,将ppm格式的图片替换掉默认的内核Logo:
cp /tmp/linux_logo_224.ppm /opt/linux-3.5/drivers/video/logo/logo_linux_clut224.ppm
第三步,参考用户手册,编译内核即可。 如果你在执行命令的过程中找到 pngtopnm 等命令,使用 apt-get install 或 yum install 来安装即可。
8 如何更攺Mac地址?
在烧写系统时,在FriendlyARM.ini中指定Mac地址 只需要在Linux-CommandLine或者Android-CommandLine中加上参数 ethmac 即可指定Mac地址,如下所示:
Android-CommandLine = root=/dev/mtdblock4 rootfstype=yaffs2 console=ttySAC0,115200 init=/linuxrc androidboot.console=ttySAC0 gs=0 ethmac=08:90:00:A0:02:99
9 在PC上通过SSH远程访问开发板
Linux 文件系统中已经集成了 sshd,但是默认没有启动。
在启动之前,你需要先为root用户设置个密码,使用命令 passwd root 即可。
然后,将以下内容添加到 /etc/init.d/rcS 中,开机自动启动 sshd 服务:
/usr/local/sbin/sshd
重启开发板,在电脑上输入登录开发板:
ssh root@192.168.x.x