No "Install" option in armbian-config - how to upgrade bootloader?


Recommended Posts

My Helios64 has been booting from an M.2 drive since I got it, and while I've been doing regular apt-upgrades I've been ignoring the bootloader. This post suggests that could be a problem, so I figured I'd upgrade the bootloader through armbian-config. Trouble is, I can't.

 

I can load armbian-config without error, but when I go into System there's no Install option any more. All I have are Freeze, Nightly, Lowlevel, Bootenv, CPU, Avahi, Hardware, Other, SSH, Firmware, ZSH, Default.

 

Is there another way to ensure the bootloader is up-to-date?

Link to post
Share on other sites
Armbian is a community driven open source project. Do you like to contribute your code?

6 hours ago, gprovost said:

Humm that's funny. You can call directly the sub app that is in charge of installing / updating bootloader.

 


$> nand-sata-install

 

You should use option 5.

 

Unfortunately, that doesn't work either - and may provide a hint as to why there's no option to install from armbian-config. If I run nand-sata-install, I get a message reading "This tool must be run from SD-card!" - which, of course, it's not, it's being run from the SATA SSD.

 

Is there a way to update the bootloader without taking the system down, booting from an SD card, updating the bootloader, removing the SD card, and rebooting back into the installed operating system again? Because that's a bit of a slog, especially if the bootloader's going to need regular updates...

Link to post
Share on other sites

@Igor I've seen you post the same copy-and-paste message to others, and I remain as unimpressed now as the first time I saw it. I'm not asking you, nor Armbian, for support, here: I'm asking Kobol, to whom I have paid money for a commercial product with support, to assist me. If you want to help me, feel free; if not, kindly leave Kobol and its appointed representatives to the task.

 

I'll be honest: if I'd know about your user-hostile attitude before pre-ordering the Helios64, I wouldn't have ordered it at all - I'd have bought something that ran plain-Jane Ubuntu instead. It's certainly put me off using Armbian in the future, and I'm only still here because I don't want the money I've spent on the Helios64 to be wasted.

 

@gprovost Thanks for offering your assistance. Here's the output:

 

Quote

~$ lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop1          7:1    0   272K  1 loop /snap/bpytop/199
loop2          7:2    0  57.2M  1 loop /snap/core20/907
loop3          7:3    0  57.2M  1 loop /snap/core20/877
loop4          7:4    0    27M  1 loop /snap/snapd/11043
loop5          7:5    0   280K  1 loop /snap/bpytop/203
loop6          7:6    0    27M  1 loop /snap/snapd/10709
sda            8:0    0 223.6G  0 disk
└─sda1         8:1    0 223.6G  0 part /
sdc            8:32   0   5.5T  0 disk /media/mirror1
sdd            8:48   0   5.5T  0 disk
mmcblk1      179:0    0  14.6G  0 disk
└─mmcblk1p1  179:1    0  14.4G  0 part /media/mmcboot
mmcblk1boot0 179:32   0     4M  1 disk
mmcblk1boot1 179:64   0     4M  1 disk
zram0        251:0    0   1.9G  0 disk [SWAP]
zram1        251:1    0   500M  0 disk /var/log

 

~$ cat /proc/mounts
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,nosuid,noexec,relatime,size=1869836k,nr_inodes=467459,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,nodev,noexec,relatime,size=389116k,mode=755 0 0
/dev/sda1 / ext4 rw,noatime,nodiratime,errors=remount-ro,commit=600 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
tmpfs /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
tmpfs /sys/fs/cgroup tmpfs ro,nosuid,nodev,noexec,mode=755 0 0
cgroup2 /sys/fs/cgroup/unified cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate 0 0
cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,name=systemd 0 0
pstore /sys/fs/pstore pstore rw,nosuid,nodev,noexec,relatime 0 0
none /sys/fs/bpf bpf rw,nosuid,nodev,noexec,relatime,mode=700 0 0
cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0
cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0
cgroup /sys/fs/cgroup/net_cls,net_prio cgroup rw,nosuid,nodev,noexec,relatime,net_cls,net_prio 0 0
cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpu,cpuacct 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0
cgroup /sys/fs/cgroup/hugetlb cgroup rw,nosuid,nodev,noexec,relatime,hugetlb 0 0
cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0
cgroup /sys/fs/cgroup/pids cgroup rw,nosuid,nodev,noexec,relatime,pids 0 0
cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0
cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0
cgroup /sys/fs/cgroup/rdma cgroup rw,nosuid,nodev,noexec,relatime,rdma 0 0
systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=28,pgrp=1,timeout=0,minproto=5,maxproto=5,direct 0 0
hugetlbfs /dev/hugepages hugetlbfs rw,relatime,pagesize=2M 0 0
mqueue /dev/mqueue mqueue rw,nosuid,nodev,noexec,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,nosuid,nodev,noexec,relatime 0 0
tracefs /sys/kernel/tracing tracefs rw,nosuid,nodev,noexec,relatime 0 0
fusectl /sys/fs/fuse/connections fusectl rw,nosuid,nodev,noexec,relatime 0 0
configfs /sys/kernel/config configfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /tmp tmpfs rw,nosuid,relatime 0 0
/dev/loop2 /snap/core20/907 squashfs ro,nodev,relatime 0 0
/dev/loop1 /snap/bpytop/199 squashfs ro,nodev,relatime 0 0
/dev/loop3 /snap/core20/877 squashfs ro,nodev,relatime 0 0
/dev/mmcblk1p1 /media/mmcboot ext4 rw,noatime,nodiratime,errors=remount-ro,commit=600 0 0
/dev/mmcblk1p1 /boot ext4 rw,noatime,nodiratime,errors=remount-ro,commit=600 0 0
/dev/sdc /media/mirror1 btrfs rw,nosuid,nodev,noexec,noatime,nodiratime,compress-force=zstd:3,space_cache,subvolid=5,subvol=/ 0 0
/dev/sda1 /var/log.hdd ext4 rw,noatime,nodiratime,errors=remount-ro,commit=600 0 0
/dev/zram1 /var/log ext4 rw,relatime,discard 0 0
tmpfs /run/user/998 tmpfs rw,nosuid,nodev,relatime,size=389112k,mode=700,uid=998,gid=998 0 0
tracefs /sys/kernel/debug/tracing tracefs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /run/user/1000 tmpfs rw,nosuid,nodev,relatime,size=389112k,mode=700,uid=1000,gid=1000 0 0
/dev/loop6 /snap/snapd/10709 squashfs ro,nodev,relatime 0 0
/dev/loop4 /snap/snapd/11043 squashfs ro,nodev,relatime 0 0
/dev/loop5 /snap/bpytop/203 squashfs ro,nodev,relatime 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,nosuid,nodev,noexec,relatime 0 0

 

Everything should be pretty standard, except I increased the zram log partition size because I have a server running which generates quite a lot of log data over time.

Link to post
Share on other sites

Ok here the dirty way to update it in your specific case where eMMC is at /dev/mmcblk1

 

Quote

cd /usr/lib/linux-u-boot-current-helios64_21.02.1_arm64
dd if=idbloader.bin of=/dev/mmcblk1 seek=64 conv=notrunc
dd if=uboot.img of=/dev/mmcblk1 seek=16384 conv=notrunc
dd if=trust.bin of=/dev/mmcblk1 seek=24576 conv=notrunc

 

We will work on nand-sata-install to support the use case of rootfs on HDD/SSD and bootloader on eMMC.

Link to post
Share on other sites

I have the same exact issue as with Gareth above where the boot OSs on the EMMc and OS on my M2 SATA and I can't upgrade the bootloader for the SAME reasons. FYI...I'm on  5.10.16-rockchip64 Armbian 21.02.2

 

My "lsblk" key info is: 

mmcblk2      179:0    0  14.6G  0 disk
└─mmcblk2p1  179:1    0  14.4G  0 part /media/mmcboot
mmcblk2boot0 179:32   0     4M  1 disk
mmcblk2boot1 179:64   0     4M  1 disk

 

Not sure what you needed with the cat /proc/mounts so here's the dump (minus some other drive and ram non necessary info):

 

sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,nosuid,relatime,size=1868980k,nr_inodes=467245,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,noexec,relatime,size=389020k,mode=755 0 0
/dev/sda1 / ext4 rw,noatime,nodiratime,errors=remount-ro,commit=600 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
tmpfs /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
tmpfs /sys/fs/cgroup tmpfs ro,nosuid,nodev,noexec,mode=755 0 0

systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=35,pgrp=1,timeout=0,minproto=5,maxproto=5,direct 0 0
hugetlbfs /dev/hugepages hugetlbfs rw,relatime,pagesize=2M 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
mqueue /dev/mqueue mqueue rw,relatime 0 0
sunrpc /run/rpc_pipefs rpc_pipefs rw,relatime 0 0
fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0
configfs /sys/kernel/config configfs rw,relatime 0 0
nfsd /proc/fs/nfsd nfsd rw,relatime 0 0
tmpfs /tmp tmpfs rw,relatime 0 0

/dev/mmcblk2p1 /media/mmcboot ext4 rw,noatime,nodiratime,errors=remount-ro,commit=600 0 0
/dev/mmcblk2p1 /boot ext4 rw,noatime,nodiratime,errors=remount-ro,commit=600 0 0

tracefs /sys/kernel/debug/tracing tracefs rw,relatime 0 0
nsfs /run/docker/netns/6406a1ca38e9 nsfs rw 0 0
tmpfs /run/user/0 tmpfs rw,nosuid,nodev,relatime,size=389016k,mode=700 0 0
 

Can I assume the I change the lines from above to this below?????  (i.e, to the correct Armbian version of 21.02.2 and my bootloader of mmcblk2).

 

cd /usr/lib/linux-u-boot-current-helios64_21.02.2_arm64
dd if=idbloader.bin of=/dev/mmcblk2 seek=64 conv=notrunc
dd if=uboot.img of=/dev/mmcblk2 seek=16384 conv=notrunc
dd if=trust.bin of=/dev/mmcblk2 seek=24576 conv=notrunc

 

I want to make sure I do this right to avoid a serious boot error

Thanks Kobol team!!!

 

Link to post
Share on other sites

Yes you can look in /usr/lib which is the latest linux-u-boot-current-helios64_XX.YY.X_arm64 folder and use it then with the same above dd commands

 

But please take note that it is usually not necessary to update u-boot. If your system boot fine and works fine then there isn't much benefit at updating U-boot and taking the risk to mess up something.

Link to post
Share on other sites

I can confirm that the following procedure updates u-boot on emmc without any issues:

 

# cd /usr/lib/linux-u-boot-current-helios64_21.02.3_arm64
# ls -la
total 8404
drwxrwxr-x  2 root root    4096 Mar  9 11:01 .
drwxr-xr-x 80 root root    4096 Mar  9 11:01 ..
-rw-rw-r--  1 root root  206844 Mar  8 15:55 idbloader.bin
-rw-rw-r--  1 root root 4194304 Mar  8 15:55 trust.bin
-rw-rw-r--  1 root root 4194304 Mar  8 15:55 uboot.img

# dd if=idbloader.bin of=/dev/mmcblk2 seek=64 conv=notrunc
# dd if=uboot.img of=/dev/mmcblk2 seek=16384 conv=notrunc
# dd if=trust.bin of=/dev/mmcblk2 seek=24576 conv=notrunc

# reboot now

 

Link to post
Share on other sites