version 1.1, 2018/11/19 13:54:45
|
version 1.11, 2018/11/19 22:00:10
|
Line 4 In this document we will see step by ste
|
Line 4 In this document we will see step by ste
|
external media (SATA hard disk, USB stick or (u)SD card) using |
external media (SATA hard disk, USB stick or (u)SD card) using |
[[!template id=man name="sysinst" section="8"]]. |
[[!template id=man name="sysinst" section="8"]]. |
|
|
|
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` |
# Populating (u)SD card with `armv7.img` |
|
|
*TODOleot*: (mostly) copy-paste instructions from allwinner.mdwn |
- Download or build `armv7.img`, e.g.: |
|
|
*TODOleot*: Adjust/provide u-boot incantantions to boot on a BPI |
[[!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/<boardname>/u-boot-sunxi-with-spl.bin of=/dev/rld0d bs=1k seek=8 conv=sync |
|
"""]] |
|
|
|
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) |
# Installing via sysinst(8) |
|
|
*TODOleot*: include all sysinst(8) "screenshot" |
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 | |
|
| <: page up, >: 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 |
|
"""]] |
|
|
|
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`: |
|
|
*TODOleot*: add a reference to The NetBSD Guide for further steps of the |
[[!template id=programlisting text=""" |
installation. |
# cp boot.scr /boot |
|
"""]] |
|
|
*TODOleot*: add information how to populate `/boot` and prepare `boot.cmd`, |
Please remember that in the early boot phase, u-boot and `boot.scr` |
`boot.scr`. |
are loaded from the (u)SD card and it loads the kernel present in |
|
the `/boot` partition of the hard disk. |
|
|
|
|
# References |
# References |