random(4) plugin infrastructure for mulitple RNG in a modular fashion

Steve Kargl sgk at troutmask.apl.washington.edu
Thu Aug 8 21:58:40 UTC 2013


On Thu, Aug 08, 2013 at 02:34:49PM -0700, David O'Brien wrote:
> On Wed, Aug 07, 2013 at 12:27:36PM -0700, Steve Kargl wrote:
> > On Wed, Aug 07, 2013 at 11:28:58AM -0700, David O'Brien wrote:
> > > * Make Yarrow an optional kernel component -- enabled by "YARROW_RNG"
> > >   option.  The files sha2.c, hash.c, randomdev_soft.c and yarrow.c
> ..
> > My kernel config files have included the following 2 lines for
> > ages:
> > makeoptions  NO_MODULES
> > device       random
> > 
> > If I try to build a new kernel under your scheme, will the
> > build die with an error about a missing option?
> 
> You haven't given enough information to answer the question.  Your kernel
> config does not have just those two lines.  Is there an "include GENERIC"
> or something else above it?  What is your full kernel config?

No 'include GENERIC'.  See config file after sig.

> 
> > If the answer
> > is 'no', then the yarrow adaptor should be opt-out.
> 
> There is no build issue (i.e., missing symbols).  "device random" in the
> changeset is just the device (/dev/[u]random) implimentation.  The many
> RNG's that provide the output.

The issue is quite simple.  If I do not use modules and only
include 'device random' in my config file, will this result in
a crippled/broken/non-functioning /dev/random?

> Do you really not read UPDATING and the release notes when you upgrade to
> to a .0 release?  How did you learn about other config lines I'm sure
> you've changed over th years.

I never see a .0 release as I only run -current.  I scan UPDATING
when I see a chnage has been made to it via svn-src-all.  I missed
your change to UPDATING because a broken procmail rule filtered
that particular commit.

I note that I don't update my systems every 24 hours.  There is
sometimes a 2 or 3 month lag between a full upgrade, so I may
forget that someone potential change a kernel option or 
broke a kernel facility.  In this case, inveriably 'make buildkernel'
kernel dies a horrible death.

-- 
Steve


cpu		HAMMER
ident		HPC

makeoptions	DEBUG=-g		# Build kernel with gdb(1) debug symbols
makeoptions	NO_MODULES

maxusers	0

options 	SCHED_4BSD		# 4BSD scheduler
options 	PREEMPTION		# Enable kernel thread preemption
options 	INET			# InterNETworking
options 	INET6			# IPv6 communications protocols
options 	SCTP			# Stream Transmission Control Protocol 
options 	FFS			# Berkeley Fast Filesystem
options 	SOFTUPDATES		# Enable FFS soft updates support
options 	UFS_DIRHASH		# Improve performance on big directories
options 	NFSCL			# New Network Filesystem Client
options 	NFSD			# New Network Filesystem Server
options 	MSDOSFS			# MSDOS Filesystem
options 	CD9660			# ISO 9660 Filesystem
options 	PROCFS			# Process filesystem (requires PSEUDOFS)
options		FDESCFS
options 	PSEUDOFS		# Pseudo-filesystem framework
options     COMPAT_LINUX32
options     LINPROCFS
options 	COMPAT_43TTY		# BSD 4.3 TTY compat [KEEP THIS!]
options 	COMPAT_FREEBSD32	# Compatible with i386 binaries
options 	COMPAT_FREEBSD7		# Compatible with i386 binaries
options 	SCSI_DELAY=5000		# Delay (in ms) before probing SCSI
options 	KTRACE			# ktrace(1) support
options 	SYSVSHM			# SYSV-style shared memory
options 	SYSVMSG			# SYSV-style message queues
options 	SYSVSEM			# SYSV-style semaphores
options		P1003_1B_SEMAPHORES
options 	_KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options 	KBD_INSTALL_CDEV	# install a CDEV entry in /dev

