构建根文件系统
初始根文件系统
安装gcc库:
$ cd /vita
$ cp -d cross-tool/i686-none-linux-gnu/lib/lib*.so.*[0-9] sysroot/lib
建立相关目录
$ cd /vita/sysroot
$ mkdir sys proc dev run root
构建程序/sbin/init
$ echo '#!/bin/bash
export HOME=/root
exec /bin/bash -l
' > /vita/sysroot/sbin/init
$ chmod +x /vita/sysroot/sbin/init
$ echo 'export PS1="\[\e[31;1m\]\u@vita:\[\e[35;1m\]\w# \[\e[0m\]"' > /vita/sysroot/etc/profile
部署:
$ cd /vita/sysroot
$ tar zcvf ../sysroot.tgz *
$ scp ../sysroot.tgz root@192.168.1.103:/root/
以读写模式重新挂载文件系统
$ cd /vita/sysroot/bin
$ sudo chown root.root mount umount
$ sudo chmod 4755 mount umount
$ echo '#!/bin/bash
mount -o remount,rw /dev/sda5 /
export HOME=/root
exec /bin/bash -l
' > /vita/sysroot/sbin/init
配置支持内核网络
配置内核支持tcp/ip协议栈
- 执行 make menuconfig;
- 选择“Networking support”;
- 选择“Nexworking options”
- 选中“TCP/IP networking”
配置内核支持网卡
- 执行 make menuconfig;
- 选择 “Network Devices”;
- 选择 “Network device support”;
- 选择 Ethernet driver support
- 将 Interl(R) PRO/1000 Gigabit Ethernet support 配置为模块。
启动udev
$ echo '#!/bin/bash
mount -o remount,rw /dev/sda5 /
udevd --daemon
udevadm trigger --action=add
udevadm settle
export HOME=/root
exec /bin/bash -l
' > /vita/sysroot/sbin/init
安装网络配置工具并配置网络
安装命令ip
$ cd /vita/build
$ tar xvf ../source/iproute2-3.8.0.tar.xz
$ cd iproute2-3.8.0
修改Makefile中的SUBDIRS为"SUBDIRS=lib ip"
$ make install
安装命令"ping"
$ cd /vita/build
$ tar xvf ../source/iputils-s20121221.tar.bz2
$ cd iputils-s20121221
修改Makefile中”IPV4_TARGETS“为”IPV4_TARGETS=ping“;"IPV6_TARGETS"为"IPV6_TARGETS=tracepath6 traceroute6 ping6";"TAREGTS"为"TAREGTS=$(IPV4_TARGETS)";"USE_CAP"为”USE_CAP=no“
$ make
$ cp ping /vita/sysroot/bin
添加网络配置:
$ echo '#!/bin/bash
mount -o remount,rw /dev/sda5 /
udevd --daemon
udevadm trigger --action=add
udevadm settle
ip link set eth0 up
ip addr add 192.168.56.2/24 dev eth0
export HOME=/root
exec /bin/bash -l
' > /vita/sysroot/sbin/init
安装并配置ssh服务
安装zlib:
$ cd /vita/build
$ tar xvf ../source/zlib-1.2.7.tar.bz2
$ cd zlib-1.2.7
$ ./configure --prefix=/usr
$ make
$ make install
$ find $SYSROOT -name "*.la" -exec rm -rf '{}' \;
安装openssl
$ cd /vita/build
$ tar xvf ../source/openssl-1.0.1e.tar.gz
$ cd openssl-1.0.1e
$ ./config --prefix=/usr --openssldir=/etc/ssl
$ make
$ make install MANDIR=/usr/share/man INSTALL_PREFIX=$SYSROOT
$ find $SYSROOT -name "*.la" -exec rm -rf '{}' \;
安装openssh
$ cd /vita/build
$ tar xvf ../source/openssh-6.1p1.tar.gz
$ cd openssh-6.1p1
$ LD=i686-none-linux-gnu-gcc ./configure \
--prefix=/usr --sysconfdir=/etc/ssh \
--without-openssl-header-check
$ make install DESTDIR=$SYSROOT
修改/vita/sysroot/etc/ssh/sshd_config如下字段:
UsePricilegeSeparation no
PermitRootLogin yes
PermitEmptyPasswords yes
创建用户信息:
$ echo "root::0:0::/root:/bin/bash" > /vita/sysroot/etc/passwd
$ echo "root::0:" > /vita/sysroot/etc/group
挂载devpts,启动ssh
$ echo '#!/bin/bash
mount -o remount,rw /dev/sda5 /
udevd --daemon
udevadm trigger --action=add
udevadm settle
ip link set eth0 up
ip addr add 192.168.56.2/24 dev eth0
mkdir /dev/pts
mount -n -t devpts devpts /dev/pts
/usr/sbin/sshd
export HOME=/root
exec /bin/bash -l
' > /vita/sysroot/sbin/init
在测试机上创建密钥:
$ ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
$ ssh-keygen -t rsa -f /etc/ssh_host_rsa_key
$ ssh-keygen -t ecdsa -f /etc/ssh_host_ecdsa_key
重新启动测试机,可以通过ssh使用root用户登陆测试机。