Chinaunix首页 | 论坛 | 博客
  • 博客访问: 396172
  • 博文数量: 26
  • 博客积分: 371
  • 博客等级: 二等列兵
  • 技术积分: 270
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-01 12:43
文章分类
文章存档

2012年(10)

2011年(16)

分类:

2011-08-01 23:12:47

原文地址:Emdebian root filesystem 作者:cywcdwxjf

deb

unstable main
deb-src

unstable main
apt-get update
apt-get install emdebian-tools
安装过程中出现许多设置,根据提示输入自己的设置即可。
cd ~
mkdir emdebian
cd emdebian
sudo debootstrap --arch=arm lenny ./lenny-chroot
I: Retrieving Release
I: Retrieving Packages
...
最后产生lenny的根文件系统的目录。
  • 成功信息如下:
I: Retrieving Release
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
I: Found additional required dependencies: libtext-iconv-perl zlib1g
I: Checking component main on
I: Retrieving adduser
I: Validating adduser
I: Retrieving apt
I: Validating apt
I: Retrieving apt-utils
I: Validating apt-utils
I: Retrieving aptitude
I: Validating aptitude
I: Retrieving at
I: Validating at
I: Retrieving base-config
I: Validating base-config
I: Retrieving base-files
I: Validating base-files
I: Retrieving base-passwd
I: Validating base-passwd
I: Retrieving bash
I: Validating bash
I: Retrieving bsdmainutils
I: Validating bsdmainutils
I: Retrieving bsdutils
I: Validating bsdutils
I: Retrieving console-common
I: Validating console-common
I: Retrieving console-data
I: Validating console-data
I: Retrieving console-tools
I: Validating console-tools
I: Retrieving coreutils
I: Validating coreutils
I: Retrieving cpio
I: Validating cpio
I: Retrieving cron
I: Validating cron
I: Retrieving debconf
I: Validating debconf
I: Retrieving debconf-i18n
I: Validating debconf-i18n
I: Retrieving debianutils
I: Validating debianutils
I: Retrieving dhcp-client
I: Validating dhcp-client
I: Retrieving diff
I: Validating diff
I: Retrieving dpkg
I: Validating dpkg
I: Retrieving dselect
I: Validating dselect
I: Retrieving e2fslibs
I: Validating e2fslibs
I: Retrieving e2fsprogs
I: Validating e2fsprogs
I: Retrieving ed
I: Validating ed
I: Retrieving exim4
I: Validating exim4
I: Retrieving exim4-base
I: Validating exim4-base
I: Retrieving exim4-config
I: Validating exim4-config
I: Retrieving exim4-daemon-light
I: Validating exim4-daemon-light
I: Retrieving fdutils
I: Validating fdutils
I: Retrieving findutils
I: Validating findutils
I: Retrieving gcc-3.3-base
I: Validating gcc-3.3-base
I: Retrieving gettext-base
I: Validating gettext-base
I: Retrieving grep
I: Validating grep
I: Retrieving groff-base
I: Validating groff-base
I: Retrieving gzip
I: Validating gzip
I: Retrieving hostname
I: Validating hostname
I: Retrieving ifupdown
I: Validating ifupdown
I: Retrieving info
I: Validating info
I: Retrieving initscripts
I: Validating initscripts
I: Retrieving ipchains
I: Validating ipchains
I: Retrieving iptables
I: Validating iptables
I: Retrieving iputils-ping
I: Validating iputils-ping
I: Retrieving klogd
I: Validating klogd
I: Retrieving libacl1
I: Validating libacl1
I: Retrieving libattr1
I: Validating libattr1
I: Retrieving libblkid1
I: Validating libblkid1
I: Retrieving libc6
I: Validating libc6
I: Retrieving libcap1
I: Validating libcap1
I: Retrieving libcomerr2
I: Validating libcomerr2
I: Retrieving libconsole
I: Validating libconsole
I: Retrieving libdb1-compat
I: Validating libdb1-compat
I: Retrieving libdb3
I: Validating libdb3
I: Retrieving libdb4.2
I: Validating libdb4.2
I: Retrieving libgcc1
I: Validating libgcc1
I: Retrieving libgcrypt11
I: Validating libgcrypt11
I: Retrieving libgdbm3
I: Validating libgdbm3
I: Retrieving libgnutls11
I: Validating libgnutls11
I: Retrieving libgpg-error0
I: Validating libgpg-error0
I: Retrieving libgpmg1
I: Validating libgpmg1
I: Retrieving liblocale-gettext-perl
I: Validating liblocale-gettext-perl
I: Retrieving liblockfile1
I: Validating liblockfile1
I: Retrieving liblzo1
I: Validating liblzo1
I: Retrieving libncurses5
I: Validating libncurses5
I: Retrieving libnewt0.51
I: Validating libnewt0.51
I: Retrieving libopencdk8
I: Validating libopencdk8
I: Retrieving libpam-modules
I: Validating libpam-modules
I: Retrieving libpam-runtime
I: Validating libpam-runtime
I: Retrieving libpam0g
I: Validating libpam0g
I: Retrieving libpcap0.7
I: Validating libpcap0.7
I: Retrieving libpcre3
I: Validating libpcre3
I: Retrieving libperl5.8
I: Validating libperl5.8
I: Retrieving libpopt0
I: Validating libpopt0
I: Retrieving libsigc++-1.2-5c102
I: Validating libsigc++-1.2-5c102
I: Retrieving libss2
I: Validating libss2
I: Retrieving libssl0.9.7
I: Validating libssl0.9.7
I: Retrieving libstdc++5
I: Validating libstdc++5
I: Retrieving libtasn1-2
I: Validating libtasn1-2
I: Retrieving libtext-charwidth-perl
I: Validating libtext-charwidth-perl
I: Retrieving libtext-iconv-perl
I: Validating libtext-iconv-perl
I: Retrieving libtext-wrapi18n-perl
I: Validating libtext-wrapi18n-perl
I: Retrieving libtextwrap1
I: Validating libtextwrap1
I: Retrieving libuuid1
I: Validating libuuid1
I: Retrieving libwrap0
I: Validating libwrap0
I: Retrieving login
I: Validating login
I: Retrieving logrotate
I: Validating logrotate
I: Retrieving mailx
I: Validating mailx
I: Retrieving makedev
I: Validating makedev
I: Retrieving man-db
I: Validating man-db
I: Retrieving manpages
I: Validating manpages
I: Retrieving mawk
I: Validating mawk
I: Retrieving modutils
I: Validating modutils
I: Retrieving mount
I: Validating mount
I: Retrieving nano
I: Validating nano
I: Retrieving ncurses-base
I: Validating ncurses-base
I: Retrieving ncurses-bin
I: Validating ncurses-bin
I: Retrieving net-tools
I: Validating net-tools
I: Retrieving netbase
I: Validating netbase
I: Retrieving netkit-inetd
I: Validating netkit-inetd
I: Retrieving nvi
I: Validating nvi
I: Retrieving passwd
I: Validating passwd
I: Retrieving perl-base
I: Validating perl-base
I: Retrieving ppp
I: Validating ppp
I: Retrieving pppconfig
I: Validating pppconfig
I: Retrieving pppoe
I: Validating pppoe
I: Retrieving pppoeconf
I: Validating pppoeconf
I: Retrieving procps
I: Validating procps
I: Retrieving sed
I: Validating sed
I: Retrieving slang1a-utf8
I: Validating slang1a-utf8
I: Retrieving sysklogd
I: Validating sysklogd
I: Retrieving sysv-rc
I: Validating sysv-rc
I: Retrieving sysvinit
I: Validating sysvinit
I: Retrieving tar
I: Validating tar
I: Retrieving tasksel
I: Validating tasksel
I: Retrieving tcpd
I: Validating tcpd
I: Retrieving telnet
I: Validating telnet
I: Retrieving util-linux
I: Validating util-linux
I: Retrieving wget
I: Validating wget
I: Retrieving whiptail
I: Validating whiptail
I: Retrieving zlib1g
I: Validating zlib1g
I: Extracting base-files...
I: Extracting base-passwd...
I: Extracting bash...
I: Extracting bsdutils...
I: Extracting coreutils...
I: Extracting debconf...
I: Extracting debconf-i18n...
I: Extracting debianutils...
I: Extracting diff...
I: Extracting dpkg...
I: Extracting dselect...
I: Extracting e2fslibs...
I: Extracting e2fsprogs...
I: Extracting findutils...
I: Extracting gcc-3.3-base...
I: Extracting grep...
I: Extracting gzip...
I: Extracting hostname...
I: Extracting initscripts...
I: Extracting libacl1...
I: Extracting libattr1...
I: Extracting libblkid1...
I: Extracting libc6...
I: Extracting libcap1...
I: Extracting libcomerr2...
I: Extracting libdb1-compat...
I: Extracting libdb3...
I: Extracting libgcc1...
I: Extracting liblocale-gettext-perl...
I: Extracting libncurses5...
I: Extracting libnewt0.51...
I: Extracting libpam-modules...
I: Extracting libpam-runtime...
I: Extracting libpam0g...
I: Extracting libperl5.8...
I: Extracting libpopt0...
I: Extracting libss2...
I: Extracting libstdc++5...
I: Extracting libtext-charwidth-perl...
I: Extracting libtext-iconv-perl...
I: Extracting libtext-wrapi18n-perl...
I: Extracting libuuid1...
I: Extracting login...
I: Extracting makedev...
I: Extracting mawk...
I: Extracting modutils...
I: Extracting mount...
I: Extracting ncurses-base...
I: Extracting ncurses-bin...
I: Extracting passwd...
I: Extracting perl-base...
I: Extracting procps...
I: Extracting sed...
I: Extracting slang1a-utf8...
I: Extracting sysv-rc...
I: Extracting sysvinit...
I: Extracting tar...
I: Extracting util-linux...
I: Extracting whiptail...
I: Extracting zlib1g...
W: Failure trying to run: chroot /home/miracle/work/embedded/emdebian/. mount -t proc proc /proc