# Debugging for use in -current
options 	KDB			# Enable kernel debugger support.
options 	DDB			# Support DDB.
options 	GDB			# Support remote GDB.
#options 	INVARIANTS		# Enable calls of extra sanity checking
#options 	INVARIANT_SUPPORT	# Extra sanity checks of internal structures, required by INVARIANTS
#options 	WITNESS			# Enable checks to detect deadlocks and cycles
#options 	WITNESS_SKIPSPIN	# Don't run witness on spinlocks for speed


# Default partitioning schemes
options 	GEOM_PART_GPT		# GUID Partition Tables.
options 	GEOM_LABEL		    # Provides labelization

# Make an SMP-capable kernel by default
options 	SMP			# Symmetric MultiProcessor Kernel

# Bus support.
device		acpi
device		pci

# Floppy drives
options		FDC_DEBUG
device		fdc

# New CAM ATA and ATAPI devices
device		ata
device		ahci
device 		mvs
device		siis

# SCSI Controllers
device		ahc		# AHA2940 and onboard AIC7xxx devices
options 	AHC_REG_PRETTY_PRINT	# Print register bitfields in debug

# SCSI peripherals
device		scbus		# SCSI bus (required for SCSI)
device		ch		# SCSI media changers
device		da		# Direct Access (disks)
device		sa		# Sequential Access (tape etc)
device		cd		# CD
device		pass		# Passthrough device (direct SCSI access)
device		ses		# SCSI Environmental Services (and SAF-TE)

# atkbdc0 controls both the keyboard and the PS/2 mouse
device		atkbdc		# AT keyboard controller
device		atkbd		# AT keyboard
#device		psm		# PS/2 mouse
device		kbdmux		# keyboard multiplexer
device		vga		# VGA video card driver
device		splash		# Splash screen and screen saver support

# syscons is the default console driver, resembling an SCO console
device		sc
device		agp		# support several AGP chipsets
device      drm             # DRM core module required by DRM drivers
device      mach64drm       # ATI Rage Pro, Rage Mobility P/M, Rage XL

# Serial (COM) ports
device		uart		# 8250, 16[45]50 based serial ports

# Parallel port
device		ppc
device		ppbus		# Parallel port bus (required)
device		lpt		# Printer
device		ppi		# Parallel port interface device

# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device		miibus		# MII bus support
device		bge		# Broadcom BCM570xx Gigabit Ethernet
device      fxp

# Pseudo devices.
device		loop		# Network loopback
device		random		# Entropy device
device		ether		# Ethernet support
device		tun		# Packet tunnel.
device		pty		# Pseudo-ttys (telnet etc)
device		md		# Memory "disks"
device		gif		# IPv6 and IPv4 tunneling
device		faith		# IPv6-to-IPv4 relaying (translation)
device		firmware	# firmware assist module

# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that 'bpf' is required for DHCP.
device		bpf		# Berkeley packet filter

# USB support
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		uhid		# "Human Interface Devices"
device		ukbd		# Keyboard
device		umass		# Disks/Mass storage - Requires scbus and da
device		ums		# Mouse


options 	MAXDSIZ=(8UL*1024UL*1024*1024)
options 	MAXSSIZ=(1024UL*1024*1024)
options 	DFLDSIZ=(1024UL*1024*1024)

# This allows you to actually store this configuration file into
# the kernel binary itself, where it may be later read by saying:
#    strings -n 3 /boot/kernel/kernel | sed -n 's/^___//p' > MYKERNEL
#
options 	INCLUDE_CONFIG_FILE     # Include this file in kernel
#
# Don't enter the debugger for a panic. Intended for unattended operation
# where you may want to enter the debugger from the console, but still want
# the machine to recover from a panic.
#
options 	KDB_UNATTENDED


# Size of the kernel message buffer.  Should be N * pagesize.
options 	MSGBUF_SIZE=81920
device		blank_saver

options 	MAXCONS=8		# number of virtual consoles

device		amdtemp		# Temperature sensors.

device		smbus		# Bus support, required for smb below.
device		amdsmb
device		smb
#
device		iicbus		# Bus support, required for ic/iic/iicsmb below.
device		iicbb
device		ic
device		iic
device		iicsmb		# smb over i2c bridge

device		hwpmc			# Driver (also a loadable module)
options 	HWPMC_HOOKS		# Other necessary kernel hooks


More information about the freebsd-arch mailing list