Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
.\"	$NetBSD: install,v 1.31 2009/01/26 00:14:42 snj Exp $
.\"
.\" Copyright (c) 1999-2002 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.
Installing
.Nx
is a relatively complex process, but if you have
this document in hand it shouldn't be too much trouble.
.Pp
There are several ways to install
.Nx
onto a disk.
The easiest way in terms of preliminary setup is to install from CD-ROM.
If you don't have access to a CD-ROM or CD-ROM burner, you
can use a miniroot image that can be booted off your local disk's swap
partition.
Alternatively, if your UltraSPARC is hooked up in a network
you can find a server and arrange for a diskless setup which is a convenient
way to install on a machine whose disk does not currently hold a usable
operating system (see the section
.Sx Installing NetBSD by using a diskless setup
below).
.Pp
If you have problems with these or you are installing 
.Nx
onto the same disk as 
.Tn Solaris ,
see the section below on
.Sx "Manual Installation of NetBSD using Solaris"
.
.Ss2 Installing NetBSD from CD-ROM
.
Installing from CD-ROM is the least painful way to install
.Nx .
Simply insert the CD-ROM in the drive, power up the computer, and type:
.(disp
.No ok Ic "boot cdrom"
.disp)
.Pp
This Open Firmware boot command will cause the
.Nx
kernel contained in the CD-ROM to be booted.
After the initial probe messages you'll be
asked to start the install or upgrade procedure.
Proceed to the section
.Sx "Running the sysinst installation program"
below.
.
.Ss2 Installing NetBSD by using the NetBSD miniroot
.
The miniroot is a self-contained
.Nx
file system holding all utilities
necessary to install
.Nx
on a local disk.
It is distributed as a plain
file designed to be transferred to a raw disk partition from which it can
be booted using the appropriate OpenFirmware command.
Usually, the miniroot will be loaded into the swap partition of a disk.
If needed, you can use any other unused partition,
but remember that the partition will then not
available during the installation process.
.Pp
Loading the miniroot onto your raw partition is simple using the
.Xr dd 1
command.  Just remember to first uncompress the miniroot image and boot 
your OS with the
.Li -s
flag so that it runs 
.Dq "single-user"
and does not attempt to start swapping.
.(disp
.No ok Ic "boot -s"
.disp)
.Pp
On
.Tn Solaris
you use a command like:
.(disp
.No # Ic "gunzip miniroot.fs.gz"
.No # Ic "dd if=miniroot.fs of=/dev/rdsk/c0t0d0s1 bs=4k"
.disp)
On
.Nx
the command is:
.(disp
.No # Ic "gunzip miniroot.fs.gz"
.No # Ic "dd if=miniroot.fs of=/dev/rsd0b bs=4k"
.disp)
Replace
.Li /dev/rdsk/c0t0d0s1
or
.Li /dev/rsd0b
with your swap partition.
.Pp
After transferring the miniroot to disk, bring the system down by:
.(disp
.No # Ic halt
.disp)
Then boot the miniroot by typing the appropriate command at the 
OpenFirmware prompt:
.(disp
.No ok Ic "boot disk:b netbsd"
.disp)
If you've loaded the miniroot onto some other disk than
.Li sd0
use the correct 
.Pa devalias ,
such as
.(disp
.No ok Ic "boot disk1:b netbsd"
.disp)
This Open Firmware boot command will cause the
.Nx
kernel contained in the
miniroot image to be booted.
After the initial probe messages you'll be
asked to start the install or upgrade procedure.
Proceed to the section
.Sx "Running the sysinst installation program"
below.
.
.Ss2 Installing NetBSD by using a NetBSD kernel on a Solaris partition
.
This procedure is very straightforward.  You will be putting the
.Nx
installation kernel (kernel with a RAM disk installer) on your
.Tn Solaris
partition and telling Open Firmware to boot the
.Nx
kernel.
.Pp
CAVEAT: this method is a bit fragile.  Depending on physical partition layout,
partition size, and parameters used to create the filesystem of your
.Tn Solaris
root partition, bugs in the bootloader might be triggered and cause this
method to fail.
.Pp
First, copy the 
.Pa netbsd-INSTALL.gz
kernel and bootloader to the root level of your hard drive and halt your 
system
.(disp
.No # Ic "cp binary/kernel/netbsd-INSTALL.gz /"
.No # Ic "cp installation/misc/ofwboot /"
.No # Ic "halt"
.disp)
At the Open Firmware prompt, boot
.Nx .
.(disp
.No ok Ic "boot disk:a /ofwboot -a"
.disp)
The
.Li -a
flag is needed so that the bootloader will ask you to find your 
installation kernel.
.(disp
Rebooting with command: boot disk:a /ofwboot -a
Boot device: /pci@1f,4000/scsi@3/disk@0,0:a  File and args: /ofwboot -a
.No Enter filename [/ofwboot]: Ic "\*[Lt]return\*[Gt]
\*[Gt]\*[Gt] NetBSD/sparc64 OpenFirmware Boot, Revision 1.7
\*[Gt]\*[Gt] (autobuild@tgm.netbsd.org, Thu May 20 16:29:20 UTC 2004)
.No Boot: Ic netbsd-INSTALL.gz
.disp)
After the initial probe messages you'll be
asked to start the install or upgrade procedure.
Proceed to the section
.Sx "Running the sysinst installation program"
below.
.
.Ss2 Installing NetBSD by using a netboot setup
.
.so ../common/netboot
.Pp
Now, netboot your system from the server by entering the appropriate
.Ic boot
command at the Open Firmware prompt.
.(disp
.No ok Ic "boot net netbsd"
.disp)
After the initial probe messages you'll be
asked to start the install or upgrade procedure.
Proceed to the section
.Sx "Running the sysinst installation program"
below.
.
.so ../common/sysinst
.Pp
Skip down to the section on
.Sx "Booting NetBSD for the first time"
.
.Ss2 Manual Installation of NetBSD using Solaris
.
(Adapted from Murray Stokely's \*[Lt]murray@osd.bsdi.com\*[Gt] instructions)
.Pp
You can use 
.Tn Solaris 
to prepare the 
.Nx
user-friendly installer or to perform a full manual installation of 
.Nx .
If you want to use the user-friendly miniroot installer or RAM disk 
installation kernel, follow the sections 
.Sx "Installing NetBSD by using the NetBSD miniroot"
or
.Sx "Installing NetBSD by using a NetBSD kernel on a Solaris partition" .
.Pp
Manual installation from Solaris 10 is not possible because NetBSD
cannot use the resulting UFS file system.  It is possible to install
Solaris 10 and NetBSD on the same disk.  To do so, partition the disk
with the Solaris format command, then boot NetBSD and perform a manual
installation.  Be careful not to write a NetBSD disklabel.  Use the
disklabel command to read the partition size, as constructed from the
Solaris disklabel.  By default the NetBSD newfs command writes a NetBSD
disklabel.  Avoid this by using the -F and -s arguments to newfs.
.Pp
.(bullet
.To 2 "Preparing the disk in Solaris"
.Em "Preparing the disk in Solaris"
.Pp
The first step is to format and label the disk that you would like to
use with
.Nx .
This can be accomplished with the 
.Xr format 1M
command in Solaris, which allows you to partition a disk and write a 
disklabel.  It also is used to perform a low-level format on SCSI drives.
You will want to create a root partition and a swap partition.
Depending on your preferences, you may also wish to create separate
.Pa /usr No or Pa /var
partitions.
.Pp
.(disp
.No #  Ic "/usr/sbin/format"
Searching for disks...
Mode sense page(3) reports nsect value as 280, adjusting it to 218
done

c0t1d0: configured with capacity of 16.95GB

AVAILABLE DISK SELECTIONS:
       0. c0t0d0 \*[Lt]SUN4.2G cyl 3880 alt 2 hd 16 sec 135\*[Gt]
          /pci@1f,4000/scsi@3/sd@0,0
       1. c0t1d0 \*[Lt]IBM-DXHS18Y-0430 cyl 8152 alt 2 hd 20 sec 218\*[Gt]
          /pci@1f,4000/scsi@3/sd@1,0
.No "Specify disk (enter its number):" Ic 1
selecting c0t1d0
[disk formatted]
.No "Disk not labeled.  Label it now?" Ic y

.No "format\*[Gt]" Ic format
Ready to format.  Formatting cannot be interrupted
and takes 114 minutes (estimated). Continue? y
Beginning format. The current time is Sat May 29 22:15:13 2004

Formatting...
done
Verifying media...
        pass 0 - pattern = 0xc6dec6de
   8151/19/208  
        pass 1 - pattern = 0x6db6db6d
   8151/19/208  

Total of 0 defective blocks repaired.
.No "format\*[Gt]" Ic partition
.No "partition\*[Gt]" Ic print
Current partition table (original):
Total disk cylinders available: 8152 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders        Size            Blocks
  0       root    wm       0 -   60      129.86MB    (61/0/0)     265960
  1       swap    wu      61 -  121      129.86MB    (61/0/0)     265960
  2     backup    wu       0 - 8151       16.95GB    (8152/0/0) 35542720
  3 unassigned    wm       0               0         (0/0/0)           0
  4 unassigned    wm       0               0         (0/0/0)           0
  5 unassigned    wm       0               0         (0/0/0)           0
  6        usr    wm     122 - 8151       16.69GB    (8030/0/0) 35010800
  7 unassigned    wm       0               0         (0/0/0)           0

.No "partition\*[Gt]" Ic label
.No "Ready to label disk, continue?" Ic y
.No "partition\*[Gt]" Ic quit
.No "format\*[Gt]" Ic quit
.disp)
.Pp
After your disk has been labeled you need to create file systems on
your slices.
The Solaris 
.Xr newfs 1M
command will create ffs file systems that can be used by
.Nx .
.(disp
.No # Ic "/usr/sbin/newfs /dev/dsk/c0t1d0s0"
.No # Ic "/usr/sbin/newfs /dev/dsk/c0t1d0s6"
.disp)
.
.It
.To 2 "Installing NetBSD Software from Solaris"
.Em "Installing NetBSD Software from Solaris"
.Pp
You should now mount your
.Nx
root and
.Pa /usr
partitions under Solaris so that you can populate the file systems with
.Nx
binaries.
.(disp
.No # Ic "/usr/sbin/mount /dev/dsk/c0t1d0s0 /mnt"
.No # Ic "mkdir /mnt/usr"
.No # Ic "/usr/sbin/mount /dev/dsk/c0t1d0s6 /mnt/usr"
.disp)
.Pp
Now extract the distribution file sets
.(disp
.No # Ic "cd ~/netbsd/binary/sets"
.No # Ic "gunzip *.tar.gz"
.No # Ic "echo ~/netbsd/binary/sets/*.tar | (cd /mnt; xargs -n1 pax -rpe -f )"
.disp)
.Pp
Now you should copy the
.Nx
second stage bootloader into your new root partition and install the 
bootblocks using Solaris's 
.Xr installboot 1M
command.
.(disp
.No # Ic "cp ~/netbsd/installation/misc/ofwboot /mnt"
.No # Ic "/usr/sbin/installboot ~/netbsd/installation/misc/bootblk /dev/rdsk/c0t1d0s0"
.disp)
.
.It
.To 2 "Creating NetBSD Device Nodes under Solaris"
.Em "Creating NetBSD Device Nodes under Solaris"
.Pp
This is not a necessary step.  If your 
.Pa /dev
directory is empty,
.Xr init 8
will create a RAM disk with all of the 
essential device nodes each time the system boots.  If you want to create 
the device nodes on disk, you will need to use the Solaris
.Xr mknod 1M
command.  Look in 
.Pa /dev/MAKEDEV
for the correct names, major and minor numbers, ownership, and 
permissions.
.
.It
.To 2 "Configuring the NetBSD system from Solaris"
.Em "Configuring the NetBSD system from Solaris"
.Pp
To save effort, you may want to use your favorite Solaris editor 
to configure some of the files in 
.Pa /etc
before booting into 
.Nx
the first time.  In particular, you should look at
.Pa /etc/fstab ,
.Pa /etc/rc.conf ,
.Pa /etc/resolv.conf ,
and
.Pa /etc/hosts .
See the section below on
.Sx "Post installation steps"
before
.Sx "Booting NetBSD for the first time" .
.bullet)
.
.Ss Booting NetBSD for the first time
.
.Pp
Now it is time to boot
.Nx
for the first time.
You will boot from your disk using similar syntax as described above in
.Sx "Setting up Open Firmware" 
and
.Sx "Determining how to boot from an SBUS or PCI card" .
To boot from your first disk, type:
.(disp
.No ok Ic "boot disk"
.disp)