是否有适合在 ARM 处理器上运行的 8gb Cubox-i4 的 Ubuntu 映像?

是否有适合在 ARM 处理器上运行的 8gb Cubox-i4 的 Ubuntu 映像?

我很高兴社区中的任何人都可以帮助我解决上述问题。目前,我有一张 8gb SD 卡,我想安装任何支持 ARM imx6 架构的 ubuntu DE。(Cubox-i4)有我可以下载图片的链接吗?这是因为我已经在 Cubox-i4 上尝试了很多图片,其中很多都不稳定,导致 LCD 屏幕在开机时闪烁。

答案1

运行以下命令:

cd
mkdir rootfs 
debootstrap --foreign --include=vim,dialog,apt --variant=minbase --arch=armhf xenial rootfs http://ports.ubuntu.com

运行之后:

mount -o bind /dev rootfs/dev
mount -o bind /dev/pts rootfs/dev/pts
mount -t sysfs /sys rootfs/sys
mount -t proc /proc rootfs/proc
cp /proc/mounts rootfs/etc/mtab
chroot rootfs

现在在 中chroot运行:

/debootstrap/debootstrap --second-stage
localedef -i en_XX -c -f UTF-8 en_XX.UTF-8 #replace XX with your country code
dpkg-reconfigure locales
dpkg-reconfigure tzdata
echo utilite > /etc/hostname
echo "127.0.0.1       localhost" >> /etc/hosts
echo "
deb http://ports.ubuntu.com/ xenial main restricted universe multiverse
deb http://ports.ubuntu.com/ xenial-security main restricted universe multiverse
deb http://ports.ubuntu.com/ xenial-updates main restricted universe multiverse
deb http://ports.ubuntu.com/ xenial-backports main restricted universe multiverse
" > /etc/apt/sources.list
dd if=/sys/bus/i2c/devices/0-0050/eeprom bs=1 count=6 skip=4 2>/dev/null | od -A "n" -t x1 # note the output of this!!!
echo "
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo eth0 
iface lo inet loopback
iface eth0 inet dhcp
iface eth1 inet dhcp
hwaddress ether put-here-the-output-of-what-you-just-noted
iface mlan0 inet dhcp
" > /etc/network/interfaces
echo "
# ttymxc3 - getty
#
# This service maintains a getty on ttymxc3

description "Get a getty on ttymxc3"

start on runlevel [2345]
stop on runlevel [016]

respawn

exec /sbin/getty -L 115200 ttymxc3
#exec /sbin/getty -l /usr/bin/autologin -n 115200 ttymxc3 
" > /etc/init/ttymxc3.conf
adduser <user>
usermod -aG adm,cdrom,sudo,plugdev <user>
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl
apt-get install make gcc bc lzop ssh man sudo ntp ntpdate usbutils pciutils less lsof most sysfsutils u-boot-tools linux-firmware linux-firmware-nonfree isc-dhcp-client net-tools # DO NOT INSTALL THE LINUX KERNEL!!!
rm /sbin/initctl
dpkg-divert --local --rename --remove /sbin/initctl
exit

现在回到正常环境,运行:

cd
sudo apt-get install software-properties-common python-software-properties
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9
sudo update-alternatives --config gcc
git clone -b boundary-imx_4.1.15_1.0.0_ga git://github.com/boundarydevices/linux-imx6.git
cd boundary-imx_4.1.15_1.0.0_ga
export PATH=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.1
export ARCH=arm
export CROSS_COMPILE=arm-none-linux-gnueabi-
git checkout origin/boundary-imx_4.1.15_1.0.0_ga -b boundary-imx_4.1.15_1.0.0_ga
make nitrogen6x_defconfig
make uImage modules
INSTALL_MOD_PATH=~/rootfs make modules_install
INSTALL_MOD_PATH=~/rootfs make firmware_install
INSTALL_MOD_PATH=~/rootfs make headers_install
# Please uncomment one the following lines below
#  imx6q-sbc-fx6m.dtb: is used by the Utilite Pro
#  imx6dl-sbc-fx6m.dtb: is used by the Utilite Standard 
#cat arch/arm/boot/zImage arch/arm/boot/dts/imx6q-sbc-fx6m.dtb > /tmp/zImage-cm-fx6
#cat arch/arm/boot/zImage arch/arm/boot/dts/imx6dl-sbc-fx6m.dtb > /tmp/zImage-cm-fx6
mkimage -A arm -O linux -T kernel -C none -a 0x10008000 -e 0x10008000 -n 3.10.17-cm-fx6-1-beta4-aufs -d /tmp/zImage-cm-fx6 /boot/uImage-cm-fx6
rm -f /tmp/zImage-cm-fx6

终于!我们快完成了。

将 Cubox 的前端口连接到计算机。现在运行:

sudo mount /dev/ttymxc3 /mnt
cd ~/rootfs
tar --numeric-owner –cpjf ~/xenial.tar.bz2 *

上述命令将需要很长时间。

旧版本的 U-Boot 固件需要一个vfat分区来加载内核映像。因此,您倾向于使用一个较小的vfat分区来保存内核映像,并使用一个较大的ext4分区来保存其余部分。在 ARM 平台上,第一个分区通常从扇区 2048 开始,如果您希望随后将 U-Boot 固件放在 uSD 上,则需要保留足够的空间。在 PC 平台上,您可以在创建分区方案时检查这一点:

echo -e "n\np\n1\n\n+100M\na\n1\nt\nc\nn\np\n2\n\n\nw\neof\n" | fdisk /dev/ttymxc

如果您已经更新了 U-Boot 固件和环境,则不再需要两个单独的分区。只需创建一个大ext4分区即可。

以 root 身份运行:mkfs.vfat -n boot /dev/ttymxc1 # 如果您需要 fat 分区 mkfs.ext4 -O ^has_journal -E stride=2,stripe-width=1024 -b 4096 -L rootfs /dev/ttymxc2 # 如果您不需要 fat 分区,请将最后 2 改为 1

mount /dev/ttymxc2 /mnt # change the last 2 to 1 if you didn't need a fat partition
mkdir /mnt/boot 
mount /dev/ttymxc1 /mnt/boot # exclude this if you didn't need a fat partition
tar --numeric-owner –xpjf ~/trusty.tar.bz2 –C /mnt
sync
cp ~/boundary-imx_4.1.15_1.0.0_ga/arch/arm/boot/uImage /mnt/boot/uImage-cm-fx6_3.0.35-6.1
sync
umount /mnt
umount /mnt/boot

终于。我们完成了!

我花了很长时间才找到正确的答案,如果我错了,请编辑它来修复它。

相关内容