下面我们要完善一下这个半成品的rootfs,因为默认是没有用到串口的,因此我们要把缺少的设备文件cp到相应的目录下。

#cp /dev/ttyS* dev/ -arp
#cp /dev/console dev/ -arp

开发板

配置

由于某些开发板网口有点不稳定,提现在与上位机nfs连接时,如出现一个比较大的持续性数据流时,会出现重试现象;可能是由于稳定性不高引起的,不过在小包的处理上基本没有问题,即使在多达10几万个ping中,没有丢包现象,也不能说你的网口一点问题没有。

这里我们忽略bootloader和kernel的问题,假使已经有了现成的bootloader和kernel,我们只需要修改一下环境变量,就可以实现让起加载我们的nfs(需要kernel中支持nfs启动);参数如下:

  • 设置临时的环境变量(参考,这里是否需要,根据你的具体条件而定)
setenv ipaddr 10.129.0.204 setenv serverip 10.129.8.203 setenv bootargs root=/dev/nfs ip=bootp console=ttyS0,115200,mem=64M init=/bin/bash tftp 20400000 uImage9260 bootm 20400000
  • 这样我们就直接进入了终端,然后我们进行如下操作:
#mount -t proc proc /proc #cd /var/cache/apt/archives/ #date 101117412007 (当前时间2007年10月11日17点41分) #export PATH #dpkg -i libc6* libstdc++* libncurses5* #dpkg -i apt_*.deb (这两步出现的错误不用理会) 下面具体根据你的环境而定,还有所选择版本 #echo "deb sarge main">/etc/apt/sources.list 或 #echo "deb sarge main">/etc/apt/sources.list 或 #echo "deb sid main">/etc/apt/sources.list #apt-get update #apt-get -f install -y

