Pages

Showing posts with label FreeBSD. Show all posts
Showing posts with label FreeBSD. Show all posts

Wednesday, September 13, 2017

x86 boot proces FreeBSD


Mozna bude jednodussi, kdyz, co mozna strucne, popisu jak takovy boot vlastne vypada. Pro jednoduchost se budu venovat pouze klasickemu BIOSu a nikoliv UEFI firmware.

1. BIOS nainicializuje zakladni desku s prislusenstvim a pristoupi k bootovani operacniho systemu - z jakeho zarizeni se pokusi system nabootovat je zalezitosti konfigurace BIOSu. Pro jednoduchost budeme vybranemu bootovacimu zarizeni rikat systemovy disk.

2. BIOS precte obsah prvniho sektoru systemoveho disku, okontroluje, ze na pozicich 510 a 511 jsou hodnoty 55h a AAh (takzvana "boot signature", znamka toho, ze obsah sektoru je platny), placne ho do pameti a preda rizeni programovemu kodu na zacatku sektoru. A co se bude dit dal je uz zalezitosti toho kodu.

Uz jen FreeBSD dava na vyber dve varianty co do tohoto sektoru dat. "Klasicky" a FreeBSD interaktivni. V trifazovem bootovani, ktere je pro FreeBSD typicke, je toto faze 1.

3a. klasicky kod prohrabe partition table, ktera je v tom sektoru taky, najde prvni aktivni partition, z ni precte precte prvni sektor, okontroluje, ze je platny, flakne ho do pameti a preda mu rizeni

3b. Interaktivni, z partition table a dalsich kofniguracnich informaci, ktere ma v sektoru ulozene vytvori "seznam kandidatu", necha z nich uzivatele vybrat (to je ten Fn... prompt), z vybraneho oddilu precte precte prvni sektor, okontroluje, ze je platny, flakne ho do pameti a preda mu rizeni.

Pokud se systemovy disk jmenuje ada0, pak jednotlive partition jsou s1..s4 a mluvime tedy o precteni prvniho sektoru z, napriklad, ada0s1

4. V pripade, ze partition vybrana (v 3a nebo 3b) je FreeBSD, pak ma na zacatku BSDLABEL - a jeji soucasti je znovu kod, ktery se po jeho umisteni do pameti spusti udela velmi podobnou vec co kod z MBR. Kod tabulku, ktera oddil dale deli (oddily oznacene pismenky - a,b,c,d,...) a vybere, ktera z nich bude bootovaci. Tady se na zadne "active" nehraje, tenhle kod si "konfiguraci" precte v souboru /boot.config, krome toho je interaktivni (FreeBSD/x86 boot) takze ho muze ovlivnit i uzivatel. Vysledkem rozhodovaciho procesu je "co a odkud natahnout dal".

To o cem ted mluvim je "faze 2".

Natahnout se da ledacos z ledakdes, obvykle to ale je /boot/loader z oddllu 'a'. A pote co se natahne mu je predano rizeni. Tim vstupujeme do faze 3.

5. Loader za pouziti informaci v /boot/loader.conf a pripadne take dalsich vcetne interaktivniho vstupu uzivatele (menu a/nebo prompt) rozhodne co natahne a odkud. Typicky /boot/kernel/kernel - ten se natahne a preda se mu rizeni, cimz je okonceno zavadeni systemu a zacina jeho vlastni beh.

Dobu kdy bezel kod 'loader' hovorime o fazi 3.

No a to je ze zakladu vsechno. Ano, da se to komplikovat - napriklad vynechavat faze (fyzicky disk muze rovnou zacinat BSDLabel a nemit vubec zadnou MBR a navic nemusi natahnout /boot/loader ale klidne rovnou /boot/kernel/kernel) ale ja myslim, ze to je komlikovay dost i bez toho ;-)

Ted bys uz mel tusit jak se v jednotlivych fazich vybira "kudy dal" a jak teda dosahnout toho, co potrebujes.

Thursday, October 23, 2014

USB serial adapter in FreeBSD

Last modified: Jun. 13, 2009

Contents
1 - Summary
2 - Kernel options
3 - Plug in USB serial adapter
4 - Connect to router


1 - Summary

This guide explains how to use a USB serial adapter in FreeBSD. It also
explains how to connect to a device like a router over a serial connection.
As an example we will connect to a Cisco router. This has been tested in
FreeBSD 7.0 and 7.1.


2 - Kernel options

You will need to have the following options in your kernel.
  device          uhci                    # UHCI PCI->USB interface
  device          ohci                    # OHCI PCI->USB interface
  device          ehci                    # EHCI PCI->USB interface (USB 2.0)
  device          usb                     # USB Bus (required)
  device          ugen                    # Generic
  device          ucom                    # USB serial support
  device          uplcom                  # USB support for Prolific PL-2303 serial adapters
If you didn't already have them in your kernel you will need to reboot before
using the USB serial adapter.


3 - Plug in USB serial adapter

Log in with a normal user account. Plug in the USB serial adapter into the
computer and check to make sure it was detected properly.
# dmesg | tail -n 1
ucom0: Prolific Technology Inc. USB-Serial Controller, class 0/0, rev 1.10/3.00,
addr 2 on uhub0

Find what the actual device is listed as.
# ls -l /dev/cuaU*
crw-rw----  1 uucp  dialer    0, 116 Mar  2 18:54 /dev/cuaU0
crw-rw----  1 uucp  dialer    0, 117 Mar  2 18:54 /dev/cuaU0.init
crw-rw----  1 uucp  dialer    0, 118 Mar  2 18:54 /dev/cuaU0.lock
In our example it's listed as /dev/cuaU0.


4 - Connect to router

Connect a serial cable from the USB serial adapter to the console port on
the back of the Cisco router. Type the following and press [Enter] to connect.
# sudo cu -l /dev/cuaU0 -s 9600
Connected

User Access Verification

Username: xxx
Password: xxx
Welcome to router.test.com!
router>

When you are done type exit.

router>exit

router con0 is now available
Press RETURN to get started.

Type '~.' to exit. Press 'Shift+~' then period.

~
[EOT]