File:  [NetBSD Developer Wiki] / wikisrc / ports / evbarm / install_using_sysinst.mdwn
Revision 1.17: download - view: text, annotated - select for diffs
Tue Nov 20 12:41:35 2018 UTC (2 years, 3 months ago) by leot
Branches: MAIN
CVS tags: HEAD
Add a `##' header to better distinguish the u-boot dance for booting from the
hard disk.

[[!meta title="NetBSD/evbarm install via sysinst(8) on a SATA hard disk, USB stick or (u)SD card"]]

In this document we will see step by step how to install NetBSD/evbarm on an
external media (SATA hard disk, USB stick or (u)SD card) using
[[!template id=man name="sysinst" section="8"]].

We will start by installing NetBSD/evbarm via `armv7.img` on a
(u)SD card.  Then we will use
[[!template id=man name="sysinst" section="8"]] to install
NetBSD/evbarm on a SATA hard disk. The (u)SD card populated via
`armv7.img` will then be used only in the early boot phase for u-boot.

As practical example a BananaPI and a SATA hard disk will be used.
However, the following instructions can be probably easily applied
on other SoCs and medias with little adjustments.


# Populating (u)SD card with `armv7.img`

- Download or build `armv7.img`, e.g.:

[[!template id=programlisting text="""
$ ftp http://cdn.NetBSD.org/pub/NetBSD/NetBSD-8.0/evbarm-earmv7hf/binary/gzimg/armv7.img.gz
$ gunzip armv7.img.gz
"""]]

- Write the image to (u)SD card:

[[!template id=programlisting text="""
# dd if=armv7.img of=/dev/rsd0d bs=1m conv=sync
"""]]

- Write u-boot to (u)SD card. `u-boot` images are provided by
`sysutils/u-boot-<boardname>` packages, for example for Allwinner SoC:

[[!template id=programlisting text="""
# dd if=/usr/pkg/share/u-boot/&lt;boardname&gt;/u-boot-sunxi-with-spl.bin of=/dev/rld0d bs=1k seek=8 conv=sync
"""]]

## NetBSD/evbarm 8.0 (and older) u-boot adjustments

[[!template id=note text="""
Please note that the following adjustments will not be needed in
NetBSD-current and 9.0.
"""]]

NetBSD/evbarm 8.0 does not automatically boot on the BananaPI.
We can use the following commands to boot from the (u)SD cards in u-boot:

[[!template id=programlisting text="""
mmc dev 0
setenv kernel netbsd-BPI.ub
fatload mmc 0:1 82000000 $kernel
bootm 82000000 root=ld0a console=fb
"""]]

Or, to avoid typing them at every boot we can prepare an u-boot script via
[[!template id=man name="mkubootimage" section="1"]].

[[!template id=programlisting text="""
$ cat boot.cmd
mmc dev 0
setenv kernel netbsd-BPI.ub
fatload mmc 0:1 82000000 $kernel
bootm 82000000 root=ld0a console=fb
$ mkubootimage -A arm -n armv7 -T script boot.cmd boot.scr
"""]]

...and copy it on the populated (u)SD card:

[[!template id=programlisting text="""
# mount /dev/sd0e /mnt
# cp /mnt/boot.scr /mnt/boot.scr.orig
# cp boot.scr /mnt/
"""]]


# Installing via sysinst(8)

Now that the SD card is populated with `armv7.img` we can login as `root` (by
default the password is empty) and run `sysinst`:

[[!template id=programlisting text="""
# sysinst
"""]]

The first menu is about the system type (Respberry PI or Other), we select the
latter ("Other"):

[[!template id=programlisting text="""
 
 
 
 
 
 
 
 
 
 
                    +-------------------------------------+
                    | What kind of system do you have?    |
                    |                                     |
                    | a: Raspberry PI                     |
                    |>b: Other                            |
                    +-------------------------------------+
 
 
 
 
 
 
 
 
 
 
"""]]

We want to install NetBSD/evbarm on the hard disk so let's select
"Install NetBSD to hard disk":

[[!template id=programlisting text="""
 
 NetBSD/evbarm 8.0
 
 This menu-driven tool is designed to help you install NetBSD to a hard disk,
 or upgrade an existing NetBSD system, with a minimum of work.
 In the following menus type the reference letter (a, b, c, ...) to select an
 item, or type CTRL+N/CTRL+P to select the next/previous item.
 The arrow keys and Page-up/Page-down may also work.
 Activate the current selection from the menu by typing the enter key.
 
 If you booted from a floppy, you may now remove the disk.
 Thank you for using NetBSD!
               +-----------------------------------------------+
               | NetBSD-8.0 Install System                     |
               |                                               |
               |>a: Install NetBSD to hard disk                |
               | b: Upgrade NetBSD on a hard disk              |
               | c: Re-install sets or install additional sets |
               | d: Reboot the computer                        |
               | e: Utility menu                               |
               | f: Config menu                                |
               | x: Exit Install System                        |
               +-----------------------------------------------+
 
 
 
"""]]

Before proceeding with the installation, if the hard disk had any important data
it is better to stop and doing a backup before proceeding. If it is empty and/or
we can safetely remove its data we can proceed:

[[!template id=programlisting text="""
 
 You have chosen to install NetBSD on your hard disk.  This will change
 information on your hard disk.  You should have made a full backup before
 this procedure!  This procedure will do the following things:
         a) Partition your disk
         b) Create new BSD file systems
         c) Load and install distribution sets
         d) Some initial system configuration
 
 (After you enter the partition information but before your disk is changed,
 you will have the opportunity to quit this procedure.)
 
 Shall we continue?
                               +---------------+
                               | yes or no?    |
                               |               |
                               | a: No         |
                               |>b: Yes        |
                               +---------------+
 
 
 
 
 
 
 
"""]]

Now we can see all the available disks. The hard disk attached via SATA is a
120GB SSD recognized as `wd0`:

[[!template id=programlisting text="""
 
 On which disk do you want to install NetBSD?
 
 
                     +-----------------------------------+
                     | Available disks                   |
                     |                                   |
                     |>a: wd0 (112G, SanDisk SDSSDA120G) |
                     | b: Extended partitioning          |
                     | x: Exit                           |
                     +-----------------------------------+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
"""]]

We now need to edit MBR partition table. We will create two MBR partitions: the
first one a FAT32 for `/boot` and the other for NetBSD. We select "Edit the MBR
partition table":

[[!template id=programlisting text="""
 
 We are now going to install NetBSD on the disk wd0.
 
 NetBSD requires a single partition in the disk's MBR partition table, this is
 split further by the NetBSD disklabel.  NetBSD can also access file systems
 in other MBR partitions.
 
 If you select 'Use the entire disk' then the previous contents of the disk
 will be overwritten and a single MBR partition used to cover the entire disk.
 If you want to install more than one operating system then edit the MBR
 partition table and create a partition for NetBSD.
 
 A few hundred MB is enough for a basic installation, but you should allow
 extra for additional software and user files.
 Allow at least 5GB if you want to build NetBSD itself.
                      +---------------------------------+
                      | Which would you like to do?     |
                      |                                 |
                      |>a: Edit the MBR partition table |
                      | b: Use the entire disk          |
                      +---------------------------------+
 
 
 
 
 
"""]]

First we select the second entry ("b"), set the "type:" to "NetBSD":

[[!template id=programlisting text="""
 
 The Current MBR partition table is shown below.
 Flgs: a => Active partition, I => Install here.
 Select the partition you wish to change:
 
    Total disk size 114473 MB.
               +-----------------------------------------------------------+
    Start( MB) |>a:       type: unused                                     |
    ---------- | b:      start: 0 MB                                       |
 a:            | c:       size: 0 MB                                       |
>b:            | d:        end: 0 MB                                       |
 c:            | e:     active: No                                         |
 d:          +-----------------------------------+                         |
 e: Change in| a: Don't change                   |linders/MB)              |
 x: Partition| b: Delete partition               |                         |
             |>c: NetBSD                         |-------------------------+
             | d: Extended partition, LBA        |
             | e: FreeBSD/386BSD                 |
             | f: OpenBSD                        |
             | g: Linux native                   |
             | h: Linux swap                     |
             | i: DOS FAT12                      |
             | &lt;: page up, &gt;: page down          |
             +-----------------------------------+
 
 
"""]]

We reserve for the NetBSD MBR partition all the end of the disk,
starting at 92MB (1MB that will be empty and 91MB that will be for
the FAT32), we also select to make it active ("active: Yes") and
we will use it to install NetBSD ("install: Yes"):

[[!template id=programlisting text="""
 
 The Current MBR partition table is shown below.
 Flgs: a => Active partition, I => Install here.
 Select the partition you wish to change:
 
    Total disk size 114473 MB.
               +-----------------------------------------------------------+
    Start( MB) | a:       type: NetBSD                                     |
    ---------- | b:      start: 92 MB                                      |
 a:            | c:       size: 114381 MB                                  |
>b:            | d:        end: 114473 MB                                  |
 c:            | e:     active: Yes                                        |
 d:            | f:    install: Yes                                        |
 e: Change inpu| g: Change input units (sectors/cylinders/MB)              |
 x: Partition t|>x: Partition OK                                           |
               +-----------------------------------------------------------+
 
 
 
 
 
 
 
 
 
 
"""]]

We now select the first partition ("a") and create a "Windows FAT32", starting
at 1MB and ending at 92MB before the "NetBSD" partition. We also make it active
("active: Yes"):

[[!template id=programlisting text="""
 
 The Current MBR partition table is shown below.
 Flgs: a => Active partition, I => Install here.
 Select the partition you wish to change:
 
    Total disk size 114473 MB.
               +-----------------------------------------------------------+
    Start( MB) | a:       type: Windows FAT32                              |
    ---------- | b:      start: 1 MB                                       |
>a:            | c:       size: 91 MB                                      |
 b:         92 | d:        end: 92 MB                                      |
 c:            | e:     active: Yes                                        |
 d:            | f:    install: No                                         |
 e: Change inpu| g: Change input units (sectors/cylinders/MB)              |
 x: Partition t|>x: Partition OK                                           |
               +-----------------------------------------------------------+
 
 
 
 
 
 
 
 
 
 
"""]]

Here the final MBR partition table:

[[!template id=programlisting text="""
 
 The Current MBR partition table is shown below.
 Flgs: a => Active partition, I => Install here.
 Select the partition you wish to change:
 
    Total disk size 114473 MB.
 
    Start( MB)  Size( MB) Flg Kind
    ---------- ---------- --- ----------------
>a:          1         91 a   Windows FAT32
 b:         92     114381   I NetBSD
 c:                           unused
 d:                           unused
 e: Change input units (sectors/cylinders/MB)
 x: Partition table OK
 
 
 
 
 
 
 
 
 
 
 
"""]]

Now that the MBR partition table is written we can proceed to set
sizes of NetBSD partitions:

[[!template id=programlisting text="""
 
 NetBSD uses a BSD disklabel to carve up the NetBSD portion of the disk into
 multiple BSD partitions.  You must now set up your BSD disklabel.
 
 You can use a simple editor to set the sizes of the NetBSD partitions, or
 keep the existing partition sizes and contents.
 
 You will then be given the opportunity to change any of the disklabel fields.
 
 The NetBSD part of your disk is 114381 Megabytes.  A full installation
 requires at least 288 Megabytes without X and at least 348 Megabytes if the X
 sets are included.
                     +-----------------------------------+
                     | Choose your installation          |
                     |                                   |
                     |>a: Set sizes of NetBSD partitions |
                     | b: Use existing partition sizes   |
                     +-----------------------------------+
 
 
 
 
 
 
 
 
"""]]

We set the swap size to 4G and we reserve the rest of the space for "/":

[[!template id=programlisting text="""
 
 You can now change the sizes for the system partitions.  The default is to
 allocate all the space to the root file system.  However, you may wish to
 have separate /usr (additional system files), /var (log files etc) or /home
 (users' home directories) file systems.
 
 Free space will be added to the partition marked with a '+'.
 
        MB         Cylinders   Sectors   Filesystem
    a:   2208(110284)      4488   4523904 + /
    b:   4096              8323   8389584   swap
    c:      0                 0         0   /tmp (mfs)
    d:      0                 0         0   /usr
    e:      0                 0         0   /var
    f:      0                 0         0   /home
    g: Add a user defined partition
    h: Change input units (sectors/cylinders/MB)
   >x: Accept partition sizes.  Free space 108076 MB, 13 free partitions.
 
 
 
 
 
 
 
 
"""]]

The summary of the current BSD disklabel is:

[[!template id=programlisting text="""
 
 We now have your BSD disklabel partitions as:
 This is your last chance to change them.
 
    Start  MB   End  MB  Size  MB FS type    Newfs Mount Mount point
    --------- --------- --------- ---------- ----- ----- -----------
>a:        92    110375    110284 FFSv1      Yes   Yes   /
 b:    110376    114472      4096 swap
 c:         0    114472    114473 Whole disk
 d:         0         0         0 unused
 e:         1        91        91 Boot partition
 f:         0         0         0 unused
 g: Show all unused partitions
 h: Change input units (sectors/cylinders/MB)
 x: Partition sizes ok
 
 
 
 
 
 
 
 
 
 
 
"""]]

We can adjust the disklabel, for example we can use FFSv2 for "/"
and for the disklabel "e" set its mount point to "/boot" in order
that an `/etc/fstab` entry will be populated (please note
that "/boot" will not be automatically mounted by default):

[[!template id=programlisting text="""
 
 We now have your BSD disklabel partitions as:
 This is your last chance to change them.
 
    Start  MB   End  MB  Size  MB FS type    Newfs Mount Mount point
    --------- --------- --------- ---------- ----- ----- -----------
 a:        92    110375    110284 FFSv2      Yes   Yes   /
 b:    110376    114472      4096 swap
 c:         0    114472    114473 Whole disk
 d:         0         0         0 unused
 e:         1        91        91 Boot partition             /boot
 f:         0         0         0 unused
 g: Show all unused partitions
 h: Change input units (sectors/cylinders/MB)
>x: Partition sizes ok
 
 
 
 
 
 
 
 
 
 
 
"""]]

We have finally ready to proceed with
[[!template id=man name="sysinst" section="8"]] as usual and install
the installation sets.  If you choose to install via FTP/HTTP please
note that the "Binary set directory" needs to be adjusted from
`/evbarm/binary/sets` to `/evbarm-earmv7hf/binary/sets` (it's
missing an `-earmv7hf' due different evbarm-s):

[[!template id=programlisting text="""
 
 The following are the http site, directory, user, and password that will be
 used.  If "user" is "ftp", then the password is not needed.
 
 a: Host                      ftp.NetBSD.org
 b: Base directory            pub/NetBSD/NetBSD-8.0
>c: Binary set directory      /evbarm-earmv7hf/binary/sets
 d: Source set directory      /source/sets
 e: User                      ftp
 f: Password
 g: Proxy
 h: Transfer directory        /usr/INSTALL
 i: Delete after install      No
 j: Configure network
 k: Exit
 x: Get Distribution
 
 
 
 
 
 
 
 
 
 
"""]]

The installation will proceed as usual and for more information
please give a look to
[The NetBSD Guide](https://www.netbsd.org/docs/guide/en/chap-exinst.html#exinst-choose-media).

When the installation is completed, back to the shell we can populate
`/boot` partition of the hard disk ("wd0e") by just copying all
files of the `/boot` partition of the (u)SD card (`armv7.img`):

[[!template id=programlisting text="""
# mount /dev/wd0e /mnt
# cp -r /boot/* /mnt/
# umount /mnt
"""]]


## NetBSD/evbarm 8.0 u-boot adjustments to boot from hard disk

Finally we can prepare a u-boot script (`boot.scr`) to load the kernel from the
SATA hard disk and boot it:

[[!template id=programlisting text="""
$ cat boot.cmd
scsi scan
scsi dev 0
setenv kernel netbsd-BPI.ub
fatload scsi 0:1 82000000 $kernel
bootm 82000000 root=wd0a console=fb
$ mkubootimage -A arm -n armv7 -T script boot.cmd boot.scr
"""]]

...and copy them to the (u)SD `/boot`:

[[!template id=programlisting text="""
# cp boot.scr /boot
"""]]

Please remember that in the early boot phase, u-boot and `boot.scr`
are loaded from the (u)SD card and it loads the kernel present in
the `/boot` partition of the hard disk.


# References

- [Installing NetBSD to HD/SSD on the Banana Pi](http://daemonforums.org/showthread.php?t=9652)
  shows how to install NetBSD/evbarm 7.0 on a SATA hard disk by copying the
  contents of (u)SD.
- [Chapter 3. Example installation, The NetBSD Guide](https://www.netbsd.org/docs/guide/en/chap-exinst.html)
  describes in details every steps of the NetBSD installation.

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb