clover

1. 製做nandflash鏡像

1.1 編譯開發板提供的內核

問題1:arm-linux-gnueabi-gcc: error: directory: No such file or directory

參考:php

http://elastostester.elastos.org/2015/01/29/allwinner4_2_2_sdk2-1_orig%E7%BC%96%E8%AF%91%E5%A4%B1%E8%B4%A5%E9%97%AE%E9%A2%98%EF%BC%88%E4%B8%8Esvnversion%E6%9C%89%E5%85%B3%EF%BC%89/linux

https://github.com/cubieboard/cubieboard.org/issues/5git

內核和uboot編譯成功之後執行build pack打包鏡像文件,生成的鏡像文件是基於flash的,只能燒寫工具燒如flash後從flash啓動。github

2. 製做基於sun-xi社區的sd卡鏡像

參考:https://linux-sunxi.org/Manual_build_howtobootstrap

2.1 工具鏈

2.2 uboot

有2個方案能夠選擇,一個是從sunxi分支編譯,一個是從主線編譯。svn

從sunxi分支編譯參考:https://linux-sunxi.org/U-Boot#Compile_U-Boot工具

能夠經過boot.scr 文件來設置uboot環境變量,boot.scr 文件是從boot.cmd文件轉換來的:ui

mkimage -C none -A arm -T script -d boot.cmd boot.scr

參數配置參考:https://linux-sunxi.org/U-Boot/Configurationspa

2.3 內核

一樣能夠選擇從sunxi分支或者主線編譯:.net

https://linux-sunxi.org/Linux_Kernel#Compilation

2.4 script.bin

參考:https://linux-sunxi.org/Script.bin#Build_script.bin

script.bin是sunxi替代設備樹dtb用於描述系統設備的文件,是從script.fex文件轉換來的。

這裏只須要選取A20的某個板子的基礎上進行調整便可。

2.5 sd卡啓動盤

 參考:https://linux-sunxi.org/Bootable_SD_card

2.5.1 清空sd卡

dd if=/dev/zero of=${card} bs=1M count=1

2.5.2 安裝BootLoader

dd if=u-boot-sunxi-with-spl.bin of=${card} bs=1024 seek=8

2.5.3 建立及格式化分區

blockdev --rereadpt ${card}

cat <<EOT | sfdisk ${card}

1M,16M,c

,,L

EOT

格式化:

mkfs.vfat ${card}${p}1

mkfs.ext4 ${card}${p}2

2.5.4 boot分區

mount ${card}${p}1 /mnt/

cp linux-sunxi/arch/arm/boot/uImage /mnt/

cp sunxi-boards/sys_config/a10/script.bin /mnt/

umount /mnt/

若是須要修改uboot環境變量還須要拷貝boot.scr文件

2.5.5 文件系統

這裏選擇debootstrap方案,建立基於debain的根文件系統

1)準備階段

debootstrap --arch=armhf --foreign $distro /mnt/

這個操做會花費很長時間

完成以後須要chroot到/mnt繼續進行第二階段的操做

cp /usr/bin/qemu-arm-static /mnt/usr/bin/
chroot /mnt /usr/bin/qemu-arm-static /bin/sh -i
/debootstrap/debootstrap --second-stage

2)更新目標系統apt源 及 fstab

cat <<EOT > etc/apt/sources.list
deb http://http.debian.net/debian $distro main contrib non-free
deb-src http://http.debian.net/debian $distro main contrib non-free
deb http://http.debian.net/debian $distro-updates main contrib non-free
deb-src http://http.debian.net/debian $distro-updates main contrib non-free
deb http://security.debian.org/debian-security $distro/updates main contrib non-free
deb-src http://security.debian.org/debian-security $distro/updates main contrib non-free
EOT
cat <<EOT >> etc/fstab
none	/tmp	tmpfs	defaults,noatime,mode=1777 0 0
# if you have a separate boot partition
${card}${p}1	/boot	vfat defaults 0 0 
EOT

後續

exit
cp /etc/resolv.conf /mnt/etc
chroot /mnt
export LANG=C
apt-get update
# set up 'apt
cat <<END > /etc/apt/apt.conf.d/71-no-recommends
APT::Install-Recommends "0";
APT::Install-Suggests "0";
END
# set up locales (Debian) - dpkg scripts tend to complain otherwise
apt-get install locales
dpkg-reconfigure locales
# Choose en_US.UTF-8 for both prompts, or whatever you want.
export LANG=en_US.UTF-8
# install your favourite packages here
apt-get install nvi ; apt-get remove nano 
# set root password - otherwise you won't be able to log in
passwd
exit
# cleanup
rm /mnt/usr/bin/qemu-arm-static /mnt/etc/resolv.conf
# ensure hostname has not carried over from your build host
echo something > /mnt/etc/hostname
# enable serial console (Debian/sysvinit way)
echo T0:2345:respawn:/sbin/getty -L ttyS0 115200 vt100 >> etc/inittab
# enable serial console (Ubuntu/upstart way - TBD)
umount /mnt

3. 建立armbian鏡像

參考:https://forum.armbian.com/index.php/topic/6-how-to-build-my-own-image-or-kernel/

相關文章
相關標籤/搜索