Welcome! Log In Create A New Profile

Advanced

Help flashing to a Sheevaplug NAND

Posted by Nanode 
Help flashing to a Sheevaplug NAND
October 18, 2023 06:06AM
Hi,

tl:dr I can boot Debian Bookworm on my Sheevaplug from USB but need some help flashing the NAND and booting from there.

I have a Sheevaplug Dev Kit from 2009 (?).

For many years it ran a host of static and WordPress websites, booting from an MMC.

It was retired a few years ago in favour of a RasPi4 with an SSD.

I have decided to bring it back to life and use it as a DNS server, VPN and for PiHole.

I have the Debian Bookworm uImage and uInitrd files from here:
https://ftp.debian.org/debian/dists/bookworm/main/installer-armel/current/images/kirkwood/netboot/marvell/sheevaplug/

My u-boot is from here:
https://forum.doozan.com/read.php?3,12381

These files are on my tftp server and the only changes to the u-boot were to add the tftp and machine settings.

I have created a Debian Bookworm USB from the above and can boot from it.

However I am a bit stuck on copying the files to NAND and getting it to boot from there.

These are the steps I have taken, with the terminal responses.

I'm not sure whether my process is at fault or I am doing something else wrong.

Most of the following came from the instructions here:
http://web.archive.org/web/20101011142054/https://www.plugcomputer.org/plugwiki/index.php/Installing_Debian_To_Flash#Convert_internal_flash_root_partition_to_UBIFS

Boot to working Debian from USB
~~~~~~~~~~~~~~~~~~~~~~~~~~
Plug in and power up
Interrupt autoboot
setenv bootargs_console console=ttyS0,115200
setenv bootcmd_usb 'usb start; ext2load usb 0:1 0x00800000 /uImage; ext2load usb 0:1 0x01100000 /uInitrd'
setenv bootcmd 'setenv bootargs ${bootargs_console}; run bootcmd_usb; bootm 0x00800000 0x01100000'
run bootcmd

Login
~~~~
login
su

Install mtd-utils
~~~~~~~~~~~
apt-get install mtd-utils

    root@sheevaplug:~# apt-get install mtd-utils
    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    mtd-utils is already the newest version (1:2.1.5-1).
    mtd-utils set to manually installed.
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    root@sheevaplug:~#


Add in the modprobe
~~~~~~~~~~~~~~~~
/usr/sbin/modprobe ubi

Format internal flash root partition to UBIFS
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/sbin/ubiformat /dev/mtd2 -s 512

    root@sheevaplug:~# /usr/sbin/ubiformat /dev/mtd2 -s 512
    ubiformat: mtd2 (nand), size 531628032 bytes (507.0 MiB), 4056 eraseblocks of 131072 bytes (128.0 KiB), min. I/O size 2048 bytes
    libscan: scanning eraseblock 4055 -- 100 % complete  
    ubiformat: 4055 eraseblocks have valid erase counter, mean value is 1
    ubiformat: 1 bad eraseblocks found, numbers: 2854
    ubiformat: formatting eraseblock 4055 -- 100 % complete  
    root@sheevaplug:~#

/usr/sbin/ubiattach /dev/ubi_ctrl -m 2

    root@sheevaplug:~# /usr/sbin/ubiattach /dev/ubi_ctrl -m 2
    [  183.188203] ubi0: attaching mtd2
    [  183.819624] ubi0: scanning is finished
    [  183.848784] ubi0: attached mtd2 (name "root", size 507 MiB)
    [  183.854457] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 129024 bytes
    [  183.861403] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 512
    [  183.868155] ubi0: VID header offset: 512 (aligned 512), data offset: 2048
    [  183.875011] ubi0: good PEBs: 4055, bad PEBs: 1, corrupted PEBs: 0
    [  183.881158] ubi0: user volume: 0, internal volumes: 1, max. volumes count: 128
    [  183.888437] ubi0: max/mean erase counter: 5/2, WL threshold: 4096, image sequence number: 728050822
    [  183.897554] ubi0: available PEBs: 3972, total reserved PEBs: 83, PEBs reserved for bad PEB handling: 79
    [  183.907057] ubi0: background thread "ubi_bgt0d" started, PID 334
    UBI device number 0, total 4055 LEBs (523192320 bytes, 498.9 MiB), available 3972 LEBs (512483328 bytes, 488.7 MiB), LEB size 129024 bytes (126.0 KiB)
    root@sheevaplug:~#

/usr/sbin/ubimkvol /dev/ubi0 -N rootfs -m

    root@sheevaplug:~# /usr/sbin/ubimkvol /dev/ubi0 -N rootfs -m
    Set volume size to 512483328
    Volume ID 0, size 3972 LEBs (512483328 bytes, 488.7 MiB), LEB size 129024 bytes (126.0 KiB), dynamic, name "rootfs", alignment 1
    root@sheevaplug:~#

mount -t ubifs ubi0:rootfs /mnt

    root@sheevaplug:~# mount -t ubifs ubi0:rootfs /mnt
    [  233.439620] UBIFS (ubi0:0): default file-system created
    [  233.446912] UBIFS (ubi0:0): Mounting in unauthenticated mode
    [  233.478930] UBIFS (ubi0:0): background thread "ubifs_bgt0_0" started, PID 360
    [  233.542937] UBIFS (ubi0:0): UBIFS: mounted UBI device 0, volume 0, name "rootfs"
    [  233.550425] UBIFS (ubi0:0): LEB size: 129024 bytes (126 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes
    [  233.560431] UBIFS (ubi0:0): FS size: 510418944 bytes (486 MiB, 3956 LEBs), max 3972 LEBs, journal size 25546752 bytes (24 MiB, 198 LEBs)
    [  233.572786] UBIFS (ubi0:0): reserved for root: 4952683 bytes (4836 KiB)
    [  233.579454] UBIFS (ubi0:0): media format: w5/r0 (latest is w5/r0), UUID 2BA446B8-3BF9-44E2-AAA0-7A29202B3F5A, small LPT model
    mount: (hint) your fstab has been modified, but systemd still uses
           the old version; use 'systemctl daemon-reload' to reload.
    mount: (hint) your fstab has been modified, but systemd still uses
           the old version; use 'systemctl daemon-reload' to reload.
    root@sheevaplug:~#

Backup fstab
~~~~~~~~~~
cp /etc/fstab /etc/fstab.bak

Change fstab
~~~~~~~~~~~
nano /etc/fstab

Replace with:
/dev/root / ubifs defaults,noatime,rw 0 0
tmpfs /var/run tmpfs size=1M,rw,nosuid,mode=0755 0 0
tmpfs /var/lock tmpfs size=1M,rw,noexec,nosuid,nodev,mode=1777 0 0
tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0

nano /etc/fstab
    # <file system> <mount point>   <type>  <options>       <dump>  <pass>
    /dev/root  /               ubifs   defaults,noatime,rw                      0 0
    tmpfs      /var/run        tmpfs   size=1M,rw,nosuid,mode=0755              0 0
    tmpfs      /var/lock       tmpfs   size=1M,rw,noexec,nosuid,nodev,mode=1777 0 0
    tmpfs      /tmp            tmpfs   defaults,nosuid,nodev                    0 0

Clone USB rootfs to NAND
~~~~~~~~~~~~~~~~~~~~~
mkdir /tmp/rootfs

mount -o bind / /tmp/rootfs/

cd /tmp/rootfs

sync

cp -a . /mnt/

    root@sheevaplug:/tmp/rootfs# cp -a . /mnt/
    [ 1102.885700] usb 1-1: reset high-speed USB device number 2 using orion-ehci
    [ 1103.067693] sd 0:0:0:0: [sda] tag#0 FAILED Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK cmd_age=0s
    [ 1103.077024] sd 0:0:0:0: [sda] tag#0 CDB: Read(10) 28 00 00 18 e6 78 00 00 08 00
    [ 1103.084434] I/O error, dev sda, sector 1631864 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 2
    cp: preserving permissions for ‘/mnt/./var/log/journal/75e30cfb7de24a1aa004fabd2a8a8a68/system@000605c9542dfb52-1ac8dc41d880b815.journal~’: Operation not supported
    cp: preserving permissions for ‘/mnt/./var/log/journal/75e30cfb7de24a1aa004fabd2a8a8a68/system.journal’: Operation not supported
    cp: preserving permissions for ‘/mnt/./var/log/journal/75e30cfb7de24a1aa004fabd2a8a8a68/user-1000.journal’: Operation not supported
    cp: preserving permissions for ‘/mnt/./var/log/journal/75e30cfb7de24a1aa004fabd2a8a8a68’: Operation not supported
    cp: preserving permissions for ‘/mnt/./var/log/journal’: Operation not supported
    root@sheevaplug:/tmp/rootfs#

Restore fstab
~~~~~~~~~~
cp /etc/fstab.bak /etc/fstab

Reboot
~~~~~~
systemctl reboot

Interrupt autoboot

Flash the kernel
~~~~~~~~~~~~
Set the envars if not already done
setenv serverip 192.168.0.205 #Host
setenv ipaddr 192.168.0.201 #Sheevaplug
setenv ethaddr 00:50:43:01:63:EA
setenv macaddr 00:50:43:01:63:EA
saveenv
tftpboot 0x00800000 uImage

Erase the old kernel
nand erase 0x100000 0x400000

Write the new kernel into NAND flash
nand write 0x800000 0x100000 0x400000

Set the env variables
~~~~~~~~~~~~~~~~
setenv bootargs_ubi console=ttyS0,115200 ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs
setenv bootcmd_nand_read nand read 0x800000 0x100000 0x400000
setenv bootcmd 'setenv bootargs $(bootargs_ubi); run bootcmd_nand_read; bootm 0x800000'
saveenv
boot

    Sheevaplug> boot

    NAND read: device 0 offset 0x100000, size 0x400000
     4194304 bytes read: OK
    ## Booting kernel from Legacy Image at 00800000 ...
       Image Name:   Debian kernel
       Created:      2023-10-01  22:16:20 UTC
       Image Type:   ARM Linux Kernel Image (uncompressed)
       Data Size:    2634776 Bytes = 2.5 MiB
       Load Address: 00008000
       Entry Point:  00008000
       Verifying Checksum ... OK
       Loading Kernel Image ... OK

    Starting kernel ...

This is where it hangs.

So I'm not sure what I've done wrong.

It boots and works from the USB, so are my envvars wrong or did I bungle the flashing process ?

Any help, guidance or advice would be much appreciated.

(I'm not particularly attached to getting the above process working, I'd like to be able to boot from NAND so will happily follow any alternative routes to achieving this.)

    Sheevaplug> printenv
    arcNumber=2097
    baudrate=115200
    bootargs_ubi=console=ttyS0,115200 ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs
    bootcmd=setenv bootargs $(bootargs_ubi); run bootcmd_nand_read; bootm 0x800000
    bootcmd_exec=run load_uimage; if run load_initrd; then if run load_dtb; then bootm $load_uimage_addr $load_initrd_addr $load_dtb_addr; else bootm $load_uimage_addr $load_initrd_addr; fi; else if run load_dtb; then bootm $load_uimage_addr - $load_dtb_addr; else bootm $load_uimage_addr; fi; fi
    bootcmd_nand_read=nand read 0x800000 0x100000 0x400000
    bootcmd_uenv=run uenv_load; if test $uenv_loaded -eq 1; then run uenv_import; fi
    bootdelay=10
    bootdev=usb
    console=ttyS0,115200
    device=0:1
    devices=usb ide mmc
    disks=0 1 2 3
    dtb_file=/boot/dts/kirkwood-sheevaplug.dtb
    ethact=egiga0
    ethaddr=00:50:43:01:63:EA
    if_netconsole=ping $serverip
    ipaddr=192.168.0.201
    led_error=orange blinking
    led_exit=green off
    led_init=green blinking
    load_dtb=echo loading DTB $dtb_file ...; load $bootdev $device $load_dtb_addr $dtb_file
    load_dtb_addr=0x1c00000
    load_initrd=echo loading uInitrd ...; load $bootdev $device $load_initrd_addr /boot/uInitrd
    load_initrd_addr=0x1100000
    load_uimage=echo loading uImage ...; load $bootdev $device $load_uimage_addr /boot/uImage
    load_uimage_addr=0x800000
    macaddr=00:50:43:01:63:EA
    mainlineLinux=yes
    mtdids=nand0=orion_nand
    mtdparts=mtdparts=orion_nand:1M(u-boot),4M(uImage),32M(rootfs),-(data)
    partition=nand0,2
    preboot_nc=run if_netconsole start_netconsole
    scan_disk=echo running scan_disk ...; scan_done=0; setenv scan_usb "usb start";  setenv scan_ide "ide reset";  setenv scan_mmc "mmc rescan"; for dev in $devices; do if test $scan_done -eq 0; then echo Scan device $dev; run scan_$dev; for disknum in $disks; do if test $scan_done -eq 0; then echo device $dev $disknum:1; if load $dev $disknum:1 $load_uimage_addr /boot/uImage 1; then scan_done=1; echo Found bootable drive on $dev $disknum; setenv device $disknum:1; setenv bootdev $dev; fi; fi; done; fi; done
    serverip=192.168.0.205
    set_bootargs=setenv bootargs console=ttyS0,115200 root=LABEL=rootfs rootdelay=10 $mtdparts $custom_params
    start_netconsole=setenv ncip $serverip; setenv bootdelay 10; setenv stdin nc; setenv stdout nc; setenv stderr nc; version;
    stderr=serial
    stdin=serial
    stdout=serial
    uenv_addr=0x810000
    uenv_import=echo importing envs ...; env import -t $uenv_addr $filesize
    uenv_init_devices=setenv init_usb "usb start";  setenv init_ide "ide reset";  setenv init_mmc "mmc rescan"; for devtype in $devices; do run init_$devtype; done;
    uenv_load=run uenv_init_devices; setenv uenv_loaded 0; for devtype in $devices;  do for disknum in 0; do run uenv_read_disk; done; done;
    uenv_read=echo loading envs from $devtype $disknum ...; if load $devtype $disknum:1 $uenv_addr /boot/uEnv.txt; then setenv uenv_loaded 1; fi
    uenv_read_disk=if test $devtype -eq mmc; then if $devtype part; then run uenv_read;  fi; else if $devtype part $disknum; then run uenv_read; fi;  fi
    usb_ready_retry=15

    Environment size: 3056/131068 bytes
    Sheevaplug>
Re: Help flashing to a Sheevaplug NAND
October 18, 2023 06:08AM
As I said above, I'm not particularly attached to getting the above process working per se.

I'd like to be able to boot from NAND so will happily follow any alternative routes to achieving this.

e.g. is there a way to load both the Debian Bookworm uImage and uInitrd files and install to NAND ?
Re: Help flashing to a Sheevaplug NAND
October 18, 2023 01:08PM
Nanode,

> I'd like to be able to boot from NAND so will
> happily follow any alternative routes to achieving
> this.

This Sheevaplug has only 512MB NAND space. I would not recommend running Debian entirely from flash. Eventually you will run out of room to upgrade. And so for Debian, the rootfs should be on USB or NFS storage.

For whatever reason, if you really want to run everything from NAND then I would recommend installing OpenWrt. It's pretty good for this purpose.

=========

With that said, in your installation, the missing/wrong part is the mtdparts.
mtdparts=mtdparts=orion_nand:1M(u-boot),4M(uImage),32M(rootfs),-(data)
The above is the default for the current u-boot.

BTW, when you post boot log, please post the entire log from u-boot banner to the last line. As of right now I'm not sure which u-boot version you are running.

In Debian, you have formatted the mtd2 successfully as followed:
root@sheevaplug:~# /usr/sbin/ubiformat /dev/mtd2 -s 512
    ubiformat: mtd2 (nand), size 531628032 bytes (507.0 MiB), 4056 eraseblocks of 131072 bytes (128.0 KiB), min. I/O size 2048 bytes
This showed mtd2 is 507 MB. So mtds definition for this Debian system is not the same as what I've defined for this u-boot and the my released rootfs here (mtd2 is 32MB).

To see what the definition should be, log into Debian and do
dmesg
cat /proc/mtd
and post the log here.

-bodhi
===========================
Forum Wiki
bodhi's corner (buy bodhi a beer)



Edited 2 time(s). Last edit at 10/18/2023 02:07PM by bodhi.
Re: Help flashing to a Sheevaplug NAND
October 19, 2023 03:36AM
Hi,

Thank you for taking the time to get back to me.

> BTW, when you post boot log, please post the entire log from u-boot banner to the last line. As of right now I'm not sure which u-boot version you are running.

Apologies for that, for some reason I missed posting that info.

    U-Boot 2017.07-tld-2 (Dec 04 2017 - 02:00:45 -0800)
    Marvell-Sheevaplug

    SoC:   Kirkwood 88F6281_A0
    DRAM:  512 MiB
    WARNING: Caches not enabled
    NAND:  512 MiB
    MMC:   MVEBU_MMC: 0
    In:    serial
    Out:   serial
    Err:   serial
    Net:   egiga0
    88E1116 Initialized on egiga0
    Hit any key to stop autoboot:  0 
    Sheevaplug> version

    U-Boot 2017.07-tld-2 (Dec 04 2017 - 02:00:45 -0800)
    Marvell-Sheevaplug
    gcc (Debian 6.3.0-18) 6.3.0 20170516
    GNU ld (GNU Binutils for Debian) 2.28
    Sheevaplug>

Running:

cat /proc/mtd

Gives:

    root@sheevaplug:~# cat /proc/mtd
    dev:    size   erasesize  name
    mtd0: 00100000 00020000 "u-boot"
    mtd1: 00400000 00020000 "uImage"
    mtd2: 1fb00000 00020000 "root"
    root@sheevaplug:~#

Running:

dmesg

Gives a long log, which I have posted below, and also attached but I'm guessing that these are the pertinent lines:

    [   18.850683] 3 fixed-partitions partitions found on MTD device orion_nand
    [   18.857502] Creating 3 MTD partitions on "orion_nand":
    [   18.876896] 0x000000000000-0x000000100000 : "u-boot"
    [   18.892994] 0x000000100000-0x000000500000 : "uImage"
    [   18.909506] 0x000000500000-0x000020000000 : "root"

> I would not recommend running Debian entirely from flash.

I think this is probably why I ran the OS from an MMC for so many years, the storage constraint.

However, right now my thought process is something like:

I have no idea what I'm doing.

I know how to, and can boot from, external storage.

I have a working kernel and filesystem on external storage.

If I can learn how to write to flash, and if I can write what is known to be working to flash, I will have another piece of the knowledge jigsaw.

If it doesn't boot, it is either the writing to flash process or the boot process that is failing.

> In Debian, you have formatted the mtd2 successfully

So it must be the boot process that I've bungled.

My aim is to get to a 'known good point' that I can progress forward from.

> This showed mtd2 is 507 MB. So mtds definition for this Debian system is not the same as what I've defined for this u-boot and the my released rootfs here (mtd2 is 32MB).

I have read that thread a few times now.

Am I reading it correctly in that it details how to update an existing installation?

There is no mention of how to get those files onto NAND.

This is definately something that I would be keen to return to and install.

> For whatever reason, if you really want to run everything from NAND then I would recommend installing OpenWrt. It's pretty good for this purpose.

I came across OpenWrt as I was looking into how to flash, it is definately a rabbit hole I'll look down once I have a working unit and am more confident (and knowing that I have a 'known good point' that I can always get back to).

> To see what the definition should be, log into Debian and do [...]

This is the bit where I come unstuck; how to translate the addresses into the bootcmd vars.

Thank you in advance for any help, advice or pointers you can give.

The dmesg log is here:

    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Linux version 6.1.0-13-marvell (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 Debian 6.1.55-1 (2023-09-29)
    [    0.000000] CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=0005397f
    [    0.000000] CPU: VIVT data cache, VIVT instruction cache
    [    0.000000] OF: fdt: Machine model: Globalscale Technologies SheevaPlug
    [    0.000000] Memory policy: Data cache writeback
    [    0.000000] Zone ranges:
    [    0.000000]   Normal   [mem 0x0000000000000000-0x000000001fffffff]
    [    0.000000]   HighMem  empty
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000000000000-0x000000001fffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000001fffffff]
    [    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
    [    0.000000] pcpu-alloc: [0] 0 
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 130048
    [    0.000000] Kernel command line: console=ttyS0,115200
    [    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
    [    0.000000] mem auto-init: stack:all(zero), heap alloc:on, heap free:off
    [    0.000000] Memory: 495044K/524288K available (4842K kernel code, 838K rwdata, 1632K rodata, 212K init, 227K bss, 29244K reserved, 0K cma-reserved, 0K highmem)
    [    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    [    0.000000] trace event string verifier disabled
    [    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
    [    0.000000] clocksource: orion_clocksource: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 9556302233 ns
    [    0.000002] sched_clock: 32 bits at 200MHz, resolution 5ns, wraps every 10737418237ns
    [    0.000041] Switching to timer-based delay loop, resolution 5ns
    [    0.000259] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
    [    0.000288] CPU: Testing write buffer coherency: ok
    [    0.000419] pid_max: default: 32768 minimum: 301
    [    0.000939] LSM: Security Framework initializing
    [    0.001284] landlock: Up and running.
    [    0.001294] Yama: disabled by default; enable with sysctl kernel.yama.*
    [    0.001579] AppArmor: AppArmor initialized
    [    0.001963] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
    [    0.001996] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
    [    0.006309] cblist_init_generic: Setting adjustable number of callback queues.
    [    0.006326] cblist_init_generic: Setting shift to 0 and lim to 1.
    [    0.006700] Setting up static identity map for 0x8220 - 0x825c
    [    0.006984] mvebu-soc-id: MVEBU SoC ID=0x6281, Rev=0x2
    [    0.008694] devtmpfs: initialized
    [    0.013512] VFP support v0.3: not present
    [    0.013684] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [    0.013725] futex hash table entries: 256 (order: -1, 3072 bytes, linear)
    [    0.013956] pinctrl core: initialized pinctrl subsystem
    [    0.016380] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [    0.017167] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.018061] audit: initializing netlink subsys (disabled)
    [    0.018563] audit: type=2000 audit(0.016:1): state=initialized audit_enabled=0 res=1
    [    0.019507] thermal_sys: Registered thermal governor 'fair_share'
    [    0.019524] thermal_sys: Registered thermal governor 'bang_bang'
    [    0.019533] thermal_sys: Registered thermal governor 'step_wise'
    [    0.019539] thermal_sys: Registered thermal governor 'user_space'
    [    0.019588] cpuidle: using governor ladder
    [    0.019970] Feroceon L2: Enabling L2
    [    0.020006] Feroceon L2: Cache support initialised.
    [    0.026610] No ATAGs?
    [    0.060853] clocksource: Switched to clocksource orion_clocksource
    [    0.061741] VFS: Disk quotas dquot_6.6.0
    [    0.061828] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
    [    0.062683] AppArmor: AppArmor Filesystem Enabled
    [    0.064440] NET: Registered PF_INET protocol family
    [    0.069030] IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear)
    [    0.071059] tcp_listen_portaddr_hash hash table entries: 1024 (order: 0, 4096 bytes, linear)
    [    0.071302] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.071337] TCP established hash table entries: 4096 (order: 2, 16384 bytes, linear)
    [    0.071422] TCP bind hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.071915] TCP: Hash tables configured (established 4096 bind 4096)
    [    0.072048] UDP hash table entries: 256 (order: 0, 4096 bytes, linear)
    [    0.072081] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes, linear)
    [    0.072362] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [    0.072452] PCI: CLS 0 bytes, default 32
    [    0.077461] Trying to unpack rootfs image as initramfs...
    [    0.140392] Initialise system trusted keyrings
    [    0.140504] Key type blacklist registered
    [    0.141701] workingset: timestamp_bits=30 max_order=17 bucket_order=0
    [    0.149368] Key type asymmetric registered
    [    0.149384] Asymmetric key parser 'x509' registered
    [    4.060055] Freeing initrd memory: 16688K
    [    4.101989] alg: self-tests for CTR-KDF (hmac(sha256)) passed
    [    4.102286] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
    [    4.104712] kirkwood-pinctrl f1010000.pin-controller: registered pinctrl driver
    [    4.108065] mv_xor f1060800.xor: Marvell shared XOR driver
    [    4.146742] mv_xor f1060800.xor: Marvell XOR (Registers Mode): ( xor cpy intr )
    [    4.147388] mv_xor f1060900.xor: Marvell shared XOR driver
    [    4.182740] mv_xor f1060900.xor: Marvell XOR (Registers Mode): ( xor cpy intr )
    [    4.183476] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
    [    4.184839] printk: console [ttyS0] disabled
    [    4.184969] f1012000.serial: ttyS0 at MMIO 0xf1012000 (irq = 27, base_baud = 12500000) is a 16550A
    [    4.718702] printk: console [ttyS0] enabled
    [    4.724312] i2c_dev: i2c /dev entries driver
    [    4.729704] ledtrig-cpu: registered to indicate activity on CPUs
    [    4.737012] registered taskstats version 1
    [    4.741200] Loading compiled-in X.509 certificates
    [    4.787317] Loaded X.509 cert 'Debian Secure Boot CA: 6ccece7e4c6c0d1f6149f3dd27dfcc5cbb419ea1'
    [    4.796387] Loaded X.509 cert 'Debian Secure Boot Signer 2022 - linux: 14011249c2675ea8e5148542202005810584b25f'
    [    4.846337] Key type encrypted registered
    [    4.850693] AppArmor: AppArmor sha1 policy hashing enabled
    [    4.862381] Freeing unused kernel image (initmem) memory: 212K
    [    4.868294] Kernel memory protection not selected by kernel config.
    [    4.874636] Run /init as init process
    [    4.878332]   with arguments:
    [    4.878343]     /init
    [    4.878351]   with environment:
    [    4.878358]     HOME=/
    [    4.878365]     TERM=linux
    [    5.465281] rtc-mv f1010300.rtc: registered as rtc0
    [    5.500983] rtc-mv f1010300.rtc: setting system clock to 2000-11-13T03:02:28 UTC (974084548)
    [    5.604355] mv643xx_eth: MV-643xx 10/100/1000 ethernet driver version 1.4
    [    5.675826] usbcore: registered new interface driver usbfs
    [    5.730281] usbcore: registered new interface driver hub
    [    5.768518] usbcore: registered new device driver usb
    [    5.810758] orion-ehci f1050000.ehci: EHCI Host Controller
    [    5.840113] orion-ehci f1050000.ehci: new USB bus registered, assigned bus number 1
    [    5.850323] orion-ehci f1050000.ehci: irq 32, io mem 0xf1050000
    [    5.868875] orion-ehci f1050000.ehci: USB 2.0 started, EHCI 1.00
    [    5.875324] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.01
    [    5.883674] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [    5.890953] usb usb1: Product: EHCI Host Controller
    [    5.895871] usb usb1: Manufacturer: Linux 6.1.0-13-marvell ehci_hcd
    [    5.902183] usb usb1: SerialNumber: f1050000.ehci
    [    5.908966] hub 1-0:1.0: USB hub found
    [    5.912795] hub 1-0:1.0: 1 port detected
    [    5.927786] mmc0: host does not support reading read-only switch, assuming write-enable
    [    5.944424] mmc0: new high speed SDHC card at address 0001
    [    5.964106] mmcblk0: mmc0:0001 SD3.0 3.74 GiB 
    [    5.979354]  mmcblk0: p1 p2 p3 < p5 >
    [    6.172892] usb 1-1: new high-speed USB device number 2 using orion-ehci
    [    6.334455] usb 1-1: New USB device found, idVendor=0781, idProduct=5567, bcdDevice= 1.00
    [    6.342754] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    [    6.349962] usb 1-1: Product: Cruzer Blade
    [    6.354098] usb 1-1: Manufacturer: SanDisk
    [    6.358230] usb 1-1: SerialNumber: 4C530001170729109504
    [    6.408050] SCSI subsystem initialized
    [    6.428957] usb-storage 1-1:1.0: USB Mass Storage device detected
    [    6.440306] scsi host0: usb-storage 1-1:1.0
    [    6.448193] usbcore: registered new interface driver usb-storage
    [    6.460436] usbcore: registered new interface driver uas
    [    6.497939] mv643xx_eth_port mv643xx_eth_port.0 eth0: port 0 with MAC address 00:50:43:01:63:ea
    [    7.457781] scsi 0:0:0:0: Direct-Access     SanDisk  Cruzer Blade     1.00 PQ: 0 ANSI: 6
    [    7.556272] sd 0:0:0:0: [sda] 15630336 512-byte logical blocks: (8.00 GB/7.45 GiB)
    [    7.566368] sd 0:0:0:0: [sda] Write Protect is off
    [    7.571238] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00
    [    7.571971] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
    [    7.591104]  sda: sda1 sda2 sda3 < sda5 >
    [    7.599941] sd 0:0:0:0: [sda] Attached SCSI removable disk
    [    9.044200] EXT4-fs (sda2): mounted filesystem with ordered data mode. Quota mode: none.
    [    9.906131] systemd[1]: System time before build time, advancing clock.
    [   10.000600] systemd[1]: Inserted module 'autofs4'
    [   10.082643] NET: Registered PF_INET6 protocol family
    [   10.149591] Segment Routing with IPv6
    [   10.153536] In-situ OAM (IOAM) with IPv6
    [   10.230268] systemd[1]: systemd 252.17-1~deb12u1 running in system mode (+PAM +AUDIT +SELINUX +APPARMOR +IMA +SMACK +SECCOMP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 -PWQUALITY +P11KIT +QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
    [   10.263237] systemd[1]: Detected architecture arm.
    [   10.290411] systemd[1]: Hostname set to <sheevaplug>.
    [   12.359721] systemd[1]: Queued start job for default target graphical.target.
    [   12.377859] systemd[1]: Created slice system-getty.slice - Slice /system/getty.
    [   12.407796] systemd[1]: Created slice system-modprobe.slice - Slice /system/modprobe.
    [   12.435766] systemd[1]: Created slice system-serial\x2dgetty.slice - Slice /system/serial-getty.
    [   12.463726] systemd[1]: Created slice system-systemd\x2dfsck.slice - Slice /system/systemd-fsck.
    [   12.490786] systemd[1]: Created slice user.slice - User and Session Slice.
    [   12.517755] systemd[1]: Started systemd-ask-password-console.path - Dispatch Password Requests to Console Directory Watch.
    [   12.545649] systemd[1]: Started systemd-ask-password-wall.path - Forward Password Requests to Wall Directory Watch.
    [   12.574733] systemd[1]: Set up automount proc-sys-fs-binfmt_misc.automount - Arbitrary Executable File Formats File System Automount Point.
    [   12.605834] systemd[1]: Reached target cryptsetup.target - Local Encrypted Volumes.
    [   12.629514] systemd[1]: Reached target integritysetup.target - Local Integrity Protected Volumes.
    [   12.657558] systemd[1]: Reached target paths.target - Path Units.
    [   12.681346] systemd[1]: Reached target remote-fs.target - Remote File Systems.
    [   12.705280] systemd[1]: Reached target slices.target - Slice Units.
    [   12.729673] systemd[1]: Reached target veritysetup.target - Local Verity Protected Volumes.
    [   12.758375] systemd[1]: Listening on systemd-fsckd.socket - fsck to fsckd communication Socket.
    [   12.785752] systemd[1]: Listening on systemd-initctl.socket - initctl Compatibility Named Pipe.
    [   12.815181] systemd[1]: Listening on systemd-journald-audit.socket - Journal Audit Socket.
    [   12.842620] systemd[1]: Listening on systemd-journald-dev-log.socket - Journal Socket (/dev/log).
    [   12.870452] systemd[1]: Listening on systemd-journald.socket - Journal Socket.
    [   12.900236] systemd[1]: Listening on systemd-udevd-control.socket - udev Control Socket.
    [   12.926350] systemd[1]: Listening on systemd-udevd-kernel.socket - udev Kernel Socket.
    [   12.954658] systemd[1]: dev-hugepages.mount - Huge Pages File System was skipped because of an unmet condition check (ConditionPathExists=/sys/kernel/mm/hugepages).
    [   12.976075] systemd[1]: Mounting dev-mqueue.mount - POSIX Message Queue File System...
    [   13.008935] random: crng init done
    [   13.018004] systemd[1]: Mounting sys-kernel-debug.mount - Kernel Debug File System...
    [   13.063067] systemd[1]: Mounting sys-kernel-tracing.mount - Kernel Trace File System...
    [   13.106403] systemd[1]: Starting kmod-static-nodes.service - Create List of Static Device Nodes...
    [   13.147795] systemd[1]: Starting modprobe@configfs.service - Load Kernel Module configfs...
    [   13.186109] systemd[1]: Starting modprobe@dm_mod.service - Load Kernel Module dm_mod...
    [   13.240284] systemd[1]: Starting modprobe@drm.service - Load Kernel Module drm...
    [   13.268545] device-mapper: uevent: version 1.0.3
    [   13.290086] systemd[1]: Starting modprobe@efi_pstore.service - Load Kernel Module efi_pstore...
    [   13.299419] device-mapper: ioctl: 4.47.0-ioctl (2022-07-28) initialised: dm-devel@redhat.com
    [   13.353565] systemd[1]: Starting modprobe@fuse.service - Load Kernel Module fuse...
    [   13.394030] systemd[1]: Starting modprobe@loop.service - Load Kernel Module loop...
    [   13.420725] fuse: init (API version 7.37)
    [   13.425939] systemd[1]: systemd-fsck-root.service - File System Check on Root Device was skipped because of an unmet condition check (ConditionPathExists=!/run/initramfs/fsck-root).
    [   13.463191] systemd[1]: systemd-journald.service: unit configures an IP firewall, but the local system does not support BPF/cgroup firewalling.
    [   13.476540] systemd[1]: (This warning is only shown for the first unit using IP firewalling.)
    [   13.499543] systemd[1]: Starting systemd-journald.service - Journal Service...
    [   13.516812] loop: module loaded
    [   13.562279] systemd[1]: Starting systemd-modules-load.service - Load Kernel Modules...
    [   13.613197] systemd[1]: Starting systemd-remount-fs.service - Remount Root and Kernel File Systems...
    [   13.702235] systemd[1]: Starting systemd-udev-trigger.service - Coldplug All udev Devices...
    [   13.837851] systemd[1]: Mounted dev-mqueue.mount - POSIX Message Queue File System.
    [   13.890452] systemd[1]: Mounted sys-kernel-debug.mount - Kernel Debug File System.
    [   13.942103] systemd[1]: Mounted sys-kernel-tracing.mount - Kernel Trace File System.
    [   13.960950] EXT4-fs (sda2): re-mounted. Quota mode: none.
    [   14.013138] systemd[1]: Finished kmod-static-nodes.service - Create List of Static Device Nodes.
    [   14.063968] systemd[1]: modprobe@configfs.service: Deactivated successfully.
    [   14.092687] systemd[1]: Finished modprobe@configfs.service - Load Kernel Module configfs.
    [   14.139959] systemd[1]: modprobe@dm_mod.service: Deactivated successfully.
    [   14.166328] systemd[1]: Finished modprobe@dm_mod.service - Load Kernel Module dm_mod.
    [   14.212051] systemd[1]: modprobe@drm.service: Deactivated successfully.
    [   14.238347] systemd[1]: Finished modprobe@drm.service - Load Kernel Module drm.
    [   14.284000] systemd[1]: modprobe@efi_pstore.service: Deactivated successfully.
    [   14.313116] systemd[1]: Finished modprobe@efi_pstore.service - Load Kernel Module efi_pstore.
    [   14.359957] systemd[1]: modprobe@fuse.service: Deactivated successfully.
    [   14.386321] systemd[1]: Finished modprobe@fuse.service - Load Kernel Module fuse.
    [   14.432037] systemd[1]: modprobe@loop.service: Deactivated successfully.
    [   14.458312] systemd[1]: Finished modprobe@loop.service - Load Kernel Module loop.
    [   14.502346] systemd[1]: Started systemd-journald.service - Journal Service.
    [   14.925747] systemd-journald[172]: Received client request to flush runtime journal.
    [   14.968614] systemd-journald[172]: File /var/log/journal/75e30cfb7de24a1aa004fabd2a8a8a68/system.journal corrupted or uncleanly shut down, renaming and replacing.
    [   16.839019] sd 0:0:0:0: Attached scsi generic sg0 type 0
    [   17.465594] orion_wdt: Initial timeout 21 sec
    [   17.547667] nand: device found, Manufacturer ID: 0xad, Chip ID: 0xdc
    [   17.554121] nand: Hynix NAND 512MiB 3,3V 8-bit
    [   17.558629] nand: 512 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
    [   17.582451] marvell-cesa f1030000.crypto: CESA device successfully registered
    [   17.776411] Scanning device for bad blocks
    [   18.540460] Bad eraseblock 2894 at 0x0000169c0000
    [   18.850683] 3 fixed-partitions partitions found on MTD device orion_nand
    [   18.857502] Creating 3 MTD partitions on "orion_nand":
    [   18.876896] 0x000000000000-0x000000100000 : "u-boot"
    [   18.892994] 0x000000100000-0x000000500000 : "uImage"
    [   18.909506] 0x000000500000-0x000020000000 : "root"
    [   19.479497] Adding 497660k swap on /dev/sda5.  Priority:-2 extents:1 across:497660k 
    [   19.944579] EXT4-fs (sda1): mounting ext2 file system using the ext4 subsystem
    [   19.994134] EXT4-fs (sda1): mounted filesystem without journal. Quota mode: none.
    [   20.611485] audit: type=1400 audit(1695212124.700:2): apparmor="STATUS" operation="profile_load" profile="unconfined" name="lsb_release" pid=248 comm="apparmor_parser"
    [   20.713294] audit: type=1400 audit(1695212124.804:3): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe" pid=249 comm="apparmor_parser"
    [   20.760470] audit: type=1400 audit(1695212124.804:4): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe//kmod" pid=249 comm="apparmor_parser"
    [   21.041502] audit: type=1400 audit(1695212125.132:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=250 comm="apparmor_parser"
    [   21.113257] audit: type=1400 audit(1695212125.132:6): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-helper" pid=250 comm="apparmor_parser"
    [   21.196957] audit: type=1400 audit(1695212125.132:7): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/connman/scripts/dhclient-script" pid=250 comm="apparmor_parser"
    [   21.249343] audit: type=1400 audit(1695212125.132:8): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/{,usr/}sbin/dhclient" pid=250 comm="apparmor_parser"
    [   21.290750] audit: type=1400 audit(1695212125.320:9): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/bin/man" pid=253 comm="apparmor_parser"
    [   21.340451] audit: type=1400 audit(1695212125.320:10): apparmor="STATUS" operation="profile_load" profile="unconfined" name="man_filter" pid=253 comm="apparmor_parser"
    [   21.416985] audit: type=1400 audit(1695212125.320:11): apparmor="STATUS" operation="profile_load" profile="unconfined" name="man_groff" pid=253 comm="apparmor_parser"
    [   22.873635] NET: Registered PF_PACKET protocol family

For completeness the envvars are here:

    Sheevaplug> printenv
    arcNumber=2097
    baudrate=115200
    bootargs_ubi=console=ttyS0,115200 ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs
    bootcmd=setenv bootargs $(bootargs_ubi); run bootcmd_nand_read; bootm 0x800000
    bootcmd_exec=run load_uimage; if run load_initrd; then if run load_dtb; then bootm $load_uimage_addr $load_initrd_addr $load_dtb_addr; else bootm $load_uimage_addr $load_initrd_addr; fi; else if run load_dtb; then bootm $load_uimage_addr - $load_dtb_addr; else bootm $load_uimage_addr; fi; fi
    bootcmd_nand_read=nand read 0x800000 0x100000 0x400000
    bootcmd_uenv=run uenv_load; if test $uenv_loaded -eq 1; then run uenv_import; fi
    bootdelay=10
    bootdev=usb
    console=ttyS0,115200
    device=0:1
    devices=usb ide mmc
    disks=0 1 2 3
    dtb_file=/boot/dts/kirkwood-sheevaplug.dtb
    ethact=egiga0
    ethaddr=00:50:43:01:63:EA
    if_netconsole=ping $serverip
    ipaddr=192.168.0.201
    led_error=orange blinking
    led_exit=green off
    led_init=green blinking
    load_dtb=echo loading DTB $dtb_file ...; load $bootdev $device $load_dtb_addr $dtb_file
    load_dtb_addr=0x1c00000
    load_initrd=echo loading uInitrd ...; load $bootdev $device $load_initrd_addr /boot/uInitrd
    load_initrd_addr=0x1100000
    load_uimage=echo loading uImage ...; load $bootdev $device $load_uimage_addr /boot/uImage
    load_uimage_addr=0x800000
    macaddr=00:50:43:01:63:EA
    mainlineLinux=yes
    mtdids=nand0=orion_nand
    mtdparts=mtdparts=orion_nand:1M(u-boot),4M(uImage),32M(rootfs),-(data)
    partition=nand0,2
    preboot_nc=run if_netconsole start_netconsole
    scan_disk=echo running scan_disk ...; scan_done=0; setenv scan_usb "usb start";  setenv scan_ide "ide reset";  setenv scan_mmc "mmc rescan"; for dev in $devices; do if test $scan_done -eq 0; then echo Scan device $dev; run scan_$dev; for disknum in $disks; do if test $scan_done -eq 0; then echo device $dev $disknum:1; if load $dev $disknum:1 $load_uimage_addr /boot/uImage 1; then scan_done=1; echo Found bootable drive on $dev $disknum; setenv device $disknum:1; setenv bootdev $dev; fi; fi; done; fi; done
    serverip=192.168.0.205
    set_bootargs=setenv bootargs console=ttyS0,115200 root=LABEL=rootfs rootdelay=10 $mtdparts $custom_params
    start_netconsole=setenv ncip $serverip; setenv bootdelay 10; setenv stdin nc; setenv stdout nc; setenv stderr nc; version;
    stderr=serial
    stdin=serial
    stdout=serial
    uenv_addr=0x810000
    uenv_import=echo importing envs ...; env import -t $uenv_addr $filesize
    uenv_init_devices=setenv init_usb "usb start";  setenv init_ide "ide reset";  setenv init_mmc "mmc rescan"; for devtype in $devices; do run init_$devtype; done;
    uenv_load=run uenv_init_devices; setenv uenv_loaded 0; for devtype in $devices;  do for disknum in 0; do run uenv_read_disk; done; done;
    uenv_read=echo loading envs from $devtype $disknum ...; if load $devtype $disknum:1 $uenv_addr /boot/uEnv.txt; then setenv uenv_loaded 1; fi
    uenv_read_disk=if test $devtype -eq mmc; then if $devtype part; then run uenv_read;  fi; else if $devtype part $disknum; then run uenv_read; fi;  fi
    usb_ready_retry=15

    Environment size: 3056/131068 bytes
    Sheevaplug>
Attachments:
open | download - dmesg_log_file (19 KB)
Re: Help flashing to a Sheevaplug NAND
October 19, 2023 02:01PM
Power up, interrupt serial console and,

setenv  mtdparts 'mtdparts=orion_nand:1M(u-boot),4M(uImage),-(root)'
mtdparts

And then boot it the way you did before.

Please post the log here.

-bodhi
===========================
Forum Wiki
bodhi's corner (buy bodhi a beer)



Edited 2 time(s). Last edit at 10/19/2023 02:38PM by bodhi.
Re: Help flashing to a Sheevaplug NAND
October 19, 2023 02:46PM
Hi,

I've done the above and it still stalls at booting the kernel.

> Power up, interrupt serial console and,

screen /dev/ttyUSB0 115200

Interrupt autoboot

    U-Boot 2017.07-tld-2 (Dec 04 2017 - 02:00:45 -0800)
    Marvell-Sheevaplug

    SoC:   Kirkwood 88F6281_A0
    DRAM:  512 MiB
    WARNING: Caches not enabled
    NAND:  512 MiB
    MMC:   MVEBU_MMC: 0
    In:    serial
    Out:   serial
    Err:   serial
    Net:   egiga0
    88E1116 Initialized on egiga0
    Hit any key to stop autoboot:  0 
    Sheevaplug>

Reset env variables
~~~~~~~~~~~~~~~
env default -a
saveenv

    Sheevaplug> env default -a
    ## Resetting to default environment
    Sheevaplug> saveenv
    Saving Environment to NAND...
    Erasing NAND...
    Erasing at 0xc0000 -- 100% complete.
    Writing to NAND... OK
    Sheevaplug>

Add env variables
~~~~~~~~~~~~~~
setenv bootargs_ubi console=ttyS0,115200 ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs
setenv bootcmd_nand_read nand read 0x800000 0x100000 0x400000
setenv bootcmd 'setenv bootargs $(bootargs_ubi); run bootcmd_nand_read; bootm 0x800000'
setenv mtdparts 'mtdparts=orion_nand:1M(u-boot),4M(uImage),-(root)'
saveenv

    Sheevaplug> setenv bootargs_ubi console=ttyS0,115200 ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs
    Sheevaplug> setenv bootcmd_nand_read nand read 0x800000 0x100000 0x400000
    Sheevaplug> setenv bootcmd 'setenv bootargs $(bootargs_ubi); run bootcmd_nand_read; bootm 0x800000'
    Sheevaplug> setenv mtdparts 'mtdparts=orion_nand:1M(u-boot),4M(uImage),-(root)'
    Sheevaplug> saveenv
    Saving Environment to NAND...
    Erasing NAND...
    Erasing at 0xc0000 -- 100% complete.
    Writing to NAND... OK
    Sheevaplug>

Check mtd parts
~~~~~~~~~~~~~
mtdparts

    Sheevaplug> mtdparts

    device nand0 <orion_nand>, # parts = 3
     #: name                size            offset          mask_flags
     0: u-boot              0x00100000      0x00000000      0
     1: uImage              0x00400000      0x00100000      0
     2: root                0x1fb00000      0x00500000      0

    active partition: nand0,2 - (root) 0x1fb00000 @ 0x00500000

    defaults:
    mtdids  : none
    mtdparts: none
    Sheevaplug>

boot

    Sheevaplug> boot

    NAND read: device 0 offset 0x100000, size 0x400000
     4194304 bytes read: OK
    ## Booting kernel from Legacy Image at 00800000 ...
       Image Name:   Debian kernel
       Created:      2023-10-01  22:16:20 UTC
       Image Type:   ARM Linux Kernel Image (uncompressed)
       Data Size:    2634776 Bytes = 2.5 MiB
       Load Address: 00008000
       Entry Point:  00008000
       Verifying Checksum ... OK
       Loading Kernel Image ... OK

    Starting kernel ...

printenv

    Sheevaplug> printenv
    arcNumber=2097
    baudrate=115200
    bootargs_ubi=console=ttyS0,115200 ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs
    bootcmd=setenv bootargs $(bootargs_ubi); run bootcmd_nand_read; bootm 0x800000
    bootcmd_exec=run load_uimage; if run load_initrd; then if run load_dtb; then bootm $load_uimage_addr $load_initrd_addr $load_dtb_addr; else bootm $load_uimage_addr $load_initrd_addr; fi; else if run load_dtb; then bootm $load_uimage_addr - $load_dtb_addr; else bootm $load_uimage_addr; fi; fi
    bootcmd_nand_read=nand read 0x800000 0x100000 0x400000
    bootcmd_uenv=run uenv_load; if test $uenv_loaded -eq 1; then run uenv_import; fi
    bootdelay=10
    bootdev=usb
    console=ttyS0,115200
    device=0:1
    devices=usb ide mmc
    disks=0 1 2 3
    dtb_file=/boot/dts/kirkwood-sheevaplug.dtb
    ethact=egiga0
    ethaddr=52:3b:20:9c:11:51
    if_netconsole=ping $serverip
    ipaddr=192.168.0.231
    led_error=orange blinking
    led_exit=green off
    led_init=green blinking
    load_dtb=echo loading DTB $dtb_file ...; load $bootdev $device $load_dtb_addr $dtb_file
    load_dtb_addr=0x1c00000
    load_initrd=echo loading uInitrd ...; load $bootdev $device $load_initrd_addr /boot/uInitrd
    load_initrd_addr=0x1100000
    load_uimage=echo loading uImage ...; load $bootdev $device $load_uimage_addr /boot/uImage
    load_uimage_addr=0x800000
    mainlineLinux=yes
    mtddevname=root
    mtddevnum=2
    mtdids=nand0=orion_nand
    mtdparts=mtdparts=orion_nand:1M(u-boot),4M(uImage),-(root)
    partition=nand0,2
    preboot_nc=run if_netconsole start_netconsole
    scan_disk=echo running scan_disk ...; scan_done=0; setenv scan_usb "usb start";  setenv scan_ide "ide reset";  setenv scan_mmc "mmc rescan"; for dev in $devices; do if test $scan_done -eq 0; then echo Scan device $dev; run scan_$dev; for disknum in $disks; do if test $scan_done -eq 0; then echo device $dev $disknum:1; if load $dev $disknum:1 $load_uimage_addr /boot/uImage 1; then scan_done=1; echo Found bootable drive on $dev $disknum; setenv device $disknum:1; setenv bootdev $dev; fi; fi; done; fi; done
    serverip=192.168.0.220
    set_bootargs=setenv bootargs console=ttyS0,115200 root=LABEL=rootfs rootdelay=10 $mtdparts $custom_params
    start_netconsole=setenv ncip $serverip; setenv bootdelay 10; setenv stdin nc; setenv stdout nc; setenv stderr nc; version;
    stderr=serial
    stdin=serial
    stdout=serial
    uenv_addr=0x810000
    uenv_import=echo importing envs ...; env import -t $uenv_addr $filesize
    uenv_init_devices=setenv init_usb "usb start";  setenv init_ide "ide reset";  setenv init_mmc "mmc rescan"; for devtype in $devices; do run init_$devtype; done;
    uenv_load=run uenv_init_devices; setenv uenv_loaded 0; for devtype in $devices;  do for disknum in 0; do run uenv_read_disk; done; done;
    uenv_read=echo loading envs from $devtype $disknum ...; if load $devtype $disknum:1 $uenv_addr /boot/uEnv.txt; then setenv uenv_loaded 1; fi
    uenv_read_disk=if test $devtype -eq mmc; then if $devtype part; then run uenv_read;  fi; else if $devtype part $disknum; then run uenv_read; fi;  fi
    usb_ready_retry=15

    Environment size: 3048/131068 bytes
    Sheevaplug>
Re: Help flashing to a Sheevaplug NAND
October 19, 2023 02:48PM
Or do you mean add that line, save the env vars and then boot into Debian from the known working USB ?

And then post the 'dmesg' log ?



Edited 1 time(s). Last edit at 10/19/2023 02:49PM by Nanode.
Re: Help flashing to a Sheevaplug NAND
October 19, 2023 03:14PM
Hi,

I wasn't entirely sure what you wanted me to do, so I added the:
setenv mtdparts 'mtdparts=orion_nand:1M(u-boot),4M(uImage),-(root)'
line, and booted from the USB to Bookworm.

The dmesg log is below and also attached.

Many thanks again !

> Power up, interrupt serial console and,

screen /dev/ttyUSB0 115200

    U-Boot 2017.07-tld-2 (Dec 04 2017 - 02:00:45 -0800)
    Marvell-Sheevaplug

    SoC:   Kirkwood 88F6281_A0
    DRAM:  512 MiB
    WARNING: Caches not enabled
    NAND:  512 MiB
    MMC:   MVEBU_MMC: 0
    In:    serial
    Out:   serial
    Err:   serial
    Net:   egiga0
    88E1116 Initialized on egiga0
    Hit any key to stop autoboot:  0 
    Sheevaplug>

setenv bootargs_console console=ttyS0,115200
setenv bootcmd_usb 'usb start; ext2load usb 0:1 0x00800000 /uImage; ext2load usb 0:1 0x01100000 /uInitrd'
setenv bootcmd 'setenv bootargs ${bootargs_console}; run bootcmd_usb; bootm 0x00800000 0x01100000'
setenv mtdparts 'mtdparts=orion_nand:1M(u-boot),4M(uImage),-(root)'
mtdparts

    Sheevaplug> setenv mtdparts 'mtdparts=orion_nand:1M(u-boot),4M(uImage),-(root)' 
    Sheevaplug> setenv bootcmd_usb 'usb start; ext2load usb 0:1 0x00800000 /uImage; ext2load usb 0:1 0x01100000 /uInitrd'
    Sheevaplug> setenv bootcmd 'setenv bootargs ${bootargs_console}; run bootcmd_usb; bootm 0x00800000 0x01100000'
    Sheevaplug> setenv mtdparts 'mtdparts=orion_nand:1M(u-boot),4M(uImage),-(root)'
    Sheevaplug> mtdparts

    device nand0 <orion_nand>, # parts = 3
     #: name                size            offset          mask_flags
     0: u-boot              0x00100000      0x00000000      0
     1: uImage              0x00400000      0x00100000      0
     2: root                0x1fb00000      0x00500000      0

    active partition: nand0,2 - (root) 0x1fb00000 @ 0x00500000

    defaults:
    mtdids  : none
    mtdparts: none
    Sheevaplug>

run bootcmd

Boots into Debain Bookwork.

dmesg log:
    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Linux version 6.1.0-13-marvell (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 Debian 6.1.55-1 (2023-09-29)
    [    0.000000] CPU: Feroceon 88FR131 [56251311] revision 1 (ARMv5TE), cr=0005397f
    [    0.000000] CPU: VIVT data cache, VIVT instruction cache
    [    0.000000] OF: fdt: Machine model: Globalscale Technologies SheevaPlug
    [    0.000000] printk: bootconsole [earlycon0] enabled
    [    0.000000] Memory policy: Data cache writeback
    [    0.000000] Zone ranges:
    [    0.000000]   Normal   [mem 0x0000000000000000-0x000000001fffffff]
    [    0.000000]   HighMem  empty
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000000000000-0x000000001fffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000001fffffff]
    [    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
    [    0.000000] pcpu-alloc: [0] 0 
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 130048
    [    0.000000] Kernel command line: console=ttyS0,115200n8 earlyprintk
    [    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
    [    0.000000] mem auto-init: stack:all(zero), heap alloc:on, heap free:off
    [    0.000000] Memory: 495044K/524288K available (4842K kernel code, 838K rwdata, 1632K rodata, 212K init, 227K bss, 29244K reserved, 0K cma-reserved, 0K highmem)
    [    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    [    0.000000] trace event string verifier disabled
    [    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
    [    0.000000] clocksource: orion_clocksource: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 9556302233 ns
    [    0.000002] sched_clock: 32 bits at 200MHz, resolution 5ns, wraps every 10737418237ns
    [    0.007909] Switching to timer-based delay loop, resolution 5ns
    [    0.014103] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
    [    0.024642] CPU: Testing write buffer coherency: ok
    [    0.029713] pid_max: default: 32768 minimum: 301
    [    0.034896] LSM: Security Framework initializing
    [    0.039947] landlock: Up and running.
    [    0.043636] Yama: disabled by default; enable with sysctl kernel.yama.*
    [    0.050590] AppArmor: AppArmor initialized
    [    0.055130] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
    [    0.062535] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
    [    0.074663] cblist_init_generic: Setting adjustable number of callback queues.
    [    0.081981] cblist_init_generic: Setting shift to 0 and lim to 1.
    [    0.088516] Setting up static identity map for 0x8220 - 0x825c
    [    0.094728] mvebu-soc-id: MVEBU SoC ID=0x6281, Rev=0x2
    [    0.101574] devtmpfs: initialized
    [    0.109821] VFP support v0.3: not present
    [    0.114104] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [    0.123965] futex hash table entries: 256 (order: -1, 3072 bytes, linear)
    [    0.131045] pinctrl core: initialized pinctrl subsystem
    [    0.138701] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [    0.145488] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.153327] audit: initializing netlink subsys (disabled)
    [    0.160188] thermal_sys: Registered thermal governor 'fair_share'
    [    0.160210] thermal_sys: Registered thermal governor 'bang_bang'
    [    0.166399] audit: type=2000 audit(0.096:1): state=initialized audit_enabled=0 res=1
    [    0.180293] thermal_sys: Registered thermal governor 'step_wise'
    [    0.180313] thermal_sys: Registered thermal governor 'user_space'
    [    0.186438] cpuidle: using governor ladder
    [    0.197150] Feroceon L2: Enabling L2
    [    0.200818] Feroceon L2: Cache support initialised.
    [    0.212336] No ATAGs?
    [    0.248875] clocksource: Switched to clocksource orion_clocksource
    [    0.256043] VFS: Disk quotas dquot_6.6.0
    [    0.269034] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
    [    0.281860] AppArmor: AppArmor Filesystem Enabled
    [    0.294714] NET: Registered PF_INET protocol family
    [    0.309055] IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear)
    [    0.322937] tcp_listen_portaddr_hash hash table entries: 1024 (order: 0, 4096 bytes, linear)
    [    0.331697] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.339554] TCP established hash table entries: 4096 (order: 2, 16384 bytes, linear)
    [    0.347435] TCP bind hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.355102] TCP: Hash tables configured (established 4096 bind 4096)
    [    0.361632] UDP hash table entries: 256 (order: 0, 4096 bytes, linear)
    [    0.368239] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes, linear)
    [    0.375528] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [    0.381324] PCI: CLS 0 bytes, default 32
    [    0.385764] Trying to unpack rootfs image as initramfs...
    [    0.392103] Initialise system trusted keyrings
    [    0.401268] Key type blacklist registered
    [    0.422528] workingset: timestamp_bits=30 max_order=17 bucket_order=0
    [    0.436622] Key type asymmetric registered
    [    0.444974] Asymmetric key parser 'x509' registered
    [    4.379324] Freeing initrd memory: 16688K
    [    4.424751] alg: self-tests for CTR-KDF (hmac(sha256)) passed
    [    4.430979] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
    [    4.440808] kirkwood-pinctrl f1010000.pin-controller: registered pinctrl driver
    [    4.451528] mv_xor f1060800.xor: Marvell shared XOR driver
    [    4.494631] mv_xor f1060800.xor: Marvell XOR (Registers Mode): ( xor cpy intr )
    [    4.502647] mv_xor f1060900.xor: Marvell shared XOR driver
    [    4.546623] mv_xor f1060900.xor: Marvell XOR (Registers Mode): ( xor cpy intr )
    [    4.554700] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
    [    4.562512] printk: console [ttyS0] disabled
    [    4.566922] f1012000.serial: ttyS0 at MMIO 0xf1012000 (irq = 27, base_baud = 12500000) is a 16550A
    [    4.575988] printk: console [ttyS0] enabled
    [    4.584421] printk: bootconsole [earlycon0] disabled
    [    4.595824] i2c_dev: i2c /dev entries driver
    [    4.601223] ledtrig-cpu: registered to indicate activity on CPUs
    [    4.608530] registered taskstats version 1
    [    4.612730] Loading compiled-in X.509 certificates
    [    4.659228] Loaded X.509 cert 'Debian Secure Boot CA: 6ccece7e4c6c0d1f6149f3dd27dfcc5cbb419ea1'
    [    4.668314] Loaded X.509 cert 'Debian Secure Boot Signer 2022 - linux: 14011249c2675ea8e5148542202005810584b25f'
    [    4.717965] Key type encrypted registered
    [    4.722317] AppArmor: AppArmor sha1 policy hashing enabled
    [    4.734061] Freeing unused kernel image (initmem) memory: 212K
    [    4.739970] Kernel memory protection not selected by kernel config.
    [    4.746321] Run /init as init process
    [    4.750018]   with arguments:
    [    4.750029]     /init
    [    4.750037]   with environment:
    [    4.750043]     HOME=/
    [    4.750051]     TERM=linux
    [    5.361262] rtc-mv f1010300.rtc: registered as rtc0
    [    5.407509] rtc-mv f1010300.rtc: setting system clock to 2000-11-15T18:40:30 UTC (974313630)
    [    5.428998] mv643xx_eth: MV-643xx 10/100/1000 ethernet driver version 1.4
    [    5.506133] usbcore: registered new interface driver usbfs
    [    5.553061] usbcore: registered new interface driver hub
    [    5.593077] usbcore: registered new device driver usb
    [    5.654215] orion-ehci f1050000.ehci: EHCI Host Controller
    [    5.684657] orion-ehci f1050000.ehci: new USB bus registered, assigned bus number 1
    [    5.715699] orion-ehci f1050000.ehci: irq 32, io mem 0xf1050000
    [    5.740899] orion-ehci f1050000.ehci: USB 2.0 started, EHCI 1.00
    [    5.747357] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.01
    [    5.755698] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [    5.762979] usb usb1: Product: EHCI Host Controller
    [    5.767894] usb usb1: Manufacturer: Linux 6.1.0-13-marvell ehci_hcd
    [    5.774208] usb usb1: SerialNumber: f1050000.ehci
    [    5.780927] hub 1-0:1.0: USB hub found
    [    5.784758] hub 1-0:1.0: 1 port detected
    [    6.040896] usb 1-1: new high-speed USB device number 2 using orion-ehci
    [    6.202073] usb 1-1: New USB device found, idVendor=0781, idProduct=5567, bcdDevice= 1.00
    [    6.210331] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    [    6.217550] usb 1-1: Product: Cruzer Blade
    [    6.221703] usb 1-1: Manufacturer: SanDisk
    [    6.225837] usb 1-1: SerialNumber: 4C530001170729109504
    [    6.263275] SCSI subsystem initialized
    [    6.274599] usb-storage 1-1:1.0: USB Mass Storage device detected
    [    6.283060] scsi host0: usb-storage 1-1:1.0
    [    6.290202] usbcore: registered new interface driver usb-storage
    [    6.301238] usbcore: registered new interface driver uas
    [    6.357851] mv643xx_eth_port mv643xx_eth_port.0 eth0: port 0 with MAC address 52:3b:20:9c:11:51
    [    7.305905] scsi 0:0:0:0: Direct-Access     SanDisk  Cruzer Blade     1.00 PQ: 0 ANSI: 6
    [    7.404635] sd 0:0:0:0: [sda] 15630336 512-byte logical blocks: (8.00 GB/7.45 GiB)
    [    7.414738] sd 0:0:0:0: [sda] Write Protect is off
    [    7.419611] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00
    [    7.420343] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
    [    7.439597]  sda: sda1 sda2 sda3 < sda5 >
    [    7.447260] sd 0:0:0:0: [sda] Attached SCSI removable disk
    [    8.316149] EXT4-fs (sda2): mounted filesystem with ordered data mode. Quota mode: none.
    [    9.176782] systemd[1]: System time before build time, advancing clock.
    [    9.270464] systemd[1]: Inserted module 'autofs4'
    [    9.352797] NET: Registered PF_INET6 protocol family
    [    9.419417] Segment Routing with IPv6
    [    9.423330] In-situ OAM (IOAM) with IPv6
    [    9.499840] systemd[1]: systemd 252.17-1~deb12u1 running in system mode (+PAM +AUDIT +SELINUX +APPARMOR +IMA +SMACK +SECCOMP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 -PWQUALITY +P11KIT +QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
    [    9.532840] systemd[1]: Detected architecture arm.
    [    9.562563] systemd[1]: Hostname set to <sheevaplug>.
    [   11.627327] systemd[1]: Queued start job for default target graphical.target.
    [   11.645318] systemd[1]: Created slice system-getty.slice - Slice /system/getty.
    [   11.671724] systemd[1]: Created slice system-modprobe.slice - Slice /system/modprobe.
    [   11.699717] systemd[1]: Created slice system-serial\x2dgetty.slice - Slice /system/serial-getty.
    [   11.727700] systemd[1]: Created slice system-systemd\x2dfsck.slice - Slice /system/systemd-fsck.
    [   11.754805] systemd[1]: Created slice user.slice - User and Session Slice.
    [   11.781752] systemd[1]: Started systemd-ask-password-console.path - Dispatch Password Requests to Console Directory Watch.
    [   11.809695] systemd[1]: Started systemd-ask-password-wall.path - Forward Password Requests to Wall Directory Watch.
    [   11.838665] systemd[1]: Set up automount proc-sys-fs-binfmt_misc.automount - Arbitrary Executable File Formats File System Automount Point.
    [   11.869830] systemd[1]: Reached target cryptsetup.target - Local Encrypted Volumes.
    [   11.893475] systemd[1]: Reached target integritysetup.target - Local Integrity Protected Volumes.
    [   11.921709] systemd[1]: Reached target paths.target - Path Units.
    [   11.945405] systemd[1]: Reached target remote-fs.target - Remote File Systems.
    [   11.969226] systemd[1]: Reached target slices.target - Slice Units.
    [   11.993732] systemd[1]: Reached target veritysetup.target - Local Verity Protected Volumes.
    [   12.022399] systemd[1]: Listening on systemd-fsckd.socket - fsck to fsckd communication Socket.
    [   12.049725] systemd[1]: Listening on systemd-initctl.socket - initctl Compatibility Named Pipe.
    [   12.079158] systemd[1]: Listening on systemd-journald-audit.socket - Journal Audit Socket.
    [   12.106609] systemd[1]: Listening on systemd-journald-dev-log.socket - Journal Socket (/dev/log).
    [   12.134525] systemd[1]: Listening on systemd-journald.socket - Journal Socket.
    [   12.164234] systemd[1]: Listening on systemd-udevd-control.socket - udev Control Socket.
    [   12.190375] systemd[1]: Listening on systemd-udevd-kernel.socket - udev Kernel Socket.
    [   12.218715] systemd[1]: dev-hugepages.mount - Huge Pages File System was skipped because of an unmet condition check (ConditionPathExists=/sys/kernel/mm/hugepages).
    [   12.240139] systemd[1]: Mounting dev-mqueue.mount - POSIX Message Queue File System...
    [   12.273273] systemd[1]: Mounting sys-kernel-debug.mount - Kernel Debug File System...
    [   12.321313] systemd[1]: Mounting sys-kernel-tracing.mount - Kernel Trace File System...
    [   12.362176] systemd[1]: Starting kmod-static-nodes.service - Create List of Static Device Nodes...
    [   12.403321] systemd[1]: Starting modprobe@configfs.service - Load Kernel Module configfs...
    [   12.442242] systemd[1]: Starting modprobe@dm_mod.service - Load Kernel Module dm_mod...
    [   12.454386] random: crng init done
    [   12.500275] systemd[1]: Starting modprobe@drm.service - Load Kernel Module drm...
    [   12.535741] device-mapper: uevent: version 1.0.3
    [   12.547243] systemd[1]: Starting modprobe@efi_pstore.service - Load Kernel Module efi_pstore...
    [   12.562654] device-mapper: ioctl: 4.47.0-ioctl (2022-07-28) initialised: dm-devel@redhat.com
    [   12.614587] systemd[1]: Starting modprobe@fuse.service - Load Kernel Module fuse...
    [   12.656272] systemd[1]: Starting modprobe@loop.service - Load Kernel Module loop...
    [   12.687630] fuse: init (API version 7.37)
    [   12.702028] systemd[1]: systemd-fsck-root.service - File System Check on Root Device was skipped because of an unmet condition check (ConditionPathExists=!/run/initramfs/fsck-root).
    [   12.729526] systemd[1]: systemd-journald.service: unit configures an IP firewall, but the local system does not support BPF/cgroup firewalling.
    [   12.742686] systemd[1]: (This warning is only shown for the first unit using IP firewalling.)
    [   12.761817] loop: module loaded
    [   12.773506] systemd[1]: Starting systemd-journald.service - Journal Service...
    [   12.830418] systemd[1]: Starting systemd-modules-load.service - Load Kernel Modules...
    [   12.880914] systemd[1]: Starting systemd-remount-fs.service - Remount Root and Kernel File Systems...
    [   12.970370] systemd[1]: Starting systemd-udev-trigger.service - Coldplug All udev Devices...
    [   13.109604] systemd[1]: Mounted dev-mqueue.mount - POSIX Message Queue File System.
    [   13.154700] systemd[1]: Mounted sys-kernel-debug.mount - Kernel Debug File System.
    [   13.202176] systemd[1]: Mounted sys-kernel-tracing.mount - Kernel Trace File System.
    [   13.224065] EXT4-fs (sda2): re-mounted. Quota mode: none.
    [   13.273151] systemd[1]: Finished kmod-static-nodes.service - Create List of Static Device Nodes.
    [   13.324145] systemd[1]: modprobe@configfs.service: Deactivated successfully.
    [   13.354440] systemd[1]: Finished modprobe@configfs.service - Load Kernel Module configfs.
    [   13.399962] systemd[1]: modprobe@dm_mod.service: Deactivated successfully.
    [   13.426299] systemd[1]: Finished modprobe@dm_mod.service - Load Kernel Module dm_mod.
    [   13.471962] systemd[1]: modprobe@drm.service: Deactivated successfully.
    [   13.498347] systemd[1]: Finished modprobe@drm.service - Load Kernel Module drm.
    [   13.539996] systemd[1]: modprobe@efi_pstore.service: Deactivated successfully.
    [   13.566333] systemd[1]: Finished modprobe@efi_pstore.service - Load Kernel Module efi_pstore.
    [   13.615943] systemd[1]: modprobe@fuse.service: Deactivated successfully.
    [   13.642384] systemd[1]: Finished modprobe@fuse.service - Load Kernel Module fuse.
    [   13.687966] systemd[1]: modprobe@loop.service: Deactivated successfully.
    [   13.714288] systemd[1]: Finished modprobe@loop.service - Load Kernel Module loop.
    [   13.758320] systemd[1]: Started systemd-journald.service - Journal Service.
    [   14.177772] systemd-journald[171]: Received client request to flush runtime journal.
    [   14.224374] systemd-journald[171]: File /var/log/journal/75e30cfb7de24a1aa004fabd2a8a8a68/system.journal corrupted or uncleanly shut down, renaming and replacing.
    [   16.172775] sd 0:0:0:0: Attached scsi generic sg0 type 0
    [   16.392291] orion_wdt: Initial timeout 21 sec
    [   16.536251] nand: device found, Manufacturer ID: 0xad, Chip ID: 0xdc
    [   16.542691] nand: Hynix NAND 512MiB 3,3V 8-bit
    [   16.547197] nand: 512 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
    [   16.556652] marvell-cesa f1030000.crypto: CESA device successfully registered
    [   16.776983] Scanning device for bad blocks
    [   17.509894] Bad eraseblock 2894 at 0x0000169c0000
    [   17.810640] 3 fixed-partitions partitions found on MTD device orion_nand
    [   17.817452] Creating 3 MTD partitions on "orion_nand":
    [   17.836914] 0x000000000000-0x000000100000 : "u-boot"
    [   17.847244] 0x000000100000-0x000000500000 : "uImage"
    [   17.862556] 0x000000500000-0x000020000000 : "root"
    [   18.100146] Adding 497660k swap on /dev/sda5.  Priority:-2 extents:1 across:497660k 
    [   18.592252] EXT4-fs (sda1): mounting ext2 file system using the ext4 subsystem
    [   18.639530] EXT4-fs (sda1): mounted filesystem without journal. Quota mode: none.
    [   19.291648] audit: type=1400 audit(1695212124.112:2): apparmor="STATUS" operation="profile_load" profile="unconfined" name="lsb_release" pid=247 comm="apparmor_parser"
    [   19.392117] audit: type=1400 audit(1695212124.212:3): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe" pid=248 comm="apparmor_parser"
    [   19.412753] audit: type=1400 audit(1695212124.212:4): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe//kmod" pid=248 comm="apparmor_parser"
    [   19.734452] audit: type=1400 audit(1695212124.556:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=249 comm="apparmor_parser"
    [   19.803276] audit: type=1400 audit(1695212124.556:6): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-helper" pid=249 comm="apparmor_parser"
    [   19.891291] audit: type=1400 audit(1695212124.556:7): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/connman/scripts/dhclient-script" pid=249 comm="apparmor_parser"
    [   19.940981] audit: type=1400 audit(1695212124.556:8): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/{,usr/}sbin/dhclient" pid=249 comm="apparmor_parser"
    [   20.000973] audit: type=1400 audit(1695212124.736:9): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/bin/man" pid=252 comm="apparmor_parser"
    [   20.068970] audit: type=1400 audit(1695212124.736:10): apparmor="STATUS" operation="profile_load" profile="unconfined" name="man_filter" pid=252 comm="apparmor_parser"
    [   20.133089] audit: type=1400 audit(1695212124.736:11): apparmor="STATUS" operation="profile_load" profile="unconfined" name="man_groff" pid=252 comm="apparmor_parser"
    [   21.166995] NET: Registered PF_PACKET protocol family
Attachments:
open | download - dmesg_log_file (18.9 KB)
Re: Help flashing to a Sheevaplug NAND
October 19, 2023 03:25PM
Remember that you don't need to saveenv. Whatever the current envs are, they will be used. So you can test all you want and when you reset/reboot it will be back to the way it was before.

You did set up the envs

Sheevaplug> setenv bootargs_ubi console=ttyS0,115200 ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs
    Sheevaplug> setenv bootcmd_nand_read nand read 0x800000 0x100000 0x400000
    Sheevaplug> setenv bootcmd 'setenv bootargs $(bootargs_ubi); run bootcmd_nand_read; bootm 0x800000'
    Sheevaplug> setenv mtdparts 'mtdparts=orion_nand:1M(u-boot),4M(uImage),-(root)'

and your mtdparts is correct

Sheevaplug> mtdparts

    device nand0 <orion_nand>, # parts = 3
     #: name                size            offset          mask_flags
     0: u-boot              0x00100000      0x00000000      0
     1: uImage              0x00400000      0x00100000      0
     2: root                0x1fb00000      0x00500000      0

    active partition: nand0,2 - (root) 0x1fb00000 @ 0x00500000

    defaults:
    mtdids  : none
    mtdparts: none
    Sheevaplug>

It should boot the kernel first. After the kernel started, then ubi0 device will be initialized by the kernel.

Sheevaplug> boot

    NAND read: device 0 offset 0x100000, size 0x400000
     4194304 bytes read: OK
    ## Booting kernel from Legacy Image at 00800000 ...
       Image Name:   Debian kernel
       Created:      2023-10-01  22:16:20 UTC
       Image Type:   ARM Linux Kernel Image (uncompressed)
       Data Size:    2634776 Bytes = 2.5 MiB
       Load Address: 00008000
       Entry Point:  00008000
       Verifying Checksum ... OK
       Loading Kernel Image ... OK

    Starting kernel ...

But it got stuck at this point. It meant the kernel has failed to start. The UBIFS rootfs on mtd2 is not even coming to play yet.

========

Where is the uImage that you have flashed to NAND come from?

-bodhi
===========================
Forum Wiki
bodhi's corner (buy bodhi a beer)
Re: Help flashing to a Sheevaplug NAND
October 19, 2023 04:31PM
Hi,

It came from here:
https://ftp.debian.org/debian/dists/bookworm/main/installer-armel/current/images/kirkwood/netboot/marvell/sheevaplug/

I'm beginning to think that this may be my issue.

If I reflash the kernel:

    Sheevaplug> tftpboot 0x00800000 uImage
    Using egiga0 device
    TFTP from server 192.168.0.205; our IP address is 192.168.0.201
    Filename 'uImage'.
    Load address: 0x800000
    Loading: #################################################################
             #################################################################
             ##################################################
             626 KiB/s
    done
    Bytes transferred = 2634840 (283458 hex)
    Sheevaplug> nand erase 0x100000 0x400000

    NAND erase: device 0 offset 0x100000, size 0x400000
    Erasing at 0x4e0000 -- 100% complete.
    OK
    Sheevaplug> nand write 0x800000 0x100000 0x400000

    NAND write: device 0 offset 0x100000, size 0x400000
     4194304 bytes written: OK
    Sheevaplug>

Then make sure it loaded correctly:

md 0x800000 0x10

I get a response:

    Sheevaplug> md 0x800000 0x10
    00800000: 56190527 493e2202 b4ef1965 18342800    '..V.">Ie....(4.
    00800010: 00800000 00800000 ed504a46 00020205    ........FJP.....
    00800020: 69626544 6b206e61 656e7265 0000006c    Debian kernel...
    00800030: 00000000 00000000 00000000 00000000    ................
    Sheevaplug>

Then try to boot it:

bootm 0x800000

I end up with a kernel panic:

(Sorry, I cannot copy / paste more.)

    [    0.256066] VFS: Disk quotas dquot_6.6.0
    [    0.269062] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
    [    0.281877] AppArmor: AppArmor Filesystem Enabled
    [    0.294780] NET: Registered PF_INET protocol family
    [    0.309083] IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear)
    [    0.323070] tcp_listen_portaddr_hash hash table entries: 1024 (order: 0, 4096 bytes, linear)
    [    0.331828] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.339685] TCP established hash table entries: 4096 (order: 2, 16384 bytes, linear)
    [    0.347565] TCP bind hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.355232] TCP: Hash tables configured (established 4096 bind 4096)
    [    0.361765] UDP hash table entries: 256 (order: 0, 4096 bytes, linear)
    [    0.368371] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes, linear)
    [    0.375665] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [    0.381463] PCI: CLS 0 bytes, default 32
    [    0.386809] Initialise system trusted keyrings
    [    0.391399] Key type blacklist registered
    [    0.395775] workingset: timestamp_bits=30 max_order=17 bucket_order=0
    [    0.409786] Key type asymmetric registered
    [    0.413942] Asymmetric key parser 'x509' registered
    [    0.420837] alg: self-tests for CTR-KDF (hmac(sha256)) passed
    [    0.427054] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
    [    0.436962] kirkwood-pinctrl f1010000.pin-controller: registered pinctrl driver
    [    0.447757] mv_xor f1060800.xor: Marvell shared XOR driver
    [    0.490664] mv_xor f1060800.xor: Marvell XOR (Registers Mode): ( xor cpy intr )
    [    0.498687] mv_xor f1060900.xor: Marvell shared XOR driver
    [    0.542656] mv_xor f1060900.xor: Marvell XOR (Registers Mode): ( xor cpy intr )
    [    0.550727] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
    [    0.558488] printk: console [ttyS0] disabled
    [    0.562901] f1012000.serial: ttyS0 at MMIO 0xf1012000 (irq = 27, base_baud = 12500000) is a 16550A
    [    0.571964] printk: console [ttyS0] enabled
    [    0.571964] printk: console [ttyS0] enabled
    [    0.580397] printk: bootconsole [earlycon0] disabled
    [    0.580397] printk: bootconsole [earlycon0] disabled
    [    0.591867] i2c_dev: i2c /dev entries driver
    [    0.597247] ledtrig-cpu: registered to indicate activity on CPUs
    [    0.604543] registered taskstats version 1
    [    0.608741] Loading compiled-in X.509 certificates
    [    0.617769] Loaded X.509 cert 'Debian Secure Boot CA: 6ccece7e4c6c0d1f6149f3dd27dfcc5cbb419ea1'
    [    0.626810] Loaded X.509 cert 'Debian Secure Boot Signer 2022 - linux: 14011249c2675ea8e5148542202005810584b25f'
    [    0.639075] Key type encrypted registered
    [    0.643407] AppArmor: AppArmor sha1 policy hashing enabled
    [    0.654730] List of all partitions:
    [    0.658285] No filesystem could mount root, tried: 
    [    0.658291] 
    [    0.664703] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
    [    0.673012] CPU: 0 PID: 1 Comm: swapper Not tainted 6.1.0-13-marvell #1  Debian 6.1.55-1
    [    0.681145] Hardware name: Marvell Kirkwood (Flattened Device Tree)
    [    0.687451]  unwind_backtrace from show_stack+0x10/0x14
    [    0.692728]  show_stack from dump_stack_lvl+0x28/0x30
    [    0.697820]  dump_stack_lvl from panic+0xd0/0x304
    [    0.702565]  panic from mount_block_root+0x164/0x1ec
    [    0.707577]  mount_block_root from prepare_namespace+0x140/0x17c
    [    0.713637]  prepare_namespace from kernel_init+0x10/0x108
    [    0.719166]  kernel_init from ret_from_fork+0x14/0x28
    [    0.724258] Exception stack(0xe0819fb0 to 0xe0819ff8)
    [    0.729336] 9fa0:                                     00000000 00000000 00000000 00000000
    [    0.737561] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [    0.745783] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
    [    0.752430] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ]---

However, after powering off and on, when I try:

md 0x800000 0x10

I get:

    Sheevaplug> md 0x800000 0x10
    00800000: 0000ffff 00007bff 0200ffff 0400fffb    .....{..........
    00800010: 0000ffff 0800ffef 0000ffff 0000ff7f    ................
    00800020: 0000ffff 0000ffdf 0000ffff 0000ffff    ................
    00800030: 0000fdff 0000ffff 0000bfff 0000ffff    ................
    Sheevaplug>

And booting:

bootm 0x800000

Ends here:

    Sheevaplug> bootm 0x800000
    Wrong Image Format for bootm command
    ERROR: can't get kernel image!
    Sheevaplug>

It's almost as if the machine has forgotten where the kernel was flashed to.

Maybe I should try a different pair of files?

https://ftp.debian.org/debian/dists/buster/main/installer-armel/current/images/kirkwood/netboot/marvell/sheevaplug/

Or do you have another suggestion I could try ?

(I'm not *that* attached to Debain tbh.)

Thank you for your time.
Re: Help flashing to a Sheevaplug NAND
October 19, 2023 05:38PM
Nanode,

> I'm beginning to think that this may be my issue.

Yes, it seems the uImage was the 1st problem.

> Then try to boot it:
>
>
> bootm 0x800000
>
>
> I end up with a kernel panic:

Which is a good sign. This time the kernel has started, but panic is because it could not find the rootfs.

> syncing: VFS: Unable to mount root fs on
> unknown-block(0,0) ]---

This can only be explained with the full serial log. It could mean that the ubi0 device was never attached properly, so the volume rootfs was not found.

===========

Quote

(I'm not *that* attached to Debain tbh.)

As I said, install OpenWrt is quite easy. Especially you already installed the right u-boot.

See the Wiki thread

Quote

Rescue System for Pogo E02 using LEDE/OpenWrt (Install with Serial Console)

-bodhi
===========================
Forum Wiki
bodhi's corner (buy bodhi a beer)
Re: Help flashing to a Sheevaplug NAND
October 23, 2023 03:03AM
Thank you for taking the time to reply and explain stuff to me.

I'll look into OpenWRT, see if I can get that onto the NAND.

Cheers!
Re: Help flashing to a Sheevaplug NAND
October 23, 2023 06:14AM
Well that was remarkably painless!

I'll leave my notes here for posterity.

Resources
~~~~~~~~~
https://openwrt.org/toh/globalscale/sheevaplug
https://downloads.openwrt.org/releases/23.05.0-rc4/targets/kirkwood/generic/

U-boot
~~~~~~
https://downloads.openwrt.org/releases/22.03.0/targets/kirkwood/generic/u-boot-sheevaplug/u-boot.kwb

OpenWRT
~~~~~~~~
https://downloads.openwrt.org/releases/23.05.0-rc4/targets/kirkwood/generic/
https://downloads.openwrt.org/releases/23.05.0-rc4/targets/kirkwood/generic/openwrt-23.05.0-rc4-kirkwood-generic-globalscale_sheevaplug-squashfs-factory.bin
https://downloads.openwrt.org/releases/23.05.0-rc4/targets/kirkwood/generic/openwrt-23.05.0-rc4-kirkwood-generic-globalscale_sheevaplug-squashfs-sysupgrade.bin

Update uboot
~~~~~~~~~~~
setenv ipaddr 192.168.0.55
setenv serverip 192.168.0.205
setenv ethaddr 00:50:43:01:63:EA
tftpboot u-boot.kwb

    => tftpboot u-boot.kwb             
    Using egiga0 device
    TFTP from server 192.168.0.205; our IP address is 192.168.0.55
    Filename 'u-boot.kwb'.
    Load address: 0x800000
    Loading: ###################################
             625 KiB/s
    done
    Bytes transferred = 502516 (7aaf4 hex)
    =>

nand erase 0x0 0x100000

    => nand erase 0x0 0x100000

    NAND erase: device 0 offset 0x0, size 0x100000
    Erasing at 0xe0000 -- 100% complete.
    OK
    =>

nand write 0x800000 0x0 0x100000

    => nand write 0x800000 0x0 0x100000

    NAND write: device 0 offset 0x0, size 0x100000
     1048576 bytes written: OK
    =>

reset

Interrupt u-boot and install OpenWRT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
setenv ethaddr 00:50:43:01:63:EA
saveenv

    => saveenv
    Saving Environment to NAND... Erasing NAND...
    Erasing at 0x80000 -- 100% complete.
    Writing to NAND... OK
    OK
    =>

setenv serverip 192.168.0.205
setenv ipaddr 192.168.0.55

tftpboot openwrt-23.05.0-rc4-kirkwood-generic-globalscale_sheevaplug-squashfs-factory.bin

    => tftpboot openwrt-23.05.0-rc4-kirkwood-generic-globalscale_sheevaplug-squashfs-factory.bin
    Using egiga0 device
    TFTP from server 192.168.0.205; our IP address is 192.168.0.55
    Filename 'openwrt-23.05.0-rc4-kirkwood-generic-globalscale_sheevaplug-squashfs-factory.bin'.
    Load address: 0x800000
    Loading: #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             #################################################################
             ###
             694.3 KiB/s
    done
    Bytes transferred = 5767168 (580000 hex)
    =>

nand erase.part ubi

    => nand erase.part ubi

    NAND erase.part: device 0 offset 0x100000, size 0x1ff00000
    Skipping bad block at  0x169c0000                                          
    Erasing at 0x1ffe0000 -- 100% complete.
    OK
    =>

nand write 0x800000 ubi 0x600000

    => nand write 0x800000 ubi 0x600000

    NAND write: device 0 offset 0x100000, size 0x600000
     6291456 bytes written: OK
    =>

reset

Result
~~~~~
    BusyBox v1.36.1 (2023-09-29 09:29:36 UTC) built-in shell (ash)

      _______                     ________        __
     |       |.-----.-----.-----.|  |  |  |.----.|  |_
     |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
     |_______||   __|_____|__|__||________||__|  |____|
              |__| W I R E L E S S   F R E E D O M
     -----------------------------------------------------
     OpenWrt 23.05.0-rc4, r23482-7fe85ce1f2
     -----------------------------------------------------

I just need to do stuff now like set up SSH keys and figure out what I can use it for.

Cheers Bodhi for pointing me in the right direction.
Re: Help flashing to a Sheevaplug NAND
October 23, 2023 07:37AM
You've installed the 23.05.0 fourth release candidate. The actual release is now available. You should download https://downloads.openwrt.org/releases/23.05.0/targets/kirkwood/generic/openwrt-23.05.0-kirkwood-generic-globalscale_sheevaplug-squashfs-sysupgrade.bin to the /tmp directory on the device and then run the sysupgrade command to upgrade to the latest release. See https://openwrt.org/docs/techref/sysupgrade for a description of sysupgrade and command line options.

You could also use the web interface Luci available at http://192.168.1.1/ or the address of your device if you are using dhcp.

Ray
Re: Help flashing to a Sheevaplug NAND
October 23, 2023 10:19AM
Awesome.

Thank you.

A quick:

cd /tmp

wget https://downloads.openwrt.org/releases/23.05.0/targets/kirkwood/generic/openwrt-23.05.0-kirkwood-generic-globalscale_sheevaplug-squashfs-sysupgrade.bin


sysupgrade openwrt-23.05.0-kirkwood-generic-globalscale_sheevaplug-squashfs-sysupgrade.bin

And it worked smoothly.

I would have flashed it cleanly but the plug has gone back to its home under the telly, and it's a right faff to get it out and wire it up to my worktable again.

BusyBox v1.36.1 (2023-10-09 21:45:35 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 23.05.0, r23497-6637af95aa
 -----------------------------------------------------

I'm currently getting used to navigating the filesystem rather than using the web interface (I'm used to Debian and the Terminal); finding how to add a non-root user, set the hostname, use SSH only for login etc.

I'll get there, I enjoy tinkering.

Thanks for the info.
Re: Help flashing to a Sheevaplug NAND
October 23, 2023 01:08PM
Nanode,

Congrat!

OpenWrt, while it is great as a router OS, is not meant to be used as a full NAS (Debian is).

-bodhi
===========================
Forum Wiki
bodhi's corner (buy bodhi a beer)
Re: Help flashing to a Sheevaplug NAND
October 28, 2023 08:36AM
It's currently happily running as a DHPC server.

The plan is to move some services over to it, namely 'AdGuard Home', 'Unbound' and 'OpenVPN' to replace similar services running on the Pi.

(I'm unsure whether Unbound is really needed, I guess I'll find out.)

Ta for all the help.
Author:

Your Email:


Subject:


Spam prevention:
Please, enter the code that you see below in the input field. This is for blocking bots that try to post this form automatically. If the code is hard to read, then just try to guess it right. If you enter the wrong code, a new image is created and you get another chance to enter it right.
Message: