发布网友
共1个回答
热心网友
1.配置lubuntu主机,使其通过网络连接Banana Pi。
a.在lubuntu主机上,分配一个固定的IP地址到以太网接口(例如,eth0)
#为eth0定义一个静态IP
sudo vi /etc/network/interfaces
auto lo eth0
iface lo inet loopback
iface eth0 inet static
address 192.168.8.1
netmask 255.255.255.0
复制代码
# 重新启动接口
sudo ifup eth0
复制代码
b.在lubuntu主机上,设置dhcp服务器eth0接口
# 安装dhcp服务器
sudo apt-get install isc-dhcp-server
复制代码
# 定义dhcp服务器的操作接口 (eth0)
sudo vi /etc/default/isc-dhcp-server
INTERFACES=”eth0″
复制代码
# 配置一个基本的dhcp服务
sudo vi /etc/dhcp/dhcpd.conf
subnet 192.168.8.0 netmask 255.255.255.0 {
range 192.168.8.16 192.168.8.127;
# hard-wired OpenDNS name server for basic setup
option domain-name-servers 208.67.222.222;
option routers 192.168.8.1;
}
# host banana always gets a fixed IP address
host banana {
fixed-address 192.168.8.8;
}
复制代码
# 重启dhcp服务
sudo service isc-dhcp-server restart
复制代码
c.在lubuntu主机上,设置一个以太网接口到因特网之间的桥接
# 使数据包在ufw中转发
# 在/etc/ufw/sysctl.conf中 取消下面两行命令的注释:
sudo vi /etc/ufw/sysctl.conf
net.ipv4.ip_forward=1
复制代码
# 在/etc/default/ufw中把DEFAULT_FORWARD_POLICY 改为 “ACCEPT” :
sudo vi /etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"
复制代码
# 伪装: 在/etc/ufw/before.rules中,头注释之后,添加以下内容:
sudo vi /etc/ufw/before.rules
# NAT rules (IP Masquerading)
*nat
:POSTROUTING ACCEPT [0:0]
#Forward traffic from eth0 range 192.168.8.xxx to wlan0
-A POSTROUTING -s 192.168.8.0/24 -o wlan0 -j MASQUERADE
# 'COMMIT' the above nat table rules for processing
COMMIT
复制代码
# 重启ufw 服务:
sudo ufw disable && sudo ufw enable
复制代码
2.在lubuntu主机上创建u-boot, script.bin 和banana-pi linux-kernel
a. 在lubuntu主机上安装一个交叉编译器工具链
sudo apt-get install build-essential u-boot-tools uboot-mkimage binutils-arm-linux-gnueabihf gcc-4.6-arm-linux-gnueabihf-base g++-4.6-arm-linux-gnueabihf gcc-arm-linux-gnueabihf cpp-arm-linux-gnueabihf libusb-1.0-0 libusb-1.0-0-dev git wget fakeroot kernel-package zlib1g-dev libncurses5-dev
复制代码
b. 创建u-boot (u-boot-bananapi或者u-boot-sunxi-with-spl.bin)
git clone -b bananapi https://github.com/LeMaker/u-boot-bananapi.git
cd u-boot-bananapi
make CROSS_COMPILE=arm-linux-gnueabihf- Bananapi_config
make CROSS_COMPILE=arm-linux-gnueabihf-
cd ..
复制代码
c. 创建script.bin
git clone https://github.com/LeMaker/sunxi-tools.git
git clone https://github.com/LeMaker/sunxi-boards.git
cd sunxi-tools
make
复制代码
#最后修改板子的配置文件: (SKIPPED HERE)
vi sys_config/a20/Bananapi.fex
cd ..
sunxi-tools/fex2bin sunxi-boards/sys_config/a20/Bananapi.fex script.bin
复制代码
d. 在linux-bananapi/ 中创建linux kernel
git clone -b bananapi-3.4 https://github.com/LeMaker/linux-bananapi.git
cd linux-bananapi/
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2 sun7i_defconfig
复制代码
# 最后微调内核配置 (SKIPPED HERE)
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
复制代码
# 创建 linux-bananapi/arch/arm/boot/uImage (the '-j2' option executes make tasks on two cpus for faster processing)
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2 uImage moles
复制代码
# 在linuxbananapi/output/lib/moles/3.4.90+/中创建模块
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=output moles_install
cd ..
复制代码
3. 设置可启动的SD卡
假定SD卡在/dev/mmcblk0下,有一个空白的分区表而且未挂载. 至少4GB
a. 分区并格式化SD卡
#使用下面的命令对SD卡进行分区
sudo fdisk /dev/mmcblk0
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): (enter)
Using default response p
Partition number (1-4, default 1): (enter)
Using default value 1
First sector (2048-xxxxx, default 2048): (enter)
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-xxxxx, default xxxxx): +20M
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): (enter)
Using default response p
Partition number (1-4, default 2): (enter)
Using default value 2
First sector (43008-xxxxx, default 43008): (enter)
Using default value 43008
Last sector, +sectors or +size{K,M,G} (43008-15523839, default 15523839): (enter)
Using default value xxxxx
Command (m for help): w
sudo sfdisk -R /dev/mmcblk0
sudo mkfs.ext2 /dev/mmcblk0p1
sudo mkfs.ext4 /dev/mmcblk0p2
复制代码
b. 将bootloader, boot 脚本和内核映像加到boot分区
sudo dd if=/dev/zero of=/dev/mmcblk0 bs=1k count=1023 seek=1
sudo sfdisk -R /dev/mmcblk0
sudo dd if=u-boot-bananapi/u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8
sudo mount /dev/mmcblk0p1 /mnt
复制代码
# 创建bootloader脚本
sudo vi /mnt/boot.cmd
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait panic=10 disp.screen0_output_mode=EDID:1280x720p50 hdmi.audio=EDID:0
ext2load mmc 0 0x43000000 script.bin
ext2load mmc 0 0x48000000 uImage
bootm 0x48000000
sudo mkimage -C none -A arm -T script -d /mnt/boot.cmd /mnt/boot.scr
复制代码
# 拷贝内核映像和banana配置脚本到SD卡
sudo cp linux-bananapi/arch/arm/boot/uImage /mnt
sudo cp sunxi-boards/script.bin /mnt
sudo umount /mnt
复制代码
c.用debootstrap安装一个debian wheezy 文件系统
#在lubuntu主机上设置debootstrap
sudo mount /dev/mmcblk0p2 /mnt
sudo apt-get install qemu-user-static debootstrap binfmt-support
rootdir=/mnt
dist=wheezy
sudo debootstrap --arch=armhf --foreign $dist $rootdir
复制代码
#准备把chroot放到/mnt中
sudo cp /usr/bin/qemu-arm-static /mnt/usr/bin/
sudo cp /etc/resolv.conf /mnt/etc/
复制代码
# 把chroot放到/mnt中,然后安装debootstrap
sudo chroot /mnt
dist=wheezy
export LANG=C
/debootstrap/debootstrap –second-stage
复制代码
# 配置apt源
cat <<EOT > /etc/apt/sources.list
deb http://ftp.uk.debian.org/debian $dist main contrib non-free
deb-src http://ftp.uk.debian.org/debian $dist main contrib non-free
deb http://ftp.uk.debian.org/debian $dist-updates main contrib non-free
deb-src http://ftp.uk.debian.org/debian $dist-updates main contrib non-free
deb http://security.debian.org/debian-security $dist/updates main contrib non-free
deb-src http://security.debian.org/debian-security $dist/updates main contrib non-free
EOT
cat <<EOT > /etc/apt/apt.conf.d/71-no-recommends
APT::Install-Recommends "0";
APT::Install-Suggests "0";
EOT
复制代码
# 更新安装包然后将语系配置为en_US.UTF-8
apt-get update
dpkg-reconfigure locales
复制代码
# 在提示信息中均选择en_US.UTF-8 export LANG=en_US.UTF-8
# 安装一个ssh服务器使之可以通过网络安全登录, 并且可以自动设置日期和时间 (可选)
apt-get install openssh-server ntpdate
复制代码
# 更改root 密码
passwd
复制代码
# 查看/etc/ssh/sshd_config中以下选项并设置为yes: (注意,第一次登录的时候, 最好设置一个用户账户并通过设置选项为no禁用root权限)
vi /etc/ssh/sshd_config
PermitRootLogin yes
复制代码
# 更改banana pi的主机名 vi /etc/hostname
banana
复制代码
# 在/etc/dhcp/dhclient.conf 中,将下列行添加上或者取消注释以使banana识别lubuntu主机上的DHCP服务
vi /etc/dhcp/dhclient.conf
send host-name = gethostname();
复制代码
# 基于eth0进行自动dhcp连接
vi /etc/network/interfaces
auto lo eth0
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet dhcp
复制代码
# 确保必要的时候串行控制台重新生成
echo T0:2345:respawn:/sbin/getty -L ttyS0 115200 vt100 >> /etc/inittab
复制代码
#在退出chroot之前终止ssh服务然后清除rootfs
/etc/init.d/ssh stop
复制代码
退出
sudo rm /mnt/usr/bin/qemu-arm-static /mnt/etc/resolv.conf
复制代码
d. 把kernel模块拷贝到rootfs
sudo mkdir -p /mnt/lib/moles
sudo rm -rf /mnt/lib/moles/
sudo cp -r linux-bananapi/output/lib/ /mnt/
sudo umount /mnt
复制代码
4. 给BananaPi供电
a. 连接banana pi
# 将banana pi的 usb/OTG 口连接到 lubuntu 主机的USB口或者直接利用适配器供电
# 在lubuntu主机和banana pi (ssh登录)之间连接以太网网线
# 最后在banana pi和lubuntu主机(控制台) 之间连接一个 USB-TTL 串行线
# 把SD卡插入Banana Pi
b. 给banana-pi供电
# 按下电源按钮
# 等待绿色LED灯闪烁 (几秒之后)
# 等待以太网接口启动(以太网连接器下的*LED灯)
c. 通过ssh登录