如果在apt-get update时出现

E: The method driver /usr/lib/apt/methods/htp could not be found. E: The method driver /usr/lib/apt/methods/htp could not be found.

这个错误,那么就进入/usr/lib/apt/methods/,做一个htp的链接即可,操作如下:

#cd /usr/lib/apt/methods/ #ln -s http htp

这时我们的系统其实就已经安装完毕了,您可以用dpkg -l来查看一下都有那些包安装了;不要看很大,有100多M,其实有用的没有多少,后面我们会介绍如何删减。

现在的系统还不完整,只能说是一个具有Debian包管理机制的rootfs,我们还需要安装一些软件,才能让他更加完善;你会越来越感觉到,这样做的好处,就是你不用自己移植软件了;哈哈哈,轻松多了吧;不过如果你的flash没有多少空间,您还是循规蹈矩的做吧。

我们还需要继续完善这个系统,注意不要重新启动。

  • 全面升级系统
apt-get dist-upgrade -y
  • 修改inittab
vim /etc/inittab //将下面这几行修改 1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6 //改为: 1:2345:respawn:/sbin/getty 115200 ttyS0 2:23:respawn:/sbin/getty 115200 ttyS1 3:23:respawn:/sbin/getty 115200 ttyS2 4:23:respawn:/sbin/getty 115200 ttyS3 5:23:respawn:/sbin/getty 115200 ttyS4 6:23:respawn:/sbin/getty 38400 tty1

这里的2~5,甚至之后添加的设备,是根据具体情况指定的,例如,我们这里是将1~5定义到串口0~4的5个串口中(实际只能4个),您也可以将6定义到LCD等设备中。


应用

重新启动,然后设置我们的环境变量

setenv ipaddr 10.129.0.204 setenv serverip 10.129.8.203 setenv bootargs root=/dev/nfs ip=10.129.0.204 console=ttyS0,115200,mem=64M tftp 20400000 uImage9260 bootm 20400000

随后我们安装snmpd;注意,目前因为还没有时钟芯片还不能存储时间,因此我们在进行登录后的第一件事情就是设置一下我们的系统时间,做完这件事情后

apt-get install snmpd

这时我们还需要运行一下passwd设置一下root密码,即便你不想要密码也要运行一下,不然您登录的时候将无法进入,因为pam的原因。这里我们不深究原因是什么,设置一下密码就可以了。

安装ssh

apt-get install ssh

如果出现下面错误,多半是因为在你还没有构建完毕您的emdebian时,就基于升级版本导致的。例如我们还没有初始化完sarge,就直接用stable版本了,就会导致要安装的包与要卸载的包发生与安装程序依赖冲突的现象。

E: This installation run will require temporarily removing the essential package sysv-rc due to a Conflicts/Pre-Depends loop. This is often ba. E: Internal Error, Could not early remove sysv-rc

到这里我们的emdebian就构建完毕了。


阅读(1242) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~