第一天
平台说明
busybox 版本: busybox-1.24.0
Linux 版本: ubuntu 15.04(编译主机)
GCC 版本: gcc version 4.7.3 20130226 (prerelease)(crosstool-NG linaro-1.13.1-4.7-2013.03-20130313 - Linaro GCC 2013.03)
硬 件 平 台: 自制硬件板子(VoipServer-V0.0.1)
/*****************************************************************************************************************************/
开始:
将源码解压到自定义一个目录下
cd /home/am335x/app/
tar xvjf busybox-1.24.0.tar.bz2
cd busybox-1.24.0
配置
make menuconfig
Busybox Setting ----->
Build Options ----->
//1选择将busybox进行静态编译
[ * ]Build BusyBox as a static binary (no shared libs)
//2.指定交叉编译器为
(/usr/local/arm_linux_4.7.3/bin/arm-linux-gnueabihf-)Cross Compiler prefix
Busybox Library Tuning--->
//3.编译出的busybox的shell命令解释器支持显示当前路径及主机信息
[ * ]Username completion
[ * ]Fancy shell prompts
[ * ]Query cursor position from terminal
General Configuration--->
//4.去了Use the devpts filesystem for Unix98 PTYs
[ ]Use the devpts filesystem for Unix98 PTYs
Networking Utilities ----->
//5.去了inetd
[ ]inetd
配置保存
编译
make
编译完成后安装
make install
此时会在busybox的根目录下生成_install目录,里面有/bin /sbin /usr linuxrc 四个文件。
第二天
busybox-1.24.0制作AM335X文件系统
第二天
/*****************************************************************************************************************************/
开始:
开始:
1、创建根文件系统目录,主要包括以下目录
/dev /etc /lib /usr /var /proc /tmp /home /root /mnt /bin /sbin /sys
#mkdir rootfs
#cd rootfs
#mkdir dev etc lib usr var proc tmp home root mnt sys
将第一天编译好的文件复制到
根文件系统目录(注意:复制的时候加上-rfa参数)
2、构建etc目录
在etc目录下创建inittab文件
文件内容:
# /etc/inittab init(8) configuration for BusyBox
#
# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
#
#
# Note, BusyBox init doesn't support runlevels. The runlevels field is
# completely ignored by BusyBox init. If you want runlevels, use sysvinit.
#
#
# Format for each entry: <id>:<runlevels>:<action>:<process>
#
# <id>: WARNING: This field has a non-traditional meaning for BusyBox init!
#
# The id field is used by BusyBox init to specify the controlling tty for
# the specified process to run on. The contents of this field are
# appended to "/dev/" and used as-is. There is no need for this field to
# be unique, although if it isn't you may have strange results. If this
# field is left blank, it is completely ignored. Also note that if
# BusyBox detects that a serial console is in use, then all entries
# containing non-empty id fields will be ignored. BusyBox init does
# nothing with utmp. We don't need no stinkin' utmp.
#
# <runlevels>: The runlevels field is completely ignored.
#
# <action>: Valid actions include: sysinit, respawn, askfirst, wait, once,
# restart, ctrlaltdel, and shutdown.
#
# Note: askfirst acts just like respawn, but before running the specified
# process it displays the line "
lease press Enter to activate this
# console." and then waits for the user to press enter before starting
# the specified process.
#
# Note: unrecognised actions (like initdefault) will cause init to emit
# an error message, and then go along with its business.
#
# <process>: Specifies the process to be executed and it's command line.
#
# Note: BusyBox init works just fine without an inittab. If no inittab is
# found, it has the following default behavior:
# ::sysinit:/etc/init.d/rcS
# ::askfirst:/bin/sh
# ::ctrlaltdel:/sbin/reboot
# ::shutdown:/sbin/swapoff -a
# ::shutdown:/bin/umount -a -r
# ::restart:/sbin/init
#
# if it detects that /dev/console is _not_ a serial console, it will
# also run:
# tty2::askfirst:/bin/sh
# tty3::askfirst:/bin/sh
# tty4::askfirst:/bin/sh
#
# Boot-time system configuration/initialization script.
# This is run first except when booting in single-user mode.
#
::sysinit:/etc/init.d/rcS
# /bin/sh invocations on selected ttys
#
# Note below that we prefix the shell commands with a "-" to indicate to the
# shell that it is supposed to be a login shell. Normally this is handled by
# login, but since we are bypassing login in this case, BusyBox lets you do
# this yourself...
#
# Start an "askfirst" shell on the console (whatever that may be)
:
nce:-/bin/sh
# Start an "askfirst" shell on /dev/tty2-4
#tty2::askfirst:-/bin/sh
#tty3::askfirst:-/bin/sh
#tty4::askfirst:-/bin/sh
# /sbin/getty invocations for selected ttys
#tty4::respawn:/sbin/getty 38400 tty5
#tty5::respawn:/sbin/getty 38400 tty6
# Example of how to put a getty on a serial line (for a terminal)
#::respawn:/sbin/getty -L ttyS0 9600 vt100
#::respawn:/sbin/getty -L ttyS1 9600 vt100
#
# Example how to put a getty on a modem line.
#::respawn:/sbin/getty 57600 ttyS2
# Stuff to do when restarting the init process
::restart:/sbin/init
# Stuff to do before rebooting
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
#
# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
#
#
# Note, BusyBox init doesn't support runlevels. The runlevels field is
# completely ignored by BusyBox init. If you want runlevels, use sysvinit.
#
#
# Format for each entry: <id>:<runlevels>:<action>:<process>
#
# <id>: WARNING: This field has a non-traditional meaning for BusyBox init!
#
# The id field is used by BusyBox init to specify the controlling tty for
# the specified process to run on. The contents of this field are
# appended to "/dev/" and used as-is. There is no need for this field to
# be unique, although if it isn't you may have strange results. If this
# field is left blank, it is completely ignored. Also note that if
# BusyBox detects that a serial console is in use, then all entries
# containing non-empty id fields will be ignored. BusyBox init does
# nothing with utmp. We don't need no stinkin' utmp.
#
# <runlevels>: The runlevels field is completely ignored.
#
# <action>: Valid actions include: sysinit, respawn, askfirst, wait, once,
# restart, ctrlaltdel, and shutdown.
#
# Note: askfirst acts just like respawn, but before running the specified
# process it displays the line "

# console." and then waits for the user to press enter before starting
# the specified process.
#
# Note: unrecognised actions (like initdefault) will cause init to emit
# an error message, and then go along with its business.
#
# <process>: Specifies the process to be executed and it's command line.
#
# Note: BusyBox init works just fine without an inittab. If no inittab is
# found, it has the following default behavior:
# ::sysinit:/etc/init.d/rcS
# ::askfirst:/bin/sh
# ::ctrlaltdel:/sbin/reboot
# ::shutdown:/sbin/swapoff -a
# ::shutdown:/bin/umount -a -r
# ::restart:/sbin/init
#
# if it detects that /dev/console is _not_ a serial console, it will
# also run:
# tty2::askfirst:/bin/sh
# tty3::askfirst:/bin/sh
# tty4::askfirst:/bin/sh
#
# Boot-time system configuration/initialization script.
# This is run first except when booting in single-user mode.
#
::sysinit:/etc/init.d/rcS
# /bin/sh invocations on selected ttys
#
# Note below that we prefix the shell commands with a "-" to indicate to the
# shell that it is supposed to be a login shell. Normally this is handled by
# login, but since we are bypassing login in this case, BusyBox lets you do
# this yourself...
#
# Start an "askfirst" shell on the console (whatever that may be)
:

# Start an "askfirst" shell on /dev/tty2-4
#tty2::askfirst:-/bin/sh
#tty3::askfirst:-/bin/sh
#tty4::askfirst:-/bin/sh
# /sbin/getty invocations for selected ttys
#tty4::respawn:/sbin/getty 38400 tty5
#tty5::respawn:/sbin/getty 38400 tty6
# Example of how to put a getty on a serial line (for a terminal)
#::respawn:/sbin/getty -L ttyS0 9600 vt100
#::respawn:/sbin/getty -L ttyS1 9600 vt100
#
# Example how to put a getty on a modem line.
#::respawn:/sbin/getty 57600 ttyS2
# Stuff to do when restarting the init process
::restart:/sbin/init
# Stuff to do before rebooting
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
在etc
目录下创建fstab文件
文件内容:
#device mount-point type options dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
在etc
目录下创建mdev.conf文件
文件内容:
mmcblk([0-9]+)p([1]+) 0:0 660 */etc/sd_automount.sh $MDEVsd([a-z]+)([0-9]+) 0:0 660 @/etc/usbdisk_inserting.sh $MDEV
sd([a-z]+) 0:0 660 $/etc/usbdisk_removing.sh $MDEV
在etc目录下创建profile文件
文件内容:
#!/bin/shexport HOSTNAME=VoipBoxServer-V0.0.1
export USER=root
export HOME=root
#export PS1="\[\u@\h \W\]\$ "
export PS1="[$USER@$HOSTNAME \W]\# "
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib:/usr/lib

export PATH LD_LIBRARY_PATH
echo "************************************************************************"
echo "================= Welcome to VoipBoxServer Console ^_^ ================="
echo "************************************************************************"
拷贝虚拟机上的/etc/passwd, /etc/group到rootfs/etc下
在etc目录下创建NetConfig.ini文件
文件内容:
[NetConfig]
NetCardType=LAN
AddrConfigType=MANUAL
IpAddr=192.168.1.114
Netmask=255.255.255.0
Gateway=192.168.1.1
MacAddr=00:02:AC:55:88:A8
在etc目录下创建sd_automount.sh文件
文件内容:
#! /bin/sh
echo "sd_automount*************$1****************" > /dev/console
if [ "$1" == "" ]; then
echo "parameter is none" > /dev/console
exit 1
fi
MNT=$1
if echo "$1" | grep mmcblk; then
MNT=sdcard
else
echo "is not SD" > /dev/console
exit 1
fi
mounted=`mount | grep $MNT | wc -l`
if [ $mounted -ge 1 ]; then
umount -l "/mnt/$MNT"
rm -rf "/mnt/$MNT"
echo "[Umount FS]: /dev/$1 -X-> /mnt/$MNT" > /dev/console
else
mkdir -p "/mnt/$MNT"
mount -t vfat -o noatime,shortname=mixed,utf8 "/dev/$1" "/mnt/$MNT"
echo "[Mount VFAT]: /dev/$1 --> /mnt/$MNT" > /dev/console
fi
在etc目录下创建usbdisk_inserting.sh文件
文件内容:
#! /bin/sh
echo "usb_inserting*************$1****************" > /dev/console
if [ "$1" == "" ]; then
echo "parameter is none" > /dev/console
exit 1
fi
MNT=$1
if echo "$1" | grep sd; then
MNT=UsbDisk
else
echo "is not UsbDisk" > /dev/console
exit 1
fi
mounted=`mount | grep $MNT | wc -l`
if [ $mounted -ge 1 ]; then
echo "/mnt/$MNT used!!!!!!!!!!!" > /dev/console
else
mkdir -p "/mnt/$MNT"
mount -t vfat -o noatime,shortname=mixed,utf8 "/dev/$1" "/mnt/$MNT"
echo "[Mount VFAT]: /dev/$1 --> /mnt/$MNT" > /dev/console
fi
在etc目录下创建usbdisk_removing.sh文件
文件内容:
#! /bin/sh
echo "usb_removing*************$1****************" > /dev/console
if [ "$1" == "" ]; then
echo "parameter is none" > /dev/console
exit 1
fi
MNT=$1
if echo "$1" | grep sd; then
MNT=UsbDisk
else
echo "is not UsbDisk" > /dev/console
exit 1
fi
mounted=`mount | grep $MNT | wc -l`
if [ $mounted -ge 1 ]; then
umount -l "/mnt/$MNT"
rm -rf "/mnt/$MNT"
echo "[Umount FS]: /dev/$1 -X-> /mnt/$MNT" > /dev/console
else
echo "/mnt/$MNT not found!!!!!!!!!!!" > /dev/console
fi
在etc目录下创建init.d目录
#mkdir init.d
#cd init.d
在etc/init.d目录下创建rcS文件
文件内容:
#!/bin/sh
##设置机器名字;
/bin/hostname VoipBoxServer-V0.0.1
echo "#mount all.........."
mount -a
mkdir /dev/pts
/bin/mknod /dev/pts/0 c 136 0
/bin/mknod /dev/pts/1 c 136 1
/bin/mknod /dev/pts/2 c 136 2
/bin/mknod /dev/pts/3 c 136 3
/bin/mknod /dev/pts/4 c 136 4
/bin/mknod /dev/pts/5 c 136 5
/bin/mount -t devpts devpts /dev/pts
mount -o remount,rw /dev/root
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
echo "#StarNet.........."
StartNetwork.sh &
第三天
平台说明
Vsftpd 版本: vsftpd-2.3.4
Linux 版本: ubuntu 15.04(编译主机)
GCC 版本: gcc version 4.7.3 20130226 (prerelease)(crosstool-NG linaro-1.13.1-4.7-2013.03-20130313 - Linaro GCC 2013.03)
硬 件 平 台: 自制硬件板子(VoipServer-V0.0.1)
/*****************************************************************************************************************************/
FTP(vsftpd)服务器移植
开始:
开始:
1、将源码解压到自定义一个目录下
#tar xvzf vsftpd-2.3.4.tar.gz
#cd vsftpd-2.3.4
2、修改Makefile
指定交叉编译器
CC = arm-linux-gnueabihf-gcc
LIBS = `./vsf_findlibs.sh`末尾加 -lcrypt
LIBS = `./vsf_findlibs.sh` -lcrypt
3、编译make
编译完成后看到生成了vsftpd可执行文件
4、复制文件
将生成的vsftpd文件复制到根文件系统rootfs/usr/sbin/
目录下
将生成的vsftpd.conf文件复制到根文件系统rootfs/etc/
目录下
5、修改
vsftpd.conf配置
# Example config file /etc/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
#local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
chown_uploads=YES
chown_username=ftp
#
# You may override where the log file goes if you like. The default is shown
# below.
#xferlog_file=/var/log/vsftpd.log
#
# If you want, you can have your log file in standard ftpd xferlog format.
# Note that the default log file location is /var/log/xferlog in this case.
xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
nopriv_user=ftp
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
ascii_upload_enable=YES
ascii_download_enable=YES
#
# You may fully customise the login banner string:
ftpd_banner=Welcome to blah FTP service.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd.banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
#chroot_local_user=YES
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
ls_recurse_enable=YES
#
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=YES
listen_port=21
anon_other_write_enable=YES
#
# This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6
# sockets, you must run two copies of vsftpd with two configuration files.
# Make sure, that one of the listen options is commented !!
#listen_ipv6=YES
6、在usr目录下创建share目录,在usr/share目录下创建empty目录,在var目录下创建log目录
7、在etc/init.d/rcS文件中添加启动vsftpd服务。
在最后一行添加 vsftpd &
第四天
/*****************************************************************************************************************************/
开始:
1、构建lib目录
复制交叉编译器usr/local/arm_linux_4.7.3/arm-linux-gnueabihf/libc/lib/arm-linuxgnueabihf/目录下所有文件到/home/voip_sever_am335x_project/rootfs/rootfs/lib/下
#cp -rfa
usr/local/arm_linux_4.7.3/arm-linux-gnueabihf/libc/lib/arm-linuxgnueabihf/* /home/voip_sever_am335x_project/rootfs/rootfs/lib/
2、
构建网卡启动肢本
在usr/sbin/目录下创建StartNetwork.sh文件
文件内容:
#!/bin/sh
echo Try to bring eth0 interface up ...>/dev/console
ReadIni()#设备初始化
{
INIFILE=$1; SECTION=$2; ITEM=$3
_readIni=`awk -F '=' '/\['$SECTION'\]/{a=1}a==1&&$1~/'$ITEM'/{print $2;exit}' $INIFILE`
echo $_readIni
}
if [ -e /etc/NetConfig.ini ] ; then
NETCARDTYPE=$( ReadIni /etc/NetConfig.ini NetConfig NetCardType )
ADDRCONFIGTYPE=$( ReadIni /etc/NetConfig.ini NetConfig AddrConfigType )
IPADDR=$( ReadIni /etc/NetConfig.ini NetConfig IpAddr )
NETMASK=$( ReadIni /etc/NetConfig.ini NetConfig Netmask )
GATEWAY=$( ReadIni /etc/NetConfig.ini NetConfig Gateway )
MAC=$( ReadIni /etc/NetConfig.ini NetConfig MacAddr )
if [ -z $NETCARDTYPE ] ; then
echo "NetCardType is empty !" >/dev/console
exit 1
fi
if [ -z $ADDRCONFIGTYPE ] ; then
echo "AddrConfigType is empty !" >/dev/console
exit 1
fi
if [ -z $IPADDR ] ; then
echo "IpAddr is empty !" >/dev/console
exit 1
fi
if [ -z $NETMASK ] ; then
echo "Netmask is empty !" >/dev/console
exit 1
fi
if [ -z $GATEWAY ] ; then
echo "Gateway is empty !" >/dev/console
exit 1
fi
if [ -z $MAC ] ; then
echo "MacAddr is empty !" >/dev/console
exit 1
fi
if [ $NETCARDTYPE = "LAN" ] ; then
if [ $ADDRCONFIGTYPE = "DHCP" ] ; then
echo "Get ip type :"$ADDRCONFIGTYPE >/dev/console
ifconfig eth0 down
ifconfig eth0 hw ether $MAC
echo ifconfig eth0 hw ether $MAC >/dev/console
udhcpc
else
if [ $ADDRCONFIGTYPE = "MANUAL" ] ; then
echo "Get ip type :"$ADDRCONFIGTYPE >/dev/console
ifconfig eth0 down
ifconfig eth0 hw ether $MAC
echo ifconfig eth0 hw ether $MAC >/dev/console
ifconfig eth0 $IPADDR netmask $NETMASK up
echo ifconfig eth0 $IPADDR netmask $NETMASK up >/dev/console
route add default gw $GATEWAY
echo add default gw $GATEWAY >/dev/console
fi
fi
else
if [ $NETCARDTYPE = "WIFI" ] ; then
echo "wifi device not found!!!" >/dev/console
fi
fi
else
echo "/etc/NetConfig.ini not found!!!" >/dev/console
fi
echo Done > /dev/console
第五天
/*****************************************************************************************************************************/
开始:
1、打开telnet服务
发现在编译Busybox时已经选择了telnet服务,只要启动telnet服务。
在etc/init.d/rcS文件中添加启动
telnet
服务。
在最后一行添加
telnetd
&
2、尝试运行
先将SD卡格式化成两个分区,分别为boot卷标的FAT32,rootfs
卷标的EXT4
将这前的MLO 、u-boot.img、zImage、am335x-wsdv.dtb复制到boot分区下
将刚才做好的rootfs下的所有文件复制到rootfs
分区下
(注意:复制时要加-rfa参数)
板子上电启动,发现停在UBOOT中,
这时可以手动输入命令启动LINUX
#load mmc ${mmcdev} ${fdtaddr} /${bootdtbfile}
#load mmc ${mmcdev} ${loadaddr} /${bootkernelfile}
#bootz ${loadaddr} - ${fdtaddr}
此时linux已经起动启来了。
可以看到串口打印如下信息:
reading /am335x-wsdv.dtb
31354 bytes read in 10 ms (3 MiB/s)
reading /zImage
4429464 bytes read in 330 ms (12.8 MiB/s)
Kernel image @ 0x82000000 [ 0x000000 - 0x439698 ]
## Flattened Device Tree blob at 88000000
Booting using the fdt blob at 0x88000000
Loading Device Tree to 8fff5000, end 8ffffa79 ... OK
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 3.18.24 (root@ubuntu-20150704) (gcc version 4.7.3 20130226 (prerelease) (crosstool-NG linaro-1.13.1-4.7-2013.03-20130313 - Linaro GCC 2013.03) ) #1 Thu Jan 14 13:12:48 CST 2016
[ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] Machine model: TI AM335x VoipServer
[ 0.000000] cma: Reserved 24 MiB at 0x9e800000
[ 0.000000] Memory policy: Data cache writeback
[ 0.000000] CPU: All CPU(s) started in SVC mode.
[ 0.000000] AM335X ES1.0 (neon )
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048
[ 0.000000] Kernel command line: console=ttyO0,115200n8 root=/dev/mmcblk0p2
。。。。。。。。。。。。。。。。此处省略一段^_^。。。。。。。。。。。。。。。
[ 1.505091] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6
[ 1.511480] davinci_mdio 4a101000.mdio: detected phy mask fffffffe
[ 1.519452] libphy: 4a101000.mdio: probed
[ 1.523708] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver SMSC LAN8710/LAN8720
[ 1.533403] mmcblk0: p1 p2
[ 1.537909] cpsw 4a100000.ethernet: Detected MACID = 00:18:30:0b:92:c3
[ 1.546452] omap_rtc 44e3e000.rtc: setting system clock to 2000-01-01 02:53:05 UTC (946695185)
[ 1.558825] vbat: disabling
[ 1.561843] ALSA device list:
[ 1.565025] #0: AM335x-VOIP
[ 1.570947] EXT3-fs (mmcblk0p2): error: couldn't mount because of unsupported optional features (240)
[ 1.582444] EXT2-fs (mmcblk0p2): error: couldn't mount because of unsupported optional features (244)
[ 1.595109] EXT4-fs (mmcblk0p2): INFO: recovery required on readonly filesystem
[ 1.602779] EXT4-fs (mmcblk0p2): write access will be enabled during recovery
[ 3.246380] EXT4-fs (mmcblk0p2): recovery complete
[ 3.646335] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[ 3.654892] VFS: Mounted root (ext4 filesystem) readonly on device 179:2.
[ 3.664427] devtmpfs: mounted
[ 3.667832] Freeing unused kernel memory: 260K (c0811000 - c0852000)
#mount all..........
[ 4.212378] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered
sd_automount*************mmcblk0p1****************
mmcblk0p1
[ 4.353609] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[Mount VFAT]: /dev/mmcblk0p1 --> /mnt/sdcard
#StarNet..........
#StarVsftpd..........
Try to bring eth0 interface up ...
************************************************************************
================= Welcome to VoipBoxServer Console ^_^ =================
************************************************************************
[root@VoipBoxServer-V0.0.1 ~]# Get ip type :MANUAL
ifconfig eth0 hw ether 00:02:AC:55:88:A8
[ 4.443281] net eth0: initializing cpsw version 1.12 (0)
[ 4.453329] net eth0: phy found : id is : 0x7c0f1
[ 4.458359] libphy: PHY 4a101000.mdio:01 not found
[ 4.463408] net eth0: phy 4a101000.mdio:01 not found on slave 1
ifconfig eth0 192.168.1.114 netmask 255.255.255.0 up
add default gw 192.168.1.1
Done
[ 8.605221] cpsw 4a100000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
2、连接网线测试ftp与telnet
测试发现FTP可用,telnet服务端口没有打开。
最后修改内核配置问题解决
打开配置make menuconfig
Device Drivers --------->
Character devices --------->
//选择上Legacy(BSD)PTY support
[ * ] Legacy ( BSD ) PTY support
(256) Maximum number of legacy PTY in use
重新编译内核
启动测试,发现
telnet可用了^_^