Nano Pi M1

Nano Pi M1 is tiny ARMv7 based SBC. It costs just $11 for 512MB model.

Main SoC is Allwinner H3. This platform is supported in Linux 4.x.
I prefer mainline u-boot and kernel to BSP from vendor due to software maintenance. I'll focus on how to build u-boot and kernel from official git repositories. For the root file system, Alpine Linux is used. It is lovely simple and light-weight Linux OS!

Get it started with the prebuilt image

My plan is maintaining Linux kernel and user-space by myself. To do this, it is required to understand how it works. It can be done by using prebuilt Alpine Linux.

$ wget http://wiki.alpinelinux.org/cgi-bin/dl.cgi/v3.3/releases/armhf/alpine-uboot-3.4.2-armhf.tar.gz
$ tar xf alpine-uboot-3.4.2-armhf.tar.gz

OK, let's see which files are included.

$ tree

|-- apks
|   `-- armhf
|       |-- APKINDEX.tar.gz
|       |-- alpine-base-3.4.2-r0.apk
        ...
|       `-- zlib-1.2.8-r2.apk
|-- boot
|   |-- dtbs
        ...
|   |   |-- am335x-boneblack.dtb
        ...
|   |   |-- exynos5420-arndale-octa.dtb
        ...
|   |   |-- omap4-panda-es.dtb
        ...
|   |   |-- qcom-apq8074-dragonboard.dtb
        ...
|   |   `-- vexpress-v2p-ca9.dtb
|   |-- initramfs-grsec
|   |-- modloop-grsec
|   `-- vmlinuz-grsec
|-- extlinux
|   `-- extlinux.conf
`-- u-boot
    |-- Cubieboard
    |   `-- u-boot.img
    ...
    |-- README.txt

14 directories, 346 files

Let's take a look at main files

  • apks/*.apk

    Alpine Linux package files like .deb of Debian system. We can install some packages in case of offline.

  • boot/dtbs/*dtb

    Device tree binary files. Many ARM boards are supported. However, it seems sunxi8i-h3 base board is not included. Don't worry about that. I'm gonna port Allwinner H3 platform through the manual build.

  • boot/vmlinuz-grsec

    Linux kernel image. It is just vmlinuz or zImage file. You can check what this is.

    $ file boot/vmlinuz-grsec  
    boot/vmlinuz-grsec: Linux kernel ARM boot executable zImage \(little-endian\)
    
  • extlinux/extlinux.conf

    This is configuration file like uENV.txt.

    $ cat extlinux/exlinux.conf  
    LABEL grsec  
      MENU DEFAULT  
      MENU LABEL Linux grsec  
      LINUX /boot/vmlinuz-grsec  
      INITRD /boot/initramfs-grsec  
      DEVICETREEDIR /boot/dtbs  
      APPEND BOOT\_IMAGE=/boot/vmlinuz-grsec modules=loop,squashfs,sd-mod,usb-storage modloop=/boot/modloop-grsec console=${console}
    

    It represents where kernel image is, what boot command is and so on.

😮 Wait! Isn't the u-boot binary file crucial?

Yes, it is. However, u-boot should be located at somewhere prior to loading kernel and root file system.

OK, we are ready to make SD card image but how can we do?
And how does Nano pi M1 boot?

Boot process

BROM -> SPL & uboot -> Linux kernel -> Rootfs

Orange Pi PC/Plus

Nano Pi M1 is similar to Orange Pi PC or plus board which is supported in the mainline (not only Linux kernel but also u-boot).
On building u-boot, defconfig for orange Pi PC is re-used.

U-boot

Let's build the uboot to generate SPL and uboot files. Output file name is u-boot-sunxi-with-spl.bin.

$ git clone git://git.denx.de/u-boot.git

You may need to install the dtc.

$ sudo apt-get install device-tree-compiler

Create defconfig for Nano Pi M1 based on Orange Pi PC.

$ cp configs/orangepi_pc_defconfig configs/nanopi_m1_defconfig

Edit nanopi_m1_defconfig - just replace dtb name.
  CONFIG_DEFAULT_DEVICE_TREE="sun8i-h3-nanopi-m1"

Build!

$ make nanopi_m1_defconfig
$ make CROSS_COMPILE=arm-linux-gnueabihf-

... build process ...

LD      spl/u-boot-spl
OBJCOPY spl/u-boot-spl-nodtb.bin
COPY    spl/u-boot-spl.bin
MKSUNXI spl/sunxi-spl.bin
CAT     u-boot-sunxi-with-spl.bin

The u-boot-sunxi-with-spl.bin will be written into the SD card.

Kernel

Working on device tree and porting drivers based on Linux mainline kernel.
https://github.com/milokim/linux/tree/nanopi-m1-v4.7

  • Ethernet driver patch
    According to this sunxi wiki page, mainline driver work is on going. I pulled the branch 'sun8i-emac-wip-v2' of [email protected]:montjoie/linux.git, and applied related patches into my git repository.

    0001-ethernet-add-sun8i-emac-driver.patch
    0002-MAINTAINERS-Add-myself-as-maintainers-of-sun8i-emac.patch
    0003-ARM-dts-sun8i-h3-add-sun8i-emac-ethernet-driver.patch
    0004-ARM-dts-sun8i-Enable-sun8i-emac-on-the-Orange-PI-PC.patch
    0005-ARM-dt-sun8i-h3-add-sun8i-emac-rgmii-pins.patch
    0006-ARM-dt-sun8i-Enable-sun8i-emac-on-the-sun8i-h3-orang.patch
    0007-ethernet-sun8i-emac-add-optionnal-phy-regulator.patch

    Enable CONFIG_SUN8I_EMAC in Kconfig and emac in the dts.

    diff --git a/arch/arm/boot/dts/sun8i-h3-nanopi-m1.dts b/arch/arm/boot/dts/sun8i-h3-nanopi-m1.dts
    index a53b4ef..32546c4 100644
    --- a/arch/arm/boot/dts/sun8i-h3-nanopi-m1.dts
    +++ b/arch/arm/boot/dts/sun8i-h3-nanopi-m1.dts
    @@ -135,3 +135,14 @@
            pinctrl-0 = <&uart0_pins_a>;
            status = "okay";
     };
    +
    +&emac {
    +       phy = <&phy1>;
    +       phy-mode = "mii";
    +       allwinner,use-internal-phy;
    +       allwinner,leds-active-low;
    +       status = "okay";
    +       phy1: ethernet-phy@1 {
    +               reg = <1>;
    +       };
    +};
    

SD card partition

start size (KB) description
0 8 Unused
8 32 SPL
40 ? Uboot
544 128 Environment
672 352 Reserved
2048 end of SD Alpine Linux

Format the SD card. In my system, sdb is the mount location of SD card.
Please note that it depends on the system.

$ sudo dd if=/dev/zero of=/dev/sdb bs=1M count=1

Writing SPL & uboot

$ sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8
420+1 records in
420+1 records out
430212 bytes (430 kB) copied, 0.102771 s, 4.2 MB/s

Creating a partition for Alpine Linux

$ sudo fdisk /dev/sdb

Command (m for help): n
Partition type:
    p   primary (0 primary, 0 extended, 4 free)
    e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-31275007, default 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-31275007, default 31275007): 
Using default value 31275007
Command (m for help): w
The partition table has been altered!

$ sudo mkfs.fat /dev/sdb1

Let's check whether created partion is ok or not

$ sudo fdisk /dev/sdb

Command (m for help): p

Disk /dev/sdb: 16.0 GB, 16012804096 bytes
64 heads, 32 sectors/track, 15271 cylinders, total 31275008 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd2858c87

Device    Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    31275007    15636480   83  Linux

It should be a bootable partition. To set the bootable flag, select 'a' in the menu

Command (m for help): a
Partition number (1-4): 1

Double check!

Command (m for help): p

Disk /dev/sdb: 16.0 GB, 16012804096 bytes
64 heads, 32 sectors/track, 15271 cylinders, total 31275008 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd2858c87

Device    Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048    31275007    15636480   83  Linux

OK, now the 1st partition is bootable. Then, let's make the FAT file system for rootfs.

$ sudo mkfs.fat /dev/sdb1

Rootfs - Alpine Linux

Created FAT partition is for Alpine Linux. Just copy whole files into the partition.

$ sudo mount /dev/sdb1 /mnt/
$ sudo rsync -r <root directory of prebuilt Alpine image>/ /mnt/
$ ls -la /mnt/
total 44
drwxr-xr-x  6 root root 8192 Aug 10 15:07 .
drwxr-xr-x 24 root root 4096 Jul 24 23:02 ..
drwxr-xr-x  3 root root 8192 Aug 10 15:07 apks
drwxr-xr-x  3 root root 8192 Aug 10 15:07 boot
drwxr-xr-x  2 root root 8192 Aug 10 15:07 extlinux
drwxr-xr-x 10 root root 8192 Aug 10 15:07 u-boot

Copy new dtb file into the SD card

$ sudo cp arch/arm/boot/dts/sun8i-h3-nanopi-m1.dtb /mnt/boot/dtbs/

Replace new built Linux kernel with prebuilt image (vmlinuz-grsec).

$ sudo cp arch/arm/boot/zImage /mnt/boot/vmlinuz-grsec

Log messages

Welcome to minicom 2.7

OPTIONS: I18n 
Compiled on Jan  1 2014, 17:13:19.
Port /dev/ttyUSB0, 17:13:01

Press CTRL-A Z for help on special keys


U-Boot SPL 2016.09-rc1-00343-g2e406db-dirty (Aug 10 2016 - 17:09:40)
DRAM: 512 MiB
Failed to set core voltage! Can't set CPU frequency
Trying to boot from MMC1


U-Boot 2016.09-rc1-00343-g2e406db-dirty (Aug 10 2016 - 17:09:40 +0900) Allwinner Technology

CPU:   Allwinner H3 (SUN8I 1680)
Model: FriendlyArm Nano Pi M1
I2C:   ready
DRAM:  512 MiB
MMC:   SUNXI SD/MMC: 0
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   phy interface0
eth0: ethernet@01c30000
starting USB...
USB0:   USB EHCI 1.00
USB1:   USB OHCI 1.0
USB2:   USB EHCI 1.00
USB3:   USB OHCI 1.0
USB4:   USB EHCI 1.00
USB5:   USB OHCI 1.0
scanning bus 0 for devices... 1 USB Device(s) found
scanning bus 2 for devices... 1 USB Device(s) found
scanning bus 4 for devices... 1 USB Device(s) found
Hit any key to stop autoboot:  0 
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found /extlinux/extlinux.conf
Retrieving file: /extlinux/extlinux.conf
reading /extlinux/extlinux.conf
266 bytes read in 21 ms (11.7 KiB/s)
1:      Linux grsec
Retrieving file: /boot/initramfs-grsec
reading /boot/initramfs-grsec
5845664 bytes read in 463 ms (12 MiB/s)
Retrieving file: /boot/vmlinuz-grsec
reading /boot/vmlinuz-grsec
3428400 bytes read in 285 ms (11.5 MiB/s)
append: BOOT_IMAGE=/boot/vmlinuz-grsec modules=loop,squashfs,sd-mod,usb-storage modloop=/boot/0
Retrieving file: /boot/dtbs/sun8i-h3-nanopi-m1.dtb
reading /boot/dtbs/sun8i-h3-nanopi-m1.dtb
15224 bytes read in 62 ms (239.3 KiB/s)
## Flattened Device Tree blob at 43000000
   Booting using the fdt blob at 0x43000000
   Loading Ramdisk to 49a6c000, end 49fff2a0 ... OK
   Loading Device Tree to 49a65000, end 49a6bb77 ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.7.0 (milo@milo-dev) (gcc version 4.8.4 (Ubuntu/Linaro 4.8.4-2ub6
[    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
[    0.000000] CPU: div instructions available: patching division code
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine model: FriendlyArm Nano Pi M1
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: Using PSCI v0.1 Function IDs from DT
[    0.000000] percpu: Embedded 13 pages/cpu @dffb7000 s22400 r8192 d22656 u53248
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 130048
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-grsec modules=loop,squashfs,sd-mo0
[    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Memory: 505048K/524288K available (5276K kernel code, 250K rwdata, 1432K rodata)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xe0800000 - 0xff800000   ( 496 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0xc0008000 - 0xc078d064   (7701 kB)
[    0.000000]       .init : 0xc0800000 - 0xc0900000   (1024 kB)
[    0.000000]       .data : 0xc0900000 - 0xc093eaa0   ( 251 kB)
[    0.000000]        .bss : 0xc0940000 - 0xc0981adc   ( 263 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000]  Build-time adjustment of leaf fanout to 32.
[    0.000000]  RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=32, nr_cpu_ids=4
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000000] Architected cp15 timer(s) running at 24.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, s
[    0.000013] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns
[    0.000037] Switching to timer-based delay loop, resolution 41ns
[    0.000476] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635s
[    0.000873] Console: colour dummy device 80x30
[    0.000921] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.0)
[    0.000947] pid_max: default: 32768 minimum: 301
[    0.001123] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.001145] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.002279] CPU: Testing write buffer coherency: ok
[    0.002712] /cpus/cpu@0 missing clock-frequency property
[    0.002743] /cpus/cpu@1 missing clock-frequency property
[    0.002766] /cpus/cpu@2 missing clock-frequency property
[    0.002791] /cpus/cpu@3 missing clock-frequency property
[    0.002814] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.002861] Setting up static identity map for 0x40100000 - 0x40100058
[    0.015575] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.026727] CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
[    0.037866] CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
[    0.038000] Brought up 4 CPUs
[    0.038045] SMP: Total of 4 processors activated (192.00 BogoMIPS).
[    0.038058] CPU: All CPU(s) started in HYP mode.
[    0.038068] CPU: Virtualization extensions available.
[    0.039256] devtmpfs: initialized
[    0.047148] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5
[    0.047625] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 191s
[    0.047769] pinctrl core: initialized pinctrl subsystem
[    0.049485] NET: Registered protocol family 16
[    0.050011] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.056570] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
[    0.056593] hw-breakpoint: maximum watchpoint size is 8 bytes.
[    0.073933] SCSI subsystem initialized
[    0.074833] usbcore: registered new interface driver usbfs
[    0.074969] usbcore: registered new interface driver hub
[    0.075096] usbcore: registered new device driver usb
[    0.075520] pps_core: LinuxPPS API ver. 1 registered
[    0.075537] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@>
[    0.075593] PTP clock support registered
[    0.076079] Advanced Linux Sound Architecture Driver Initialized.
[    0.077808] clocksource: Switched to clocksource arch_sys_counter
[    0.097615] NET: Registered protocol family 2
[    0.098681] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
[    0.098803] TCP bind hash table entries: 4096 (order: 3, 32768 bytes)
[    0.098952] TCP: Hash tables configured (established 4096 bind 4096)
[    0.099049] UDP hash table entries: 256 (order: 1, 8192 bytes)
[    0.099103] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[    0.099415] NET: Registered protocol family 1
[    0.099939] RPC: Registered named UNIX socket transport module.
[    0.099961] RPC: Registered udp transport module.
[    0.099974] RPC: Registered tcp transport module.
[    0.099986] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.100388] Unpacking initramfs...
[    0.938014] Freeing initrd memory: 5712K (c9a6c000 - ca000000)
[    0.940638] futex hash table entries: 1024 (order: 4, 65536 bytes)
[    0.941802] workingset: timestamp_bits=28 max_order=17 bucket_order=0
[    0.962120] NFS: Registering the id_resolver key type
[    0.962220] Key type id_resolver registered
[    0.962235] Key type id_legacy registered
[    0.964246] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
[    0.964268] io scheduler noop registered
[    0.964283] io scheduler deadline registered
[    0.964345] io scheduler cfq registered (default)
[    0.969004] sun8i-h3-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[    0.970423] sun8i-h3-r-pinctrl 1f02c00.pinctrl: initialized sunXi PIO driver
[    1.097265] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled
[    1.103084] console [ttyS0] disabled
[    1.123344] 1c28000.serial: ttyS0 at MMIO 0x1c28000 (irq = 28, base_baud = 1500000) is a U6A
[    1.737531] console [ttyS0] enabled
[    1.743415] CAN device driver interface
[    1.747976] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.754509] ehci-platform: EHCI generic platform driver
[    1.759951] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    1.766148] ohci-platform: OHCI generic platform driver
[    1.772930] sun6i-rtc 1f00000.rtc: rtc core: registered rtc-sun6i as rtc0
[    1.779787] sun6i-rtc 1f00000.rtc: RTC enabled
[    1.784498] i2c /dev entries driver
[    1.788484] IR NEC protocol handler initialized
[    1.793019] IR RC5(x/sz) protocol handler initialized
[    1.798110] IR RC6 protocol handler initialized
[    1.802642] IR JVC protocol handler initialized
[    1.807171] IR Sony protocol handler initialized
[    1.811816] IR SANYO protocol handler initialized
[    1.816522] IR Sharp protocol handler initialized
[    1.821251] IR MCE Keyboard/mouse protocol handler initialized
[    1.827085] IR XMP protocol handler initialized
[    1.832653] sunxi-wdt 1c20ca0.watchdog: Watchdog enabled (timeout=16 sec, nowayout=0)
[    1.841130] cpu cpu0: failed to get clock: -2
[    1.845513] cpufreq-dt: probe of cpufreq-dt failed with error -2
[    1.853082] sunxi-mmc 1c0f000.mmc: Got CD GPIO
[    1.897874] sunxi-mmc 1c0f000.mmc: base:0xe0884000 irq:23
[    1.905537] usbcore: registered new interface driver usbhid
[    1.911181] usbhid: USB HID core driver
[    1.917867] NET: Registered protocol family 17
[    1.922346] can: controller area network core (rev 20120528 abi 9)
[    1.928689] NET: Registered protocol family 29
[    1.933141] can: raw protocol (rev 20120528)
[    1.937414] can: broadcast manager protocol (rev 20120528 t)
[    1.943123] can: netlink gateway (rev 20130117) max_hops=1
[    1.949252] Key type dns_resolver registered
[    1.953696] Registering SWP/SWPB emulation handler
[    1.963401] sun6i-rtc 1f00000.rtc: setting system clock to 1970-01-01 00:00:09 UTC (9)
[    1.976871] vcc3v0: disabling
[    1.979943] vcc5v0: disabling
[    1.983020] ALSA device list:
[    1.985992]   No soundcards found.
[    1.993038] Freeing unused kernel memory: 1024K (c0800000 - c0900000)
[    2.025071] mmc0: host does not support reading read-only switch, assuming write-enable
[    2.035874] mmc0: new high speed SDHC card at address 59b4
[    2.042435] mmcblk0: mmc0:59b4       14.9 GiB 
[    2.048900]  mmcblk0: p1
Alpine Init 3.0.5-r1
 * Loading boot drivers: ok.
 * Mounting boot media: ok.
 * Installing packages to root filesystem: (1/16) Installing musl (1.1.14-r10)
(2/16) Installing busybox (1.24.2-r9)
Executing busybox-1.24.2-r9.post-install
(3/16) Installing alpine-baselayout (3.0.3-r0)
Executing alpine-baselayout-3.0.3-r0.pre-install
Executing alpine-baselayout-3.0.3-r0.post-install
(4/16) Installing openrc (0.21-r0)
Executing openrc-0.21-r0.post-install
(5/16) Installing alpine-conf (3.4.1-r1)
(6/16) Installing zlib (1.2.8-r2)
(7/16) Installing libcrypto1.0 (1.0.2h-r1)
(8/16) Installing libssl1.0 (1.0.2h-r1)
(9/16) Installing apk-tools (2.6.7-r0)
(10/16) Installing busybox-suid (1.24.2-r9)
(11/16) Installing busybox-initscripts (3.0-r2)
Executing busybox-initscripts-3.0-r2.post-install
(12/16) Installing scanelf (1.1.6-r0)
(13/16) Installing musl-utils (1.1.14-r10)
(14/16) Installing libc-utils (0.7-r0)
(15/16) Installing alpine-keys (1.1-r0)
(16/16) Installing alpine-base (3.4.2-r0)
Executing busybox-1.24.2-r9.trigger
OK: 6 MiB in 16 packages
ok.


   OpenRC 0.21.723ca9e is starting up Linux 4.7.0 (armv7l)

 * /proc is already mounted
 * Mounting /run ... * /run/openrc: creating directory
 * /run/lock: creating directory
 * /run/lock: correcting owner
 * Caching service dependencies ... [ ok ]
 * Caching service dependencies ... [ ok ]
 * Clock skew detected with `/etc/init.d/dnsd'
 * Adjusting mtime of `/run/openrc/deptree' to Mon Jun 27 17:41:41 2016

 * Remounting devtmpfs on /dev ... [ ok ]
 * Mounting debug filesystem ... [ ok ]
 * Mounting cgroup filesystem ... [ ok ]
 * Mounting modloop /media/mmcblk0p1/boot/modloop-grsec ...mount: can't setup loop device: No s
 [ !! ]
 * ERROR: modloop failed to start
 * Starting busybox mdev ... [ ok ]
 * Loading hardware drivers ...modprobe: can't change directory to '/lib/modules': No such fily
 [ ok ]
 * WARNING: clock skew detected!
 * Mounting modloop /media/mmcblk0p1/boot/modloop-grsec ...mount: can't setup loop device: No s
 [ !! ]
 * ERROR: modloop failed to start
 * Loading modules ...modprobe: can't change directory to '/lib/modules': No such file or direy
 [ ok ]
 * Setting system clock using the hardware clock [UTC] ... [ ok ]
 * Checking local filesystems  ... [ ok ]
 * Remounting filesystems ... [ ok ]
 * Mounting local filesystems ... [ ok ]
 * Configuring kernel parameters ...sysctl: error: 'net.ipv4.tcp_syncookies' is an unknown key
 [ ok ]
 * Migrating /var/lock to /run/lock ... [ ok ]
 * Migrating /var/run to /run ... [ ok ]
 * Creating user login records ... [ ok ]
 * Wiping /tmp directory ... [ ok ]
 * Setting hostname ... [ ok ]
 * Starting busybox klogd ... [ ok ]
 * Starting busybox syslog ... [ ok ]
 * WARNING: clock skew detected!
 * Mounting modloop /media/mmcblk0p1/boot/modloop-grsec ...mount: can't setup loop device: No s
 [ !! ]
 * ERROR: modloop failed to start

Welcome to Alpine Linux 3.4
Kernel 4.7.0 on an armv7l (/dev/ttyS0)

localhost login: 

References

results matching ""

    No results matching ""