mirror of
				https://github.com/vyos/vyos-build.git
				synced 2025-10-01 20:28:40 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			159 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| #
 | |
| # Copyright (C) 2016 VyOS maintainers and contributors
 | |
| #
 | |
| # This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 or later as published by the Free Software Foundation.
 | |
| #
 | |
| # This program is distributed in the hope that it will be useful,
 | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| # GNU General Public License for more details.
 | |
| #
 | |
| # You should have received a copy of the GNU General Public License
 | |
| # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |
| #
 | |
| # File: build-clearfog-image
 | |
| # Purpose:
 | |
| # Build VyOS image for for Solidrun clearfog.
 | |
| 
 | |
| lb bootstrap
 | |
| lb chroot
 | |
| lb installer
 | |
| lb binary_chroot
 | |
| lb chroot_devpts install
 | |
| lb chroot_proc install
 | |
| lb chroot_selinuxfs install
 | |
| lb chroot_sysfs install
 | |
| lb chroot_hosts install
 | |
| lb chroot_resolv install
 | |
| lb chroot_hostname install
 | |
| lb chroot_sysv-rc install
 | |
| lb chroot_upstart install
 | |
| lb chroot_apt install-binary
 | |
| lb chroot_archives chroot install
 | |
| lb binary_rootfs
 | |
| lb binary_manifest
 | |
| lb binary_package-lists
 | |
| lb binary_linux-image
 | |
| lb binary_memtest
 | |
| lb binary_grub
 | |
| lb binary_grub2
 | |
| lb binary_syslinux
 | |
| lb binary_disk
 | |
| lb binary_loadlin
 | |
| lb binary_win32-loader
 | |
| lb binary_includes
 | |
| lb binary_hooks
 | |
| lb binary_checksums
 | |
| 
 | |
| # get vyos build version
 | |
| version=$(cat version)
 | |
| dateymd=$(date +%Y%m%d)
 | |
| 
 | |
| # create sd-card image and partition it
 | |
| qemu-img create -f raw sr-a38x-cf-vyos-"$dateymd"-testing.img 1.8G
 | |
| parted --script sr-a38x-cf-vyos-"$dateymd"-testing.img mklabel msdos
 | |
| parted --script sr-a38x-cf-vyos-"$dateymd"-testing.img mkpart primary fat16 8192s 60
 | |
| parted --script sr-a38x-cf-vyos-"$dateymd"-testing.img mkpart primary ext2 60 1900
 | |
| parted --script sr-a38x-cf-vyos-"$dateymd"-testing.img set 1 boot on
 | |
| 
 | |
| # mount image and create filesystems
 | |
| losetup /dev/loop0 sr-a38x-cf-vyos-"$dateymd"-testing.img
 | |
| partprobe /dev/loop0
 | |
| mkfs.vfat -n EFI -F 16 -I /dev/loop0p1
 | |
| mkfs.ext2 -L persistence /dev/loop0p2
 | |
| 
 | |
| # mount image partitions
 | |
| mkdir -p /boot/efi
 | |
| mount /dev/loop0p1 /boot/efi
 | |
| mkdir -p /mnt
 | |
| mount /dev/loop0p2 /mnt
 | |
| 
 | |
| # setup files on image
 | |
| mkdir -p /mnt/boot/grub
 | |
| mkdir -p /mnt/boot/"$version"/rw
 | |
| echo "/ union" > /mnt/persistence.conf
 | |
| cp binary/live/filesystem.squashfs /mnt/boot/"$version"/"$version.squashfs"
 | |
| cp binary/live/initrd.img-* /mnt/boot/"$version"/initrd.img
 | |
| cp binary/live/vmlinuz-* /mnt/boot/"$version"/vmlinuz
 | |
| cp ../tools/armada-388-clearfog.dtb /boot/efi/armada-388-clearfog.dtb
 | |
| 
 | |
| # create boot script
 | |
| cat > /boot/efi/boot.script << EOF
 | |
| # load DTB
 | |
| echo "Loading armada-388-clearfog.dtb"
 | |
| load mmc 0:1 \$fdt_addr_r armada-388-clearfog.dtb
 | |
| fdt addr \$fdt_addr_r 20000
 | |
| 
 | |
| # load efi
 | |
| echo "Loading EFI image ..."
 | |
| load mmc 0:1 \$loadaddr EFI/debian/grubarm.efi
 | |
| 
 | |
| # Sleep a while so the MMC driver can settle down
 | |
| echo "Sleeping 5 seconds ..."
 | |
| sleep 5
 | |
| 
 | |
| # boot
 | |
| echo "Booting ..."
 | |
| bootefi \$loadaddr
 | |
| EOF
 | |
| 
 | |
| # compile boot script for u-boot
 | |
| mkimage -A arm -O linux -T script -C none -a 0 -e 0 -d /boot/efi/boot.script /boot/efi/boot.scr
 | |
| 
 | |
| # create grub config file to include
 | |
| cat > load.cfg << EOF
 | |
| set root=(hd0,msdos2)
 | |
| set prefix=(hd0,msdos2)/boot/grub
 | |
| devicetree (hd0,msdos1)/armada-388-clearfog.dtb
 | |
| insmod normal
 | |
| normal
 | |
| EOF
 | |
| 
 | |
| # create grub menu
 | |
| cat > /mnt/boot/grub/grub.cfg << EOF
 | |
| set default=0
 | |
| set timeout=5
 | |
| 
 | |
| echo -n Press ESC to enter the Grub menu...
 | |
| if sleep --verbose --interruptible 5 ; then
 | |
| 	terminal_input console serial
 | |
| fi
 | |
| 
 | |
| 
 | |
| menuentry "VyOS $version (Serial console)" {
 | |
|         linux /boot/"$version"/vmlinuz boot=live quiet vyos-union=/boot/"$version" console=ttyS0,115200n8
 | |
|         initrd /boot/"$version"/initrd.img
 | |
| }
 | |
| 
 | |
| menuentry "Lost password change $version (Serial console)" {
 | |
|         linux /boot/"$version"/vmlinuz boot=live quiet vyos-union=/boot/"$version" console=ttyS0,115200n8 init=/opt/vyatta/sbin/standalone_root_pw_reset
 | |
|         initrd /boot/"$version"/initrd.img
 | |
| }
 | |
| EOF
 | |
| 
 | |
| # install efi grub to image
 | |
| grub-install  --efi-directory /boot/efi --boot-directory /mnt/boot -d /usr/lib/grub/arm-efi /dev/loop0
 | |
| 
 | |
| # create grub efi executable
 | |
| grub-mkimage -O arm-efi -p /boot/grub -d /usr/lib/grub/arm-efi -c load.cfg \
 | |
| ext2 iso9660 linux echo configfile \
 | |
| search_label search_fs_file search \
 | |
| search_fs_uuid ls normal gzio \
 | |
| png fat gettext font minicmd \
 | |
| gfxterm gfxmenu video video_fb \
 | |
| part_msdos part_gpt > /boot/efi/EFI/debian/grubarm.efi
 | |
| 
 | |
| # unmount image partitions
 | |
| umount /mnt
 | |
| umount /boot/efi
 | |
| 
 | |
| # write u-boot to image
 | |
| dd if=../tools/u-boot-spl.kwb of=/dev/loop0 bs=512 seek=1
 | |
| 
 | |
| # unmount image
 | |
| sudo losetup -D
 | |
| 
 | |
| # compress image
 | |
| xz -v sr-a38x-cf-vyos-"$dateymd"-testing.img
 |