How to build one Debian 10 SDcard image for i.MX8
From ESS-WIKI
Revision as of 02:10, 17 April 2020 by Winston.huang (talk | contribs) (Created page with "{{DISPLAYTITLE:How to build one Debian 10 SDcard image for i.MX8}} {| align="right" |- | __TOC__ |} <!-- --> = Host Prerequisites = == required packages == <syntaxhighligh...")
Host Prerequisites
required packages
sudo apt-get install binfmt-support qemu-user-static wget
modinfo binfmt_misc
pre-built Yocto SD card image
- e.g. 5720A1AIM20LIV90100_iMX8M_2020-04-03.img.gz
uncompress the image
SDIMAGE=5720A1AIM20LIV90100_iMX8M_2020-04-03.img
zcat $SDIMAGE.gz > $SDIMAGE
backup modules and firmware
BACKUPDIR=~/${SDIMAGE%%_*}
mkdir $BACKUPDIR
MNT=~/mnt
mkdir -p $MNT
PL=`fdisk -lu $SDIMAGE | grep "83 Linux" | awk '{print $2}'`
sudo mount -o offset=$((PL*512)) $SDIMAGE $MNT
sudo tar zcvf $BACKUPDIR/lib_modules.tgz -C $MNT lib/modules
sudo tar zcvf $BACKUPDIR/lib_firmware.tgz -C $MNT lib/firmware
sudo umount $MNT
Building Procedures
getting Debian 10 (Buster) base rootfs
export ROOTFS=~/rootfs_arm64-deb10
sudo apt -y install debian-archive-keyring
sudo apt-key add /usr/share/keyrings/debian-archive-keyring.gpg
sudo qemu-debootstrap --arch=arm64 \
--keyring /usr/share/keyrings/debian-archive-keyring.gpg \
--variant=buildd \
--exclude=debfoster buster $ROOTFS http://ftp.debian.org/debian
chroot environment
before entering a chroot
sudo mount -t proc proc $ROOTFS/proc
sudo mount -t sysfs sysfs $ROOTFS/sys
sudo mount --bind /dev $ROOTFS/dev
sudo mount --bind /dev/pts $ROOTFS/dev/pts
entering a chroot
HOME=/root sudo chroot $ROOTFS /bin/bash --login -i
installation
cd ~
apt-get update
apt -y install iputils-ping iproute2 lsb-release vim
apt -y install python2.7-minimal
ln -s python2.7 /usr/bin/python
ln -sf bash /bin/sh
ln -sf bash.1.gz /usr/share/man/man1/sh.1.gz
apt -y install sudo
apt -y install systemd systemd-sysv kmod
apt -y install network-manager
apt -y install parted
configuration
groupadd -g 1000 adv
useradd -u 1000 -d /home/adv -m -g adv -G adm,sudo,audio adv
CRYPT=$(python -c 'import crypt; print crypt.crypt("'adv'", "$6$fWqaDxsq")')
sed -i "s|^adv:[^:]\+:|adv:$CRYPT:|" /etc/shadow
sed -i "s/^root:[^:]\+:/root::/" /etc/shadow
echo "iMX8" > /etc/hostname
echo -e "127.0.0.1 localhost \n127.0.1.1 `cat /etc/hostname`\n" > /etc/hosts
ln -sf ../run/resolvconf/resolv.conf /etc/resolv.conf
apt-get clean
mkdir /lib/modules
mkdir /lib/firmware
history -c && rm ~/.bash_history
leaving the chroot
logout
after leaving the chroot
sudo umount -lf $ROOTFS/dev/pts
sudo umount -lf $ROOTFS/dev
sudo umount $ROOTFS/sys
sudo umount $ROOTFS/proc
Creating Debian 10 SDcard image
duplicate from Yocto SDcard image
DEBIMAGE=`sed "s/AIM20.*LIV/DIV/" <<< ${SDIMAGE%%_*}`_Debian10_base.img
cp $SDIMAGE $DEBIMAGE
mkfs.ext4 -F -E offset=$((PL*512)) $DEBIMAGE
restore modules & firmware
sudo mount -o offset=$((PL*512)) $DEBIMAGE $MNT
sudo rsync -av $ROOTFS/ $MNT/
sudo tar zxvf $BACKUPDIR/lib_modules.tgz -C $MNT
sudo tar zxvf $BACKUPDIR/lib_firmware.tgz -C $MNT
sudo umount $MNT