1,开发板:韦东山JZ2440。
2,linux 版本:linux-3.4.2
3,参考文献:http://blog.youkuaiyun.com/liangzhuangdongtou/article/details/51942595
按照参考文献的方法上次成功移植了apache1.3.39,前几天把文件系统搞崩了,开始了为期两天的坑爹移植之路。
悲剧的开始:
#/usr/local/apache/bin/httpd -f /usr/local/apache/conf/httpd.conf start
httpd: bad user name nobody
什么情况,于是各种尝试修改/etc/passwd和/etc/group以及addgroup nobody和adduser -g nobody nobody,改来改去,折腾了半天,还是bad user name nobody.真是奇了怪了。
[root@UnixHost ]# ping localhost
ping: bad address 'localhost'
[root@UnixHost ]#
ping本地回环地址也出现问题,但是ping主机的ip是正常的(开发板和主机通过网线相连)。网上找找资料,改了/etc/hosts文件为如下:
[root@UnixHost etc]# cat hosts
127.0.0.1 localhost
127.0.1.1 book-desktop
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
再次ping ,还是bad address,网上说是缺少nss的库,于是在交叉编译工具的lib文件夹中找到了libnss相关的*.so文件,拷贝到开发板,再次尝试ping,正常。
[root@UnixHost lib]# tar xzvf libnss.tar.gz
libnss_compat-2.9.so
libnss_compat.so.2
libnss_dns-2.9.so
libnss_dns.so.2
libnss_files-2.9.so
libnss_files.so.2
libnss_hesiod-2.9.so
libnss_hesiod.so.2
libnss_nis-2.9.so
libnss_nisplus-2.9.so
libnss_nisplus.so.2
libnss_nis.so.2
这里注意,拷贝的时候,一定要用以下两个命令进行打包解包,否则会丢失符号链接!!!!
打包命令:tar czvf output.tar.gz input
解包命令:tar xzvf output.tar.gz
这样就能够保留符号链接,拷贝到开发板解包之后能够正常工作。
这样是能够ping通了,但是apache还是一样的报错。
漫长思索中........
根据这篇文章的提示https://www.linuxquestions.org/questions/linux-server-73/httpd-bad-user-name-apache-540565/
把strace 移植到开发板,跟踪httpd的执行过程,果然发现了一些猫腻。
[root@UnixHost lib]# strace /usr/local/apache/bin/httpd -f /usr/local/apache/con
f/httpd.conf start
execve("/usr/local/apache/bin/httpd", ["/usr/local/apache/bin/httpd", "-f", "/usr/local/apache/conf/httpd.con"..., "start"], [/* 13 vars */]) = 0
brk(0) = 0xb1000
uname({sys="Linux", node="UnixHost", ...}) = 0
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/lib/tls/v4l/half/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/tls/v4l/half", 0xbeb31448) = -1 ENOENT (No such file or directory)
open("/lib/tls/v4l/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/tls/v4l", 0xbeb31448) = -1 ENOENT (No such file or directory)
open("/lib/tls/half/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/tls/half", 0xbeb31448) = -1 ENOENT (No such file or directory)
open("/lib/tls/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/tls", 0xbeb31448) = -1 ENOENT (No such file or directory)
open("/lib/v4l/half/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/v4l/half", 0xbeb31448) = -1 ENOENT (No such file or directory)
open("/lib/v4l/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/v4l", 0xbeb31448) = -1 ENOENT (No such file or directory)
open("/lib/half/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/half", 0xbeb31448) = -1 ENOENT (No such file or directory)
open("/lib/libm.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\3701\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0555, st_size=730551, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f15000
mmap2(NULL, 680104, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6e4c000
mprotect(0xb6eea000, 28672, PROT_NONE) = 0
mmap2(0xb6ef1000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9d) = 0xb6ef1000
close(3) = 0
open("/lib/libcrypt.so.1", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0t\7\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0555, st_size=42059, ...}) = 0
mmap2(NULL, 225608, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6e14000
mprotect(0xb6e1c000, 28672, PROT_NONE) = 0
mmap2(0xb6e23000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7) = 0xb6e23000
mmap2(0xb6e25000, 155976, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6e25000
close(3) = 0
open("/lib/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\334Q\1\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0555, st_size=1479594, ...}) = 0
mmap2(NULL, 1212952, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6ceb000
mprotect(0xb6e06000, 32768, PROT_NONE) = 0
mmap2(0xb6e0e000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x11b) = 0xb6e0e000
mmap2(0xb6e11000, 8728, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6e11000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f14000
set_tls(0xb6f144a0, 0xb6f14b77, 0xb6f14b78, 0xb6f144a0, 0xb6f17000) = 0
mprotect(0xb6e0e000, 8192, PROT_READ) = 0
mprotect(0xb6e23000, 4096, PROT_READ) = 0
mprotect(0xb6ef1000, 4096, PROT_READ) = 0
mprotect(0xa8000, 4096, PROT_READ) = 0
mprotect(0xb6f16000, 4096, PROT_READ) = 0
brk(0) = 0xb1000
brk(0xd4000) = 0xd4000
stat64("/usr/local/apache/bin/suexec", 0xbeb31b38) = -1 ENOENT (No such file or directory)
lstat64("/usr/local/apache/conf/httpd.conf", {st_mode=S_IFREG|0766, st_size=33429, ...}) = 0
open("/usr/local/apache/conf/httpd.conf", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0766, st_size=33429, ...}) = 0
fstat64(3, {st_mode=S_IFREG|0766, st_size=33429, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f13000
read(3, "##\n## httpd.conf -- Apache HTTP "..., 4096) = 4096
stat64("/home/webroot", {st_mode=S_IFDIR|0755, st_size=2048, ...}) = 0
read(3, "r by using \"/dev/null\" (for Unix"..., 4096) = 4096
read(3, " is called. The default is Off.\n"..., 4096) = 4096
socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 4
conn