1、剛剛安裝了linux red hat 9.0採用的NAT網路方式,ip是dhcp自動分配。ping127.0.0.1 ping不通是怎麼回事?
ping不通127.0.0.1說明網卡沒有配置,需要先新建一塊虛擬網卡,最好手動配置靜態IP和dns、網關。
2、busybox不能連網了
【六大技巧:完美解決WiFi無法連接】
第一招:關閉並重啟Wi-Fi連接。
用手機上網,手機中會保留一個由Wi-Fi連接分配的網路IP地址,它會被應用到當前Wi-Fi中,如果沒有出現地址沖突,就不用擔心,如果有沖突就得關閉並重啟Wi-Fi連接。方法如下:
打開手機菜單,進入「設置」欄,選擇「無線和網路設置」,進入「Wi-Fi設置」項目,在新窗口中選擇「關閉Wi-Fi」,在完成關閉操作後,重新進入該項目,選擇「打開Wi-Fi」,即可重啟Wi-Fi連接。
第二招:忽略網路
如果上面的做法沒有起作用的話,就應該選擇讓安卓設備忽略該網路,並重新進行添加操作。
移動到需要忽略網路的覆蓋范圍之外,選擇忽略該網路,返回到覆蓋范圍之中,等待網路自動顯示出來,然後輸入網路密碼重新登入。這樣安卓手機就應該可以獲得新的地址,並正常工作了。
第三招:檢查Wi-Fi的密碼
通常情況下,Wi-Fi的密碼應該是定時更改的;但是,當網路進行這樣的調整時,手機不會自動更新,需要手動更新Wi-Fi的密碼。
移動到出現問題網路的覆蓋范圍之外,進入需要進行調整的Wi-Fi配置項目,選擇「調整網路設置」,在窗口中輸入新密碼並對輸入密碼信息進行審核,最後選擇「保存密碼」。這樣Wi-Fi就可以正常工作了。
第四招:查看Wi-Fi高級設置如果上述所有方法都沒有能解決問題的話,下面要做的就是進入安卓手機Wi-Fi的高級設置進行相關設置了。打開手機菜單,進入「設置」窗口,選擇「無線和網路」,進入「Wi-Fi設置」,然後進入「高級」選項,進入「代理伺服器設置」,確認安卓設備沒有使用代理伺服器,如果在代理部分發現IP地址或者域名的話,將其刪除,即可解決Wi-Fi連接故障。
小提示:大多數情況下,代理和埠設置並不會被更改;但在Wi-Fi出現常見問題時,選擇查看這幾項總歸不是錯的。
第五招:設置靜態IP地址
還有一種解決方法就是為安卓設備設置靜態IP地址。這表明用戶需要連接的路由器上可能存在DHCP地址分配方面的問題,或者設備獲得了錯誤的地址。為了設置靜態IP地址,需要進入靜態IP地址設置欄將信息輸入進去(IP地址、網關、子網掩碼、DNS等項目)。
設置靜態IP地址的唯一問題是它將適用於所有的Wi-Fi,因此只有在用戶僅僅連接到一張Wi-Fi上的情況時,才能使用這種方法解決問題。
第六招:關閉Wi-Fi休眠策略
如果Wi-Fi經常出現問題的話,使用者應該嘗試將Wi-Fi休眠策略設置為從不,看看問題會不會消失。如果將該策略設置為從不的話,耗費的電力將會上升,但是從另外的方面來看,這也會讓Wi-Fi連接更穩定。
3、linux下如何ping多個ip 如192.168.6.1----20 192.168.7.1----20 環境,PAD裝了個busybox,使用超級終端
有個軟體叫fping
4、如何利用busybox製作根文件系統
選定 busybox-1.9.2.tar.bz2 這個版本, 以靜態方式編譯, 即生成的 busybox 不需要共享庫的支持就能運行。這樣做我們就不需要布署程序庫了。缺點是自己寫的 arm-linux 程序在這個根文件系統中是不能運行的,因為缺少共享程序庫的支持。不過不用擔心,通過在目標機里以掛接 NFS 的方式, 將宿主機的 arm-linux-gcc 編譯器的庫文件掛到 arm-linux 的 /lib 下, 就可完美的運行我們自己的程序了。
現在開始製作靜態鏈接庫的根文件系統。
1、准備根文件系統
首先准備製作工具BusyBox1.9.2。
准備交叉編譯工具arm-linux-gcc 3.3.2。
在機器上建立rootfs的文件夾
#mkdir rootfs
在rootfs中建立linux系統中典型的文件夾
#cd rootfs
#mkdir root home bin sbin etc dev usr lib tmp mnt sys proc
#mkdir usr/lib usr/bin
#pwd
/home/su/rootfs
2、解壓源碼包
#tar xjf busybox-1.9.2.tar.bz2
#cd busybox-1.9.2
3、修改 Makefile,
#vi Makefile
將Makefile中的
CROSS_COMPILE ?=
改為
CROSS_COMPILE ?= /usr/local/arm/3.3.2/bin/arm-linux-
注:這個版本的 busybox 用 3.4.1 的 arm-linux-gcc 編譯有些問題, 用 3.3.2 版則可順利編譯。
4、定製 busybox
選擇busybox下全部的可執行程序
#make defconfig
進到配置選項
#make menuconfig
設置靜態編譯方式
Busybox Settings ---> Build Options ---> [*] Build BusyBox as a static binary (no shared libs)
Busybox Settings ---> Install Options ---> 中輸入建立根文件系統的文件所在的路徑/home/su/rootfs。
其它的默認。
確保 [*] Build BusyBox as a static binary (no shared libs) 被選中,保存退出
5、執行 make 編譯
#make
編譯出錯, 信息如下:
applets/applets.c:15:2: warning: #warning Static linking against glibc proces buggy executables
applets/applets.c:16:2: warning: #warning (glibc does not cope well with ld --gc-sections).
applets/applets.c:17:2: warning: #warning See sources.redhat.com/bugzilla/show_bug.cgi?id=3400
applets/applets.c:18:2: warning: #warning Note that glibc is unsuitable for static linking anyway.
applets/applets.c:19:2: warning: #warning If you still want to do it, remove -Wl,--gc-sections
applets/applets.c:20:2: warning: #warning from scripts/trylink and remove this warning.
applets/applets.c:21:2: error: #error Aborting compilation.
make[1]: *** [applets/applets.o] Error 1
按照提示,修改文件 applets/applets.c 第 21 行, 將
#error Aborting compilation.
注釋掉:
執行 make 重新編譯
#make
編譯通過, busybox 被生成了, 然後執行
#make install
busybox 就被安裝到指定的路徑下了/home/su/rootfs,這時可發現rootfs下多了個liunxrc的文件,bin、sbin下也多了很多文件。用ls –l命令查看其中的一個文件,可發現其是鏈接到busybox的一個連接符,所以我們之後在目標機上運行的命令大多都會調用busybox這個文件的。
若之前忘了指定路徑,默認生成到臨時目錄busybox-1.9.2/_install 下了。
6、編寫配置/etc下的初始化程序(可省略)
最簡單的做法是把busybox-1.9.2/examples/bootfloppy/etc下的全部文件拷到目標文件的etc目錄下
#cd /home/su/busybox-1.9.2/examples/bootfloppy/etc
#cp –rf * /home/su/rootfs/etc
也可自己寫這些文件。
7、把rootfs做成鏡像
#mkcramfs rootfs rootfs.cramfs
8、把rootfs.cramfs燒寫到目標機中。
9、運行目標機
這時會遇到一個錯誤信息:
Can』t open tty2
Can』t open tty3
Can』t open tty4
解決辦法:把/rootfs/etc/ inittab 文件的第三行「tty2::askfirst:-bin/sh」刪除掉。
返回到第7步重做。
現實中,動態編譯的方法更適合工程的需要,所以一般是採用動態的方法編譯根文件系統的。若選擇動態編譯的辦法,大體方法還是一樣的,存在一些不同之處是:
不同之處之一是:
進到配置選項
#make menuconfig
選擇動態方式
Busybox Settings ---> Build Options ---> [*] Build Shared libbusybox
不同之處之二是:
上面靜態編譯出現的出錯信息不會出現了,所以不需對程序做任何修改,但還是必須用arm-linux-gcc 3.3.2編譯,否則還是會有麻煩。
不同之處之三是(最大的不同之處):
編譯完成後,需進到rootfs目錄的lib中,往裡面添加一些庫文件
#cd /home/su/rootfs/lib
這里有點麻煩,我怎麼知道需要什麼庫文件的支持呢?
最簡單的辦法是把arm-linux-gcc 3.3.2下的整個lib庫拷進來,簡單省事。但是這么做存在一個問題,做出的根文件系統非常大。
另一個辦法是:
#cd /home/su/rootfs/bin
#arm-linux-readelf busybox | grep shared
這樣就可以顯示出系統運行起來需要什麼庫文件,再把相應的庫文件拷到/home/su/rootfs/lib下。一般而言,系統庫用到兩個:動態鏈接器ld-linux.so和c函數庫Glibc,Glibc包括:
ld-linux:動態鏈接庫,必需
libc: 標准c函數庫,必需
libm: 數學庫,一般需要
libdl: 用於動態裝載共享庫,較少用到
libcrypt: 加密附加庫,需要認證的程序用到,較少用
libpthread: POSIX線程庫,一般需要
如果需要某個函數庫,我們可以將這些庫和對應的符號鏈接拷到目標根文件系統的/lib目錄下。簡單起見,應該使用-d選項或-a選項調用cp命令,這樣可保留完整的符號鏈接信息。
例:
#cp –a libc.so.6 /home/su/rootfs/lib/
為了減少運行時庫的大小,我們應該使用交叉編譯版本即arm-linux-gcc 3.3.2的strip工具來處理根文件系統的庫文件,把二進制文件中的包含的符號表和調試信息刪除掉。
例:
#arm-linux-strip /home/su/rootfs/lib/*.so
注意:
使用busybox做文件系統時,運行make命令,系統會馬上顯示:
沒有/dev/null這個文件
但是還是能最終編譯出根文件系統,問題出在重啟linux系統,機器進不去了。提示出錯,信息如下:
/etc/rc.d/rc.sysinit: line 173:/dev/null: read-only file system
/etc/rc.d/rc.sysinit: line 173:/dev/null: read-only file system
/etc/rc.d/rc.sysinit: line 184:/dev/null: read-only file system
/etc/rc.d/rc.sysinit: line 184:/dev/null: read-only file system
/etc/rc.d/rc.sysinit: line 200:/dev/null: read-only file system
.
.
.
***An error occured ring the file system check.
***Dropping you to a shell;the system will reboot
***when you leave the shell
Give root password for maintenance
(or type Control-D to continue):
解決辦法:
按提示輸入root用戶的密碼,回車,可看到
(Repair filesystem)1#:
依次輸入命令:
(Repair filesystem)1# mount -n -o remount,rw /
(Repair filesystem)1# rm -f /dev/null
(Repair filesystem)1# mknod -m 0666 /dev/null c 1 3
(Repair filesystem)1# reboot
問題解決。
5、linux嵌入式系統上執行mount命令,掛載nfs,沒有任何輸出,和busybox或者net driver那個有關?
等…抄…可能是 nfs 伺服器的返回數據有問題被卡死了吧?
沒有提示符表明這條命令正在運行……
你為啥不先在區域網裡面找個快點的伺服器,或者直接嵌入式和你的工作機組一個小的區域網來測試一下 NFS ,你這個 NFS 伺服器貌似是個互聯網上的遠程伺服器,這是不是有點太遠了?
6、andorid busybox vi 怎麼使用
Android所提供的命令行工具是非常有限的, 想要使用更多和熟悉的工具,那麼讓Busybox來幫助你把!
下載 Busybox
使用非常簡單
# mkdir /data/busybox, on your G1 terminal.
復制busybox到一下目錄
/data/busybox/busybox
記得執行 # chmod 655 busybox
安裝將會建立自動建立軟鏈接
# cd /data/busybox
./busybox –install.
為了更方便的使用,可以執行以下命令,就可以方便的在任意目錄執行相關命令
# export PATH=/data/busybox:$PATH.
———————–
查看android linux內核版本
# busybox uname -a
Linux localhost 2.6.25-01843-gfea26b0 #6 PREEMPT Mon Oct 6 14:13:36 PDT 2008 arm v6l unknown
啟動一個httpd伺服器
#busybox httpd
啟動後你在模擬器的web瀏覽器上訪問 http://127.0.0.1 即可
執行運行
#busybox
即可查看busybox支持的命令。
busybox支持的命令包括:
[, [[, addgroup, adser, adjtimex, ar, arp, arping, ash,
awk, basename, bunzip2, bzcat, bzip2, cal, cat, catv,
chattr, chgrp, chmod, chown, chpasswd, chpst, chroot,
chrt, chvt, cksum, clear, cmp, comm, cp, cpio, crond,
crontab, cryptpw, cut, date, dc, dd, deallocvt, delgroup,
deluser, df, dhcprelay, diff, dirname, dmesg, dnsd, dos2unix,
, mpkmap, mpleases, echo, ed, egrep, eject, env,
envdir, envuidgid, expand, expr, fakeidentd, false, fbset,
fdflush, fdformat, fdisk, fgrep, find, fold, free, freeramdisk,
fsck, fsck.minix, ftpget, ftpput, fuser, getopt, getty,
grep, gunzip, gzip, halt, hdparm, head, hexmp, hostid,
hostname, httpd, hwclock, id, ifconfig, ifdown, ifup,
inetd, init, insmod, install, ip, ipaddr, ipcalc, ipcrm,
ipcs, iplink, iproute, iprule, iptunnel, kbd_mode, kill,
killall, killall5, klogd, last, length, less, linux32,
linux64, linuxrc, ln, loadfont, loadkmap, logger, login,
logname, logread, losetup, ls, lsattr, lsmod, lzmacat,
makedevs, md5sum, mdev, mesg, microcom, mkdir, mkfifo,
mkfs.minix, mknod, mkswap, mktemp, modprobe, more, mount,
mountpoint, mt, mv, nameif, nc, netstat, nice, nmeter,
nohup, nslookup, od, openvt, passwd, patch, pgrep, pidof,
ping, ping6, pipe_progress, pivot_root, pkill, poweroff,
printenv, printf, ps, pscan, pwd, raidautorun, rdate,
readahead, readlink, readprofile, realpath, reboot, renice,
reset, resize, rm, rmdir, rmmod, route, rpm, rpm2cpio,
run-parts, runlevel, runsv, runsvdir, rx, sed, seq, setarch,
setconsole, setkeycodes, setlogcons, setsid, setuidgid,
sh, sha1sum, slattach, sleep, softlimit, sort, split,
start-stop-daemon, stat, strings, stty, su, sulogin, sum,
sv, svlogd, swapoff, swapon, switch_root, sync, sysctl,
syslogd, tail, tar, tcpsvd, tee, telnet, telnetd, test,
tftp, time, top, touch, tr, traceroute, true, tty, ttysize,
udhcpc, udhcpd, udpsvd, umount, uname, uncompress, unexpand,
uniq, unix2dos, unlzma, unzip, uptime, usleep, uudecode,
uuencode, vconfig, vi, vlock, watch, watchdog, wc, wget,
which, who, whoami, xargs, yes, zcat, zcip