The patentr R package allows easy access to USPTO (United States Patent and Trademark Office) bulk patent data in tidy, rectangular format. By downloading, converting, and storing patent data directly from the USPTO website, patentr minimizes the work needed to acquire usable data, allowing users to focus on analyzing the data.
To install patentr, run the following R code:
# install from CRAN install.packages("patentr") # install development version from GitHub devtools::install_github("JYProjs/patentr")
Bulk patent data can be downloaded using the year and week (within each year) as follows:
# load patentr library("patentr") # download patents from the first week of 1976 patent_data1 <- get_bulk_patent_data(year = 1976, week = 1) # download patents from: # 1. week 1 of 1976 (TXT format in USPTO) # 2. week 48 of 2002 (XML format 1 in USPTO) # 3. week 19 of 2006 (XML format 2 in USPTO) # N.B. it will take a few minutes to run the next line patent_data2 <- get_bulk_patent_data(year = c(1976, 2002, 2006), week = c(1, 48, 19))
To contribute to patentr, you can create issues for any bugs/suggestions on the issues page. You can also fork the patentr repository and create pull requests to add features you think will be useful for users.
Wadhwa RR, Yu J, Erdi P. patentr: Access USPTO Bulk Data in Tidy Rectangular Format. 2021; R package version 0.1.0. URL https://github.com/JYProjs/patentr.


Welcome
About
DéboraBabo.
Works
Get in touch
Débora Babo
a
front-end
developer
an aeronautical
engineer
your next
best
friend!
About Me
Selected Works
.01
Pricing Panel
.02
Drum Kit
.03
Bikcraft
Contact


{% extends 'base_error.html' %} {% block content %}
You've been logged out — this could be because of a site update or an expired cookie.
This may also happen if you're trying to view a private item.
Click here to return to the home page and log in again.
{% endblock %}


Options Interface
The Options object allows accessing the arguments which have been passed to the current isolate.
Default class
Implemented by
Constructors
Code new Options() #
A newly constructed Options object contains the arguments exactly as they have been passed to the isolate.
Options();
Methods
Code List get arguments() #
Returns a list of arguments that have been passed to this isolate. Any modifications to the list will be contained to the options object owning this list.
If the execution environment does not support arguments an empty list is returned.
List<String> get arguments();
Code String get executable() #
Returns the path of the executable used to run the script in this isolate.
If the execution environment does not support executable an empty string is returned.
String get executable();


This page allows you to change some global system settings.
Save settings on exit
Selecting this option forces all the current global settings to be saved when HexEdit Pro is closed. Other less obvious things are also saved like the most recent positions of toolbars and modeless dialogs. A simpler way to customize your options is to set them how you want them and then use the Save settings now button (see below).
Save settings now
Clicking this button forces all the current options to be saved immediately (even if the Save settings on exit option is not selected).
Add “Open with HexEdit Pro” to Shell shortcut menus
This allows any file to be opened with HexEdit Pro using the shell shortcut menus which you see when you right-click on a file in Windows Explorer. The menu item says “Open with HexEditPro”. When you click this menu item the file is opened in HexEdit Pro.
Note that this option causes problems for some ill-behaved program launchers such as the Office 97 shortcut bar. If you use these then you will have to disable this option in HexEdit Pro.
Restore all "Not Shown" Warning and Information Messages
Selecting this makes all "Not Shown" message boxes (where you have selected the checkbox that says either Do not show this message again or Don't ask this question again) to be shown again.
Quite often HexEdit Pro will show message boxes containing a warning message or asking a simple question. Many of these message boxes can appear often and you may become sick of seeing them so they include a checkbox to prevent them from appearing thenceforth. Once you have turned off the warning or question you will never see it again except by using this button.
Only permit one instance of HexEdit Pro to run
If you run HexEdit Pro but it is already running then the new instance does not run, rather the original instance is brought to the front. Any files specified on the command line or via the shell are added to the files already open in the original instance.
Restore main window position
The main HexEdit Pro window is restored to its position when you last ran the program. For this option to have any effect the settings must be saved (see the Save settings options above) since it is only effective when the HexEdit Pro starts up.
Background Scan for Devices
When on HexEdit Pro scans for hardware devices in a low-priority background thread just after startup. This allows the "Open Special" dialog to open much more quickly.
Check for Updates
About once a month when HexEdit Pro starts, it checks the web site to see if a later version is available.
Show Splash Screen
Turn this option off if you don't want to see the splash screen when HexEdit Pro starts.
Show Tip of the Day
Turn this option off if you don't want to see the "tip of the day" when HexEdit Pro starts.
Run AutoExec Macro
If you create a keystroke macro and save it with the name "AutoExec.HEM" then it is run whenever you start HexEdit Pro. If there is a problem with the macro you can prevent it running using this option.
History List Options
Clicking this button conveniently takes you to the History Lists page. (The History options were on this page in previous versions.)


{% block head %}
{% block title %}{% endblock %} Home
{% endblock %}
Geethika Lingamaneni :<PHONE_NUMBER>
ques 7:
Country code
ques 8:
Range of years: Starting from
to
ques 9:
Percentage range: From
to
ques 10:
WITHOUT CACHE:
Range of years: Starting from
to
Number of times to run without cache:
Percentage range: From
to
Number of times to run without cache:
ques 11:
WITH CACHE:
Range of years: Starting from
to
Number of times to run with cache:
Percentage range: From
to
Number of times to run with cache:


How to Setup an Alternate CM Workflow when Constrained to Use Subversion
Background: I recently started work at a company that uses subversion for configuration management. It has been well over 5 years since I last used the tool, and I have no fond memories of it. I wanted to find a workaround that would allow me to work with git locally and then commit changes to the remote server when I was satisfied that my changes and supporting tests were ready for review. I’m not going to get in to centralized vs. decentralized CM strategies here; the purpose of this post is just to present the workflow I came across and how I verified that it works.
All materials for reproducing the steps I discuss below can be downloaded from here.
Software Prerequisites:
- Ubuntu 16.04/18.04 - you can probably run with Windows 10 + Docker Desktop but I have not verified
- a zip client - to extract the archive
- docker - I run with –network=host option enabled!
- git
- git-svn
- subversion
In the shell snippets I show below, host
means you should run your command on your host machine and container
means you should run the command inside of the running docker container that hosts the running subversion server.
Setting up the Mock Environment
Build and Run the Mock Server
Before getting into the workflow, I wanted to create a subversion server that would allow me to setup some dummy subverion repositories to play around with. If you, the reader, have read some of my previous blog posts, you’d now that I am a big Docker advocate, so I found a repo that could serve as a starting point for setting up a subversion server with a Docker container. My apologies to the original author of the repo; I could not find the original repo that I cloned the Dockerfile and supporting files from before making my minor modifications. If you know who the author is, let me know and I will attribute the original work to you. The basic steps for building an image from the Dockerfile, and launching a container based on that image, provided in the link above are:
(host)$ cd {path-to-extracted-zip-contents}
(host)$ ./cd svn-test/svn-server
(host)$ ./build-docker.sh {username} {password} # provide desired username and password as command line args
(host)$ ./run-docker.sh
Setting Up the Mock Repositories
Server-Side
Remember, I am approaching this post from the perspective of my particular problem: working with existing subversion repos. So, to test candidate workflows, I need representative repositories. We can create one or more such repositories by executing the three steps below:
(host)$ docker exec -it svn-server-c /bin/bash # STEP 1: attach terminal to svn-server-c
(container)$ svnadmin create /home/svn/{project-name} # STEP 2: create new repo using svnadmin
(container)$ chown -R www-data:subversion /home/svn/{project-name} # STEP 3: change permissions so user={svn-username} can push/pull from svn server
(container)$ chmod -R g+rws /home/svn/{project-name} # STEP 3: (continued)
So far, only empty repositories have been created; they don’t even have the standard branches/tags/trunk
layout common in subversion repos.
Client-Side
To create a repo with the standard branches/tags/trunk
layout:
(host)$ svn co --user {username} http://localhost/svn/{project-name} # STEP 1: checkout repo (you will be prompted for username's password)
(host)$ cd {project-name} && mkdir branches tags trunk # STEP 2: create branches tags trunks
(host)$ svn add branches tags trunk && svn ci -m "adding standard layout" # STEP 3: add and commit local changes to the server
Should you desire, you can also checkout trunk, add files, and create branches using the normal subversion commands, like checkout
, checkin
, copy
, etc… I chose not to, but feel free to do so. I just wanted the standard layout for integration with git-svn
.
Simplifying CM with git-svn
We are now ready to move on to the real objective of this post: working locally with subversion repositories without using subversion! What I am trying to achieve is the following:
- I want bi-directional communication; e.g. push and pull capability between my local working copy and the remote subversion server
- I want to be able to work locally with git to get all of its niceties:
squash
,rebase
,cherry-pick
, etc… - The workflow should make it simple to keep my working copies up-to-date with the remote
Since this is intended to be a how-to post at its core, I’m going to show what solutions I found for achieving the following with git-svn
and git
with the above criteria in mind. Specifically, I will show how to do the following:
- Clone an existing subversion repo
- Create a branch globally with subversion and track it locally with git
- Merge branches
- Ignore files
Note: all commands from now on are to be run on your host machine, not inside the container!
Clone Existing Subversion Repo
$ cd {desired-project-parent-dir} # e.g. one level above where you want to clone the code to locally
$ git svn clone http://localhost/svn/{repo-name} {repo-name} -s # the command is "git svn" NOT "git-svn"!
s
is for standard layout; e.g. branches/tags/trunk
This sets up a git-like local repo to work with. Quite handy!
Create and Track a Branch
$ cd {local-repo-root-dir} # make sure that you clone the repo into {local-repo-root-dir} first!
$ git svn branch -m "{your-branch-create-message-here}" {name-of-branch} # create the branch on the remote server; complete with commit message
$ #git branch -a # list remote branches that git knows about. THIS COMMAND IS VERY USEFUL
$ git svn fetch {name-of-branch} # fetch newly-made branch. Exclusion of {name-of-branch} fetches everything: all branches/tags/trunk, so use cautiously. This step sets up {name-of-branch} as the remote branch for git to track
$ git checkout -b {name-of-branch}-local remotes/origin/{name-of-branch} # This step creates a local working branch. Note: adding `-local` removes git warning about ambiguity.
$ ... (do bunch of stuff locally, use git workflow to manage CM (squash/rebase/merge/etc...).
$ git svn dcommit # commits to branch, updates the revision count (only once)
Merge branches
This includes merging from a branch into trunk. See this post’s accepted answer.
$ git checkout {to-branch} # if you have not created a local copy, use the "-b" flag with checkout here
$ git reset --hard {remote-to-to-branch} # e.g. remotes/origin/trunk. This sets up your local copy to match the remote AND to track the remote branch!
$ git merge --no-ff {remote-to-from-branch} # merge from "from" remote. The "--no-ff" option is important; see post answer, brings up editor with a default merge message
$ git svn rebase {remote-to-to-branch} # rebase is apparently required, but shouldn't change anything here
$ git svn dcommit # commits to branch, updates the revision count (only once)
Ignore Files
For now, just add a .gitignore
file before doing local git workflow stuff. Do git svn dcommit
after satisfied with local git changes. Things you want to ignore won’t be committed to git and not committed to subversion either.
There’s probably a more elegant solution, but this meets my need.
Wrap-Up
Hopefully, I’ve presented you with some new information that, should you choose, will empower you to confidently use git with legacy subversion repos! If you think of anything that could be modified or added to improve this post, I am receptive; let me know what you think in the comments. In conclusion, here are some links I distilled into aspects of this post:
- git-svn from git docs
- sample tutorial
- getting started with git-svn
- git-svn cheatsheet
- sample workflow
Hopefully, some of you out there will find this useful. Thanks for reading!


Get to know us and you will love us forever!


Email
Username
Password
Confirm Password
Full Name
Phone
Address
User Type
Customer
Restaurant Representative
Password does not match
Register


execline Software skarnet.org
export sets an environment variable to a given value, then executes a program.
export var value prog...
export sets the var environment variable to the string value, then execs into prog with its arguments.


Table of Contents
These notes are to try and compile kernel optimization options.
Why go to the trouble of documenting something that is already documented well ? I just needed to have a table listing of what options may be there to make it easier for me to remove those 'bits' from the kernel that I do not need in my configuration.
Would you like to build your own custom kernel ? Documentation on that is in the FAQ, config(8), and options(4) if that isn't helping you then hopefully the section at the end of these docs may help you further.
Some of this information is extracted from the FreeBSD documentation.
As they say, ignore these warnings at your own peril (especially since the warnings are from the developers themselves.)
From the FAQ 5.0 Kernel Configuration:
Under most circumstances you will NOT need to compile your own kernel. The GENERIC kernel will usually be all that you need. In fact, there are several reasons why you do not want to create your own kernel. The main reason is that it is very easy to make changes to the kernel configuration which look logical, but do not work. This is your danger sign. If something does not appear to work properly, please try the GENERIC kernel before sending in a bug report.
5.2 - Kernel Configuration Options
...
Not all kernel options have been tested for compatibility
with all other options. Don't put an option in your kernel unless you actually
have a reason to do so! The one kernel configuration which gets the most testing
is the GENERIC kernel. This is usually a combination of the options in /usr/src/sys/arch/<your
arch>/conf/GENERIC and /usr/src/sys/conf/GENERIC.
Look closely at these files and you will notice a line like:
include "../../../conf/GENERIC"
This means that it is referencing yet another configuration file. This file
stores non arch-dependent options. So when creating your Kernel Config be sure
to look through /sys/conf/GENERIC and see what you want. There ARE options
in there that are NEEDED.
...
It is always helpful to be able to debug problems with the kernel. But many choose not to put these options in their kernel because these options add considerable size to the kernel. They are however extremely helpful in a case where a bug might be present. This well help the developers discover the source of your problems much quicker.
Thanks to Marc Espie for this additional Warning, Reference Information
it's highly recommended to use the default GENERIC kernel as
a rule.
We try very hard to make it work and be efficient everywhere. Several
reasons:
Imagine you're doing a bug-report. If you are using the GENERIC kernel,
it's much more likely that developers will take the time to look at your
report. Speaking from experience, bugs in `custom kernels' can be very
hard to track down... for instance, as a developer, you don't always have
the right combination of hardware to have that kernel running. So you often
need to tweak that custom kernel further... so that often, the resulting
kernel no longer has the bug. What happens in such a case is that a busy
developer will shelve the bug-report until he has time to track it further,
and concentrate instead on something reproduceable...
[ref: afterboot(8), config(8), options(4), boot_config(8),
OpenBSD FAQ: Kernel Configuration]
[ref: CD1:src.tar.gz]
The options for the kernel are pretty well documented in the FAQ and man pages. And the most current information are more likely to be found in those man pages, and source code than anywhere else.
Following Marc Espie's recommendation above, take a serious look at boot_config(8) if that will resolve your problems without the need to configure a custom kernel.
I needed to make some modifications to my kernel to optimize OpenBSD for using Samba to share files on the network. A simplified process to configuring a kernel is listed below. This step-by-step is covered well in the FAQ, including how to compile the kernel if you dont have space to extract the complete source onto your hard-disk.
After decompressing the OpenBSD source tree onto your hard-disk (/usr/src), do the following:
# cd /usr/src/sys/arch/$ARCH/conf
This moves us into the custom configurations for your hardware architecture. Doing a listing in this directory will give you a sample of machine configurations. On my I386 architecture an (/usr/src/sys/arch/i386/conf) ls will indicate
# ls -al
| CVS | GANDALF | LUCIFIER | OPRAH | RAMDISKB | SARUMAN | |
| DISKLESS | GENERIC | Makefile.i386 | PETRA | RAMDISKC | WALDORF | |
| ELBERETH | HERMES | NETTAN | RAMDISK | RAMDISK_CD |
Make a copy of the Generic kernel configuration. Remember that this is the most tested configuration, so lets not stray too far from 'working' configuration.
# cp GENERIC MYCUSTOMKERNEL
We can now edit the configuration file MYCUSTOMKERNEL to add the directive for increasing NMBCLUSTERS (something I need to do.)
Note that the name you give your file will also be the name given to the Kernel. Although it seems that traditionally kernel names are in ALL CAPITAL LETTERS it seems to work fine with a mix of letter cases.
Edit: /usr/src/arch/$ARCH/conf/MYCUSTOMKERNEL to include:
option "NMBCLUSTERS=8192"
We make the necessary changes to the GENERIC kernel into our proposed custom kernel configuration. After you have saved the above modifications we can now configure the kernel compilation, and make the kernel.
# config MYCUSTOMKERNEL
Don't forget to run "make depend"
# cd ../compile/MYCUSTOMKERNEL
# make depend && make
This uses the "config" program to validate your custom kernel configuration and create directories and files required to perform a compilation on the custom kernel. After the "config" (there should be no errors since we made a very minor modification) we run a make to create our new bsd kernel file "bsd."
To use the kernel copy the kernel to the root directory and make it available during boot time.
cp /bsd /bsd.generic
cp /usr/arch/$ARCH/compile/MYCUSTOMKERNEL/bsd /bsd.nmb
We first make a backup of the existing/generic kernel (the docs says that most use a sequence like bsd.1 bsd.2 and I'm only using named kernels above as a demonstration.)
Next I copy the customised kernel into the root partition so boot can find it. In our experimental case I do not make it the default kernel and I name it bsd.nmb to indicate what was changed as opposed to the working kernel bsd.generic.
When you restart your server and get to the boot prompt, we can specify the new kernel we wish to try.
Using Drive: 0 Partition: 3
reading boot....
probing: pc0 com0 com1 apm mem[639K 95M a20=on]
disk: fd0 hd0
>> OpenBSD/i386 BOOT 1.26
boot > bsd.nmb <-- type in the kernel you want to 'boot'
The boot messages will scroll through your screen and you get to the login prompt. After login in you should see a display of your new kernel.
Last login: (date) from (ip-address)
OpenBSD 2.8 (MYCUSTOMKERNEL) #1: (date-of-compilation)
Welcome to OpenBSD: The proactively secure Unix-like operating system.
If you find the new kernel behaves as expected, without causing other problems on your system, then you can copy the new kernel over the default boot kernel.
cp /bsd.nmb /bsd
Please take the time to read the FAQ and afterboot(8) man pages before you continue.
The list below is by categories commonly found in documentation:
| Directive | Purpose | Ref: |
| machine i386 | At least one of these directives is required to specify the target system of the kernel. | /usr/src/sys/arch/$ARCH/conf/[sample-files] |
| machine atari m68k | ||
| machine amiga m68k | ||
| ... |
Not all available architecture directives are listed above, just an example of what to look for when specifying the configuration for your machine. On the i386 class configurations I've played with, the machine option is specified in the Kernel configuration file. On other systems such as the atari or amiga, the machine configuration is specified as part of the "included" files.
Example use on a Macintosh (mac68k/conf/GENERIC)
machine mac68k m68k
| Option | Purpose | Ref: |
| At least one is required | ||
| I386_CPU | Intel i386 Processor | FreeBSD Handbook and emails from readers |
| I486_CPU | Intel i486 Processor (AMD K5) | |
| I586_CPU | Intel Pentium Processor (AMD K6, K6-2) | |
| I686_CPU | Intel Pentium Pro / Pentium II | |
| GPL_MATH_EMULATE | Software Math Co-processor emulation using GNU Library. Should not be necessary on CPUs with internal math co-processor (eg. 486DX and higher) |
The i386 Generic Kernel includes all CPUs to support starting up on any of the above CPUs, for optimal code it would be presumably best to use the CPU directive that best fits your configuration.
Warning: Please review the June 2001<EMAIL_ADDRESS>mailing list archives which discusses some Kernel problems with omitting too many of the CPU directives. Remember, most of the testing has been with all directives ON, your mileage with taking some of the directives out may be very different.
| Option | Purpose |
| COMPAT_SVR4 | On those architectures that support it, this enables binary compatibility with AT&T System V.4 UNIX binaries built for the same architecture. This currently includes the sparc and i386. Possibly the most widely known operating system based on this binary architecture is Sun's Solaris 2.x. See compat_svr4(8). |
| COMPAT_BSDOS | On those architectures that support it, this enables binary compatibility with BSD/OS applications. This option is supported on the i386 architecture. See compat_bsdos(8). Requires option COMPAT_43 also be used for proper operation. |
| COMPAT_LINUX | On those architectures that support it, this enables binary compatibility with Linux ELF and a.out applications built for the same architecture. This option is supported on the i386 architecture. See compat_linux(8). |
| COMPAT_SUNOS | On those architectures that support it, this enables binary compatibility with SunOS 4.x applications built for the same architecture. This option is supported on the sparc and most m68k platforms. See compat_sunos(8). |
| COMPAT_ULTRIX | On those architectures that support it, this enables binary compatibility with Ultrix applications built for the same architecture. This option is available on the little-endian MIPS platforms like the pmax and arc. See compat_ultrix(8). |
| COMPAT_FREEBSD | On those architectures that support it, this enables binary compatibility with FreeBSD applications built for the same architecture. This option is available on the i386 architecture. See compat_freebsd(8). |
| COMPAT_HPUX | On those architectures that support it, this enables binary compatibility with HP/UX applications built for the same architecture. This option is available on some m68k architectures. See compat_hpux(8). |
| COMPAT_IBCS2 | On those architectures that support it, this enables binary compatibility with iBCS2 applications built for the same architecture. This option is available on the i386 architecture. See compat_ibcs2(8). |
| COMPAT_OSF1 | On those architectures that support it, this enables binary compatibility with Digital UNIX (formerly OSF/1) applications built for the same architecture. This option is available on the alpha architecture. See compat_osf1(8). |
| COMPAT_NOMID | Enable compatibility with a.out executables that lack a machine ID. On the i386, this includes NetBSD 0.8's ZMAGIC format, 386BSD and BSDI's QMAGIC, NMAGIC, and OMAGIC a.out formats. On the hp300 and other m68k architectures this permits certain old 4.3BSD binaries to work, though its use is discouraged now. |
| COMPAT_43 | Use of this option is discouraged. It enables compatibility with 4.3BSD. It adds an old syscall for lseek() as well as ioctls for TIOCGETP and TIOCSETP. The return values for the getpid(2), getgid(2), and getuid(2) system calls are modified as well, to return the parent's PID and UID as well as the current process's. It also enables the deprecated NTTYDISC terminal line discipline. It provides backwards compatibility with the "old" SIOC[GS]IF{ADDR,DSTADDR,BRDADDR,NETMASK} interface ioctls, including binary compatibility for code written before the introduction of the sa_len field in sockaddrs. It also enables support for some older pre BSD 4.4 socket calls. |
| COMPAT_09 | NetBSD 0.9. On those architectures that support it, this enables binary compatibility with NetBSD 0.9 applications built for the same architecture. (needs verification) |
| COMPAT_10 | NetBSD 1.0, On those architectures that support it, this enables binary compatibility with NetBSD 1.0 applications built for the same architecture. (needs verification) |
| COMPAT_11 | NetBSD 1.1, On those architectures that support it, this enables binary compatibility with NetBSD 1.1 applications built for the same architecture. (needs verification) |
Example Use on arch/sun3/conf/DISKLESS
#option TCP_COMPAT_42 # TCP bug compatibility with 4.2BSD option COMPAT_SUNOS # can run SunOS 4.1.1 executables option COMPAT_43 # and 4.3BSD and ... option COMPAT_10 # NetBSD 1.0 option COMPAT_11 # NetBSD 1.1 option COMPAT_12 # NetBSD 1.2
| Option | Purpose |
| DDB | Compiles in a kernel debugger for diagnosing kernel problems. See ddb(4) for details. Note: not available on all architectures. |
| DDB_SAFE_CONSOLE | Allows a break into the kernel debugger during boot. Useful when debugging problems that can cause init(8) to fail. |
| KGDB | Compiles in a remote kernel debugger stub for diagnosing kernel problems using the "remote target" feature of gdb. See gdb(1) for details. Note: not available on all architectures. |
| makeoptions DEBUG="-g" | The -g flag causes bsd.gdb to be built in addition to bsd. bsd.gdb is useful for debugging kernel crash dumps with gdb. Note that gdb's -k flag is obsolete and should not be used. Instead, the kernel can be debugged by starting gdb with the kernel name as an argument (no core file) and then use the gdb command "target kcore COREFILE". |
| DEBUG | Turns on miscellaneous kernel debugging. Since options are turned into preprocessor defines (see above), option DEBUG is equivalent to doing a #define DEBUG throughout the kernel. Much of the kernel has #ifdef DEBUG conditional debugging code. Note that many parts of the kernel (typically device drivers) include their own #ifdef XXX_DEBUG conditionals instead. This option also turns on certain other options, notably option KMEMSTATS, which may decrease system performance. |
| DIAGNOSTIC | Adds code to the kernel that does internal consistency checks. This code will cause the kernel to panic if corruption of internal data structures is detected. |
| GPROF | Adds code to the kernel for kernel profiling with kgmon(8). |
| makeoptions PROF="-pg" | The -pg flag causes the kernel to be compiled with support for profiling. The option GPROF is required for the kernel compile to succeed. |
| KTRACE | Adds hooks for the system call tracing facility, which allows users to watch the system call invocation behavior of processes. See ktrace(1) for details. |
Example Use:
mvme88k/conf/M197: option DDB # Kernel debugger sun3/conf/SMD_TEST: option PMAP_DEBUG mvme88k/conf/XT: #option DEBUG # Add debugging statements mvme88k/conf/XT: #option SYSCALL_DEBUG # debug all syscalls.
As can be seen from the above examples, there are more DEBUG options available for the kernel configuration that may be dependent on the hardware-platform. For more information please browse through the samle kernel configurations for your hardware-platform and potentially the #ifdef's in the source codes for your hardware-platform.
These options specify which file systems the kernel will support. You must include at least support for the device you boot from. A custom kernel can be smaller if you do not include support for those File Systems you are certain you will not be using.
| Option | Purpose |
| FFS | Berkeley Fast File System (FFS). Most machines need this if they are not running diskless. |
| EXT2FS | Second Extended File System (EXT2FS). This is the most commonly used file system on the Linux operating system, and is provided here for compatibility. Some specific features of EXT2FS like the "behavior on errors" are not implemented. This file system can't be used with uid_t or gid_t values greater than 65535. Also, the filesystem will not function correctly on architectures with differing byte-orders. That is, a big-endian machine will not be able to read an ext2fs filesystem created on an i386 or other little-endian machine. See mount_ext2fs(8) for details. |
| MFS | memory file system (MFS). This file system stores files in swappable memory, and produces notable performance improvements when it is used as the file store for /tmp or similar mount points. See mount_mfs(8) for details. |
| NFSCLIENT | client side of the NFS (Network File System) remote file sharing protocol. Although the bulk of the code implementing NFS is kernel based, several user level daemons are needed for it to work. See mount_nfs(8) for details on NFS. |
| CD9660 | ISO 9660 + Rock Ridge file system, which is the standard file system used on many CD-ROMs. It also supports Joliet extensions. See mount_cd9660(8) for details. |
| MSDOSFS | MS-DOS FAT file system. The kernel also implements the Windows 95 extensions which permit the use of longer, mixedcase file names. See mount_msdos(8) and fsck_msdos(8) for details. |
| FDESC | A file system which can be mounted on /dev/fd. This filesystem permits access to the per-process file descriptor space via special files in the file system. See mount_fdesc(8) for details. Note that this facility is redundant, and thus unneeded on most OpenBSD systems, since the fd(4) pseudodevice driver already provides identical functionality. On most systems, instances of fd(4) are mknoded under /dev/fd/ and on /dev/stdin, /dev/stdout, and /dev/stderr. |
| KERNFS | A special file system (normally mounted on /kern) in which files representing various kernel variables and parameters may be found. See mount_kernfs(8) for details. |
| NULLFS | A loopback file system. This permits portions of the file hierarchy to be re-mounted in other places. The code really exists to provide an example of a stackable file system layer. See mount_null(8) for details. |
| PORTAL | Experimental portal filesystem. This permits interesting tricks like opening TCP sockets by opening files in the file system. The portal file system is conventionally mounted on /p and is partially implemented by a special daemon. See mount_portal(8) for details. |
| PROCFS | A special file system (conventionally mounted on /proc) in which the process space becomes visible in the file system. Among other things, the memory spaces of processes running on the system are visible as files, and signals may be sent to processes by writing to ctl files in the procfs namespace. See mount_procfs(8) for details. |
| UMAPFS | A loopback file system in which user and group IDs may be remapped this can be useful when mounting alien file systems with different uids and gids than the local system (eg, remote NFS). See mount_umap(8) for details. |
| UNION | Union file system, which permits directories to be mounted on top of each other in such a way that both file systems remain visible this permits tricks like allowing writing (and the deleting of files) on a read-only file system like a CD-ROM by mounting a local writable file system on top of the read-only file system. This filesystem is still experimental and is known to be somewhat unstable. See mount_union(8) for details. |
Example Use on /arch/sparc/conf/SUN4C:
option FFS option NFSSERVER # Sun NFS-compatible filesystem option NFSCLIENT # Sun NFS-compatible filesystem option KERNFS # kernel data-structure filesystem option FIFO # POSIX fifo support (in all filesystems) option QUOTA # fast filesystem with user and group quotas option MFS # memory-based filesystem option LOFS # Loop-back filesystem option FDESC # user file descriptor filesystem option NULLFS # null fs, required by umapfs option UMAPFS # uid/gid remapping filesystem option PORTAL # portal filesystem (still experimental) option PROCFS # /proc option CD9660 # ISO 9660 + Rock Ridge file system option UNION # union file system
arc/conf/ARCTIC:option FFS,QUOTA # fast filesystem with user and group quotas
MFS.
an example of an /etc/fstab specification for using MFS as a RAM disk for the temporary storage directory /tmp.
/dev/wds2b /tmp mfs auto,rw 0 0
| Option | Purpose |
| FFS_SOFTUPDATES |
Enables a scheme that uses partial ordering of buffer cache operations to allow metadata updates in FFS to happen asynchronously, increasing write performance significantly. Normally, the FFS filesystem writes metadata updates synchronously which exacts a performance penalty in favor of filesystem integrity. With soft updates, you gain the performance of asynchronous writes while retaining the safety of synchronous metadata updates. Soft updates must be enabled on a per-filesystem basis. To do this, boot into single user mode and run tunefs -s enable special on each character special device you want to enable soft updates on, then run reboot -n. Processors with a small kernel address space, such as the sun4 and sun4c, do not have enough kernel memory to support soft updates. Attempts to use this option with these CPUs will cause a kernel hang or panic after a short period of use as the kernel will quickly run out of memory. This is not related to the amount of physical memory present in the machine it is a limitation of the CPU architecture itself. |
| BUFCACHEPERCENT=integer | Percentage of RAM to use as a file system buffer. It defaults to 5. |
| NFSSERVER | server side of the NFS (Network File System) remote file sharing protocol. Although the bulk of the code implementing NFS is kernel based, several user level daemons are needed for it to work. See mountd(8) and nfsd(8) for details. |
| QUOTA | Enables kernel support for file system quotas. See quotaon(8), edquota(8), repquota(8), and quota(1) for details. Note that quotas only work on "ffs" file systems, although rpc.rquotad(8) permits them to be accessed over NFS. |
| FIFO | Adds support for AT&T System V UNIX style FIFOs (i.e., "named pipes"). This option is recommended in almost all cases as many programs use these. |
| NVNODE=integer |
This option sets the size of the cache used by the name-to-inode translation routines, (a.k.a. the namei() cache, though called by many other names in the kernel source). By default, this cache has NPROC (set as 20 + 16 * MAXUSERS) * (80 + NPROC / 8) entries. A reasonable way to derive a value of NVNODE, should a large number of namei cache misses be noticed with a tool such as systat(1), is to examine the system's current computed value with sysctl(1), (which calls this parameter "kern.maxvnodes") and to increase this value until either the namei cache hit rate improves or it is determined that the system does not benefit substantially from an increase in the size of the namei cache. Above definition is in param.c and the kernel option allows us to modify this specification. |
| EXT2FS_SYSTEM_FLAGS | This option changes the behavior of the APPEND and IMMUTABLE flags for a file on an EXT2FS filesystem. Without this option, the superuser or owner of the file can set and clear them. With this option, only the superuser can set them, and they can't be cleared if the securelevel is greater than 0. See also chflags(1). |
Example Use:
i386/conf/PETRA: option BUFCACHEPERCENT=50 # how much for the buffer cache? i386/conf/LUCIFIER: option BUFCACHEPERCENT=20
| Option | Purpose |
| GATEWAY | Enables IPFORWARDING and (on most ports) increases the size of NMBCLUSTERS. In general, GATEWAY is used to indicate that a system should act as a router, and IPFORWARDING is not invoked directly. (Note that GATEWAY has no impact on protocols other than IP, such as CLNP or XNS.) |
| IPFORWARDING | Enables IP routing behavior. With this option enabled, the machine will forward IP datagrams between its interfaces that are destined for other machines. Note that even without this option, the kernel will still forward some packets (such as source routed packets) removing GATEWAY and IPFORWARDING is insufficient to stop all routing through a bastion host on a firewall source routing is controlled independently. Note that IP forwarding may be turned on and off independently of the setting of the IPFORWARDING option through the use of the net.inet.ip.forwarding sysctl variable. If net.inet.ip.forwarding is 1, IP forwarding is on. See sysctl(8) and sysctl(3) for details. |
| MROUTING | Includes support for IP multicast routers. INET should be set along with this. Multicast routing is controlled by the mrouted(8) daemon. |
| INET | Includes support for the TCP/IP protocol stack. This option is currently required. See inet(4) for details |
| INET6 | Includes support for the IPv6 protocol stack. See inet6(4) for details. Unlike INET, INET6 enables multicast routing code as well. This option requires INET at this moment, but it should not. |
| NS | Include support for the Xerox XNS protocol stack. See ns(4) for details. |
| ISO,TPIP | Include support for the ubiquitous OSI protocol stack. See iso(4) for details. |
| EON | Include support for OSI tunneling over IP. |
| CCITT,LLC,HDLC | Include support for the X.25 protocol stack. The state of this code is currently unknown. It probably contains bugs. |
| IPX, IPXIP | Include support for Internetwork Packet Exchange protocol commonly in use by Novell NetWare. |
| NETATALK | Include kernel support for the AppleTalk family of protocols. This suite of supporting code is sometimes called netatalk support. |
| TCP_COMPAT_42 | Use of this option is extremely discouraged, so it should not be enabled. If any other machines on the network require enabling this, it's recommended that they be disconnected from the network. TCP bug compatibility with 4.2BSD. In 4.2BSD, TCP sequence numbers were 32-bit signed values. Modern implementations of TCP use unsigned values. This option clamps the initial sequence number to start in the range 2^31 rather than the full unsigned range of 2^32. Also, under 4.2BSD, keepalive packets must contain at least one byte or else the remote end will not respond. |
| TCP_SACK | Turns on selective acknowledgements. Additional information about segments already received can be transmitted back to the sender, thus indicating segments that have been lost and allowing for a swifter recovery. Both communication endpoints need to support SACK. The fallback behaviour is NewReno fast recovery phase, which allows one lost segment to be recovered per round trip time. When more then one segment has been dropped per window, the transmission can continue without waiting for a retranmission timeout. |
| TCP_FACK | Turns on forward acknowledgements allowing a more precise estimate of outstanding data during the fast recovery phase by using SACK information. This option can only be used together with TCP_SACK. |
| TCP_SIGNATURE | Turns on support for the TCP MD5 Signature option (RFC 2385). This is used by Internet backbone routers to provide per-packet authentication for the TCP packets used to communicate BGP routing information. You will also need a routing daemon that supports this option in order to actually use it. |
| IPFILTER | This option enables the IP filtering on the packet level using Darren Reed's ip-filter package. |
| IPFILTER_LOG | This option, in conjunction with option IPFILTER, enables logging of IP packets using ip-filter. |
| IPFILTER_DEFAULT_BLOCK | This option sets the default policy of ip-filter to block packets that exit the rule-set unmatched. Otherwise they are silently passed. See ipf(1) for details. |
| PPP_FILTER | This option turns on pcap(3) based filtering for ppp connections. This option is used by pppd(8) which needs to be compiled with PPP_FILTER defined (the current default). |
| PPP_BSDCOMP | Enables BSD compressor for PPP connections. |
| PPP_DEFLATE | For use in conjunction with PPP_BSDCOMP; provides an interface to zlib for PPP for deflate compression/decompression. |
| IPSEC | This option enables IP security protocol support. See ipsec(4) for more details. |
| ENCDEBUG | This option enables debugging information to be conditionally logged in case IPSEC encounters errors. The option IPSEC is required along with this option. Debug logging can be turned on/off through the use of the net.ipsec.encap.encdebug sysctl variable. If net.ipsec.encap.encdebug is 1, debug logging is on. See sysctl(8) and sysctl(3) for details. |
| KEY | Enables PFKEYv2 (RFC 2367) support. While not IP specific, this option is usually used in conjunction with option IPSEC. |
| Option | Purpose |
| SWAPPAGER | Turns on paging. (To be specific, this enables the virtual memory module responsible for handling page faults for "anonymous" objects (i.e., BSS pages)). MANDATORY the system cannot actually run without this "option". |
| DEVPAGER | Support for mmap()ing of devices. (Specifically, this enables the virtual memory module responsible for handling page faults on mapped devices ("cdev" vnodes)). MANDATORY the system cannot actually run without this "option". |
| NMBCLUSTERS=value |
Size of kernel mbuf cluster map, mb_map, in CLBYTES-sized logical pages. Default on most ports is 256 (512 with "option GATEWAY"). See /usr/include/machine/param.h for exact default information. Increase this value if "mb_map full" messages appear. Machine specific configurations are #defines in arch/[machine]/ |
| NKMEMCLUSTERS=value | Size of kernel malloc area in CLBYTES-sized logical pages. This area is covered by the kernel submap kmem_map. See /usr/include/machine/param.h for the default value, which is port specific. Increase this value if "out of space in kmem_map" panics happen. |
| NBUF=value | |
| BUFPAGES=value | These options set the number of pages available for the buffer cache. Their default value is a machine dependent value, often calculated as between 5% and 10% of total available RAM. |
| NTP | Modify the scheduler code to add hooks necessary for running an NTP daemon. xntpd(8) is available as part of the port collection. |
| APM_NOPRINT | This option is supported on the i386 architecture. When enabled kernel messages regarding the status of the automatic power management system (APM) are suppressed. APM status can still be obtained using apm(8) and/or apmd(8). |
Example of using NMBCLUSTERS
option "NMBCLUSTERS=8192"
Note that the only examples I've seen use quotations, so I follow the trend although there doesn't seem to be any particular reason to use quotations
| Option | Purpose |
| SCSITERSE | Terser SCSI error messages. This omits the table for decoding ASC/ASCQ info, saving about 8 bytes or so. |
| SCSIDEBUG | Prints extra debugging info for the SCSI subsystem to the console. |
[ref: pcvt(4)]
| Option | Purpose |
| PCVT_NSCREENS = number | Defines the number of virtual screens. Default: 8 |
| PCVT_SCREENSAVER | Enables the built-in screensaver feature. Default: on |
| PCVT_PRETTYSCRNS | If enabled, a blinking-star screensaver is used. If disabled, the screen is simply blanked (which might be useful for energysaving monitors). Default: off |
| PCVT_CTRL_ALT_DEL | If enabled, the key combination invokes a CPU reset. Default: off (To change this, check sysctl.conf , set value of machdep.kbdreset to 1) |
| PCVT_USEKBDSEC | Do NOT override a security lock for the keyboard. Default: on |
| PCVT_24LINESDEF | If enabled, the 25-line modi (VT emulation with 25 lines) defaults to 24 lines only to provide a better compatibility to the original DEV VT220 (TM). Thus it should be possible to use the terminal information for those terminals without further changes. Note that this is a startup option; it is possible to toggle between the 24and 25-lines' display by the scon(1) utility. Default: off |
| PCVT_META_ESC | If enabled, a sequence composed of |
The pcvt driver provides a virtual screen system with several additional features not available in pc(4) standard console device driver. Besides the ability of handling multiple virtual screens, probably the most important is an emulation of a wide range of DEC VT-220 (TM) functionality. See Features for a detailed description.
Note: As of OpenBSD 2.6, pcvt does not do character mapping by default in favor of a traditional PC display where 16 colors are available and the standard IBM font is used. See the -o flag in scon(1) to toggle between this mode and the old mode.
Refer to the file arch/i386/isa/pcvt/[README.FIRST && pcvt_hdr.h] in the kernel source tree for detailed documentation.
| Option | Purpose |
| SYSVMSG | Includes support for AT&T System V UNIX style message queues. See msgctl(2), msgget(2), msgrcv(2), msgsnd(2). |
| SYSVSEM | Includes support for AT&T System V UNIX style semaphores. See semctl(2), semget(2), semop(2). |
| SYSVSHM | Includes support for AT&T System V UNIX style shared memory. See shmat(2), shmctl(2), shmdt(2), shmget(2). |
| SHMPAXPGS=value | Sets the maximum number of AT&T System V UNIX style shared memory pages that are available through the shmget(2) system call. Default value is 1024 on most ports. See /usr/include/machine/vmparam.h for the default. |
[ref: The Complete FreeBSD Book]
Pseudo-device drivers are parts of the kernel that act like device drivers but do not correspond to any actual hardware in the machine.
| pseudo-device | Purpose |
| loop | network loop-back |
| bpfilter | packet filter |
| sl | CSLIP |
| ppp | PPP |
| tun | network tunnelling over tty |
| enc | encryption device |
| strip | Starmode Radio IP Interface |
| pty | Pseudo-Terminals |
| tb | Tablet Line Discipline |
| vnd | Paging to Files |
| ccd | Concatenated Disk Devices |
| ksyms | Kernel Symbol Device |
| pctr | |
| mtrr | memory range attribute control (686 range PCs, PPro + & AMD K6-2 + (?) |
| sequencer | |
| raid |
| Directive | Purpose |
| option COMCONSOLE | (needs revision-probably in a man page somewhere) according to the FreeBSD documentation "Setting serial port flag 0x20 specifies that you would prefer to have the system console on a serial line. This replaces old COMCONSOLE option." |
| maxusers | Specify generalised number of users to provide services for. Check man pages for more details on this option. |
| config bsd root on | Specify boot devices ? |
I think the "config bsd root" allows you to specify in the kernel where your boot, swap, and kernel dumps are to be placed (specify the drive and partition.) Otherwise you can use "config bsd swap generic" and the configuration is determined by the disk layout (disklabel.) Note in the examples below you can specify the root and swap on a remote file system.
Examples from arch/i386/conf:
DISKLESS: config bsd root on nfs swap on nfs ELBERETH: config bsd root on wd0 swap on wd0 and sd0 and sd1 dumps on sd0 GANDALF: config bsd root on sd0a swap on sd0b and sd1b and sd3b dumps on sd0b GENERIC: config bsd swap generic HERMES: config bsd root on sd0 swap on sd0 and wd0 dumps on sd0 LUCIFIER: config bsd swap generic NETTAN: config bsd swap generic OPRAH: config bsd swap generic PETRA: config bsd root on sd0a swap on ccd0b dumps on sd1a RAMDISK: config bsd root on rd0a swap on rd0b and wd0b and sd0b RAMDISKB: config bsd root on rd0a swap on rd0b and wd0b and sd0b RAMDISKC: config bsd root on rd0a swap on rd0b and wd0b and sd0b RAMDISK_CD: config bsd root on rd0a swap on rd0b and wd0b and sd0b SARUMAN: config bsd root on wd0a swap on wd0b dumps on wd0b WALDORF: config bsd swap generic |
The specifications seems to be equivalent over most platforms, differences may be in the root or swap devices and in a few cases the config is "netbsd" instead of bsd.
Bus Controllers
Format:
BUSn at bus [bus ?][dev ? function ? ] [port port_addr iomem io_addr iosiz io_size ]
| mainbus() | |
| bios() | BIOS |
| apm() | Advanced Power Management |
| isa() | ISA Bus. This was the original BUS in the IBM PC and evolved until it was replaced by the PCI BUS. ON IBM PC Compatible equipment continue to use the ISA directove. |
| eisa() | EISA Bus. If you have an EISA motherboard (an upgrade to the ISA motherboard that is not as proliferant as the PCI bus) then you should specify this. |
| pci | PCI Bus. This enables auto-detection of PCI boards and allows pcib to bridge between PCI bus and ISA bus. |
| pchb | PCI-Host bridges |
| ppb | PCI-PCI bridges |
| pcib | PCI-ISA bridges (do nothing) |
| pcic | ISA PCMCIA controllers |
| pcmcia | PCMCIA Support |
Example use from arch/i386/conf/PETRA
| mainbus() at root | This seems to be the common invocation of mainbus() on all platforms with sample kernel configurations. |
| bios() at mainbus() | I only see this on i386 configurations, and other platforms I've looked at their sample configurations indicate the use of cpu() at mainbus() |
| apm() at bios() flags 0x0000 |
flags 0x0000 to use protocol version 1.0 I only see this on i386 configurations, and other platforms I've looked at their sample configurations indicate the use of apm(). This may be related to a platform specific hardware feature, not currently available (or coded) onto other hardware-platforms. |
| isa() at mainbus() | |
| isa() at pcib? | |
| eisa() at mainbus() | |
| pci* at mainbus() bus ? | |
| pchb* at pci? dev ? function ? | PCI-Host bridges |
| ppb* at pci? dev ? function ? | PCI-PCI bridges |
| pci* at ppb? bus ? | |
| pci* at pchb? bus ? | |
| pcib* at pci? dev ? function ? | PCI-ISA bridges (do nothing) |
| ISA PCMCIA controllers | |
| pcic0 at isa? port 0x3e0 iomem 0xd0000 iosiz 0x4000 | |
| pcic1 at isa? port 0x3e2 iomem 0xd4000 iosiz 0x4000 | |
| PCMCIA Support | |
| pcmcia* at pcic? controller ? socket ? |
USB Devices
Format:
DEVICEn at bus [port port_addr configuration ? interface ?]
| uhci | Universal Host Controller (Intel) |
| ohci | Open Host Controller |
| usb | USB Support |
| uhid | USB Generic HID devices |
| uaudio | USB Audio |
| ugen | USB Generic driver |
| puc | PCI "universal" communication device |
| npx | math coprocessor |
| isadma | DMA on ISA bus |
| isapnp | PNP on ISA bus |
| pc | generic PC console device |
| vt | |
| pcppi0 at isa? | |
| sysbeep0 at pcppi? |
Example use from arch/i386/conf/PETRA
| PCI USB Controllers | |
| uhci* at pci? | Universal Host Controller (Intel) |
| ohci* at pci? | Open Host Controller |
| USB Bus Support | |
| usb* at uhci? | |
| usb* at ohci? | |
| USB Generic HID devices | |
| uhid* at uhub? port ? configuration ? interface ? | |
| USB Audio | |
| uaudio* at uhub? port ? configuration ? | |
| USB Generic driver | |
| ugen* at uhub? port ? configuration ? interface ? | |
| puc* at pci? | PCI "universal" communication device |
| npx0 at isa? port 0xf0 irq 13 | math coprocessor |
| isadma0 at isa? | |
| isapnp0 at isa? | |
| pc0 at isa? port 0x60 irq 1 | generic PC console device |
| vt0 at isa? port 0x60 irq 1 | |
| pcppi0 at isa? | |
| sysbeep0 at pcppi? |
Format:
DEVICEn at bus port port_addr irq irq_no
| com | Standard PC serial ports |
| ast | AST 4-port serial card |
| boca | BOCA 8-port serial cards |
| rtfps | RT 4-port serial cards |
| com* at pcmcia? function ? | PCMCIA modems/serial ports |
| cy | Cyclom serial card |
| lpt | standard PC parallel ports |
On my system, the serial ports are accessed as /dev/tty00 and /dev/tty01 so this means I can't see it in the below example. The tty devices are referenced in ...i386/conf/files.i386 and created in /dev/MAKEDEV
Example use from arch/i386/conf/PETRA
| com0 at isa? port 0x3f8 irq 4 | standard PC serial ports MS-DOS COM1 |
| com1 at isa? port 0x2f8 irq 3 | MS-DOS COM2 |
| com2 at isa? port 0x3e8 irq 5 | MS-DOS COM3 |
| com3 at isa? port 0x2e8 irq 9 | (note that this can conflict with some video cards) |
| ast0 at isa? port 0x1a0 irq 5 | AST 4-port serial card |
| #ast1 at isa? port 0x2a0 irq 6 | 2nd AST 4-port serial card |
| com* at ast? slave ? | |
| #boca0 at isa? port 0x100 irq 5 | BOCA 8-port serial cards |
| #com* at boca? slave ? | |
| #rtfps0 at isa? port 0x1230 irq 10 | RT 4-port serial cards |
| #com* at rtfps? slave ? | |
| com* at pcmcia? function ? | PCMCIA modems/serial ports |
| com* at isapnp? | |
| com* at puc? port ? | |
| option for using CD1400 handshaking for incoming data requires a special cable that exchanges the RTS and DTR lines options CY_HW_RTS | |
| cy0 at isa? iomem 0xd4000 irq 12 | ISA cyclom serial card |
| #cy* at pci? | PCI cyclom serial card |
| lpt0 at isa? port 0x378 irq 7 | standard PC parallel ports |
| lpt1 at isa? port 0x278 | |
| lpt2 at isa? port 0x3bc | |
The following are device settings for mice
Format:
DEVICEn at bus [port port_addr] irq irq_no
| Device | |
| lm | Logitech bus mouse. Use this device if you have a Logitech (and potentially an ATI Inport) bus mouse board. |
| mms | Microsoft InPort mouse. Use this device if you have a Microsoft Bus Mouse card. |
| pms | PS/2 auxiliary port mouse. Note that this is different from the psm0 device used by FreeBSD (but designating the same thing.) |
My PS/2 port mouse is accessed as /dev/pms0 which synchs with how the kernel is configured below. Note that documentation for FreeBSD uses the same port as /dev/psm0 which previously caused problems for me trying to learn OpenBSD with FreeBSD documentation.
Example use from arch/i386/conf/PETRA
| lms0 at isa? port 0x23c irq 5 | Logitech bus mouse |
| lms1 at isa? port 0x238 irq 5 | |
| mms0 at isa? port 0x23c irq 5 | Microsoft InPort mouse |
| mms1 at isa? port 0x238 irq 5 | specifying port address and irq # |
| pms0 at pckbd? irq 12 | PS/2 auxiliary port mouse |
SCSI devices are first configured as the controller, and then mapping the generic scsibus to the controller. After this, we map the scsi device to the scsibus.
| Device | |
| sd | SCSI disk drives |
| st | SCSI tape drives |
| cd | SCSI CD-ROM drives |
| ch | SCSI autochangers |
| ss | SCSI scanners |
| uk | unknown SCSI |
| Controllers | |
| bt | BusLogic [57]4X SCSI controllers |
| aha | Adaptec 154[02] SCSI controllers |
| ahb | Adaptec 174[024] SCSI controllers |
| ahc | Adaptec 284x, 274x, aic7770, 2940 SCSI controllers |
| isp | Qlogic ISP [12]0x0 SCSI/FibreChannel |
| aic | Adaptec 152[02] SCSI controllers |
| ncr | NCR 538XX SCSI controllers |
| adv | AdvanSys 1200A/B and ULTRA SCSI |
| adw | AdvanSys ULTRA WIDE SCSI |
| sea | Seagate ST0[12] SCSI controllers |
| uha | UltraStor [123]4f SCSI controllers |
| wds | WD7000 and TMC-7000 controllers |
Example use from arch/i386/conf/PETRA
| bt0 at isa? port 0x330 irq ? drq ? | BusLogic [57]4X SCSI controllers |
| bt1 at isa? port 0x334 irq ? drq ? | BusLogic [57]4X SCSI controllers |
| bt2 at isa? port ? irq ? | |
| scsibus* at bt? | |
| aha0 at isa? port 0x330 irq ? drq ? | Adaptec 154[02] SCSI controllers |
| aha1 at isa? port 0x334 irq ? drq ? | Adaptec 154[02] SCSI controllers |
| aha* at isapnp? | |
| scsibus* at aha? | |
| ahb* at eisa? slot ? | Adaptec 174[024] SCSI controllers |
| scsibus* at ahb? | |
| ahc0 at isa? port ? irq ? | Adaptec 284x SCSI controllers |
| ahc* at eisa? slot ? | Adaptec 274x, aic7770 SCSI controllers |
| ahc* at pci? dev ? function ? | Adaptec 2940 SCSI controllers |
| scsibus* at ahc? | |
| isp* at pci? dev ? function ? | Qlogic ISP [12]0x0 SCSI/FibreChannel |
| scsibus* at isp? | |
| aic0 at isa? port 0x340 irq 11 | Adaptec 152[02] SCSI controllers |
| aic* at pcmcia? function ? | PCMCIA based aic SCSI controllers |
| scsibus* at aic? | |
| ncr* at pci? dev ? function ? | NCR 538XX SCSI controllers |
| scsibus* at ncr? | |
| adv* at pci? dev ? function ? | AdvanSys 1200A/B and ULTRA SCSI |
| scsibus* at adv? | |
| adw* at pci? dev ? function ? | AdvanSys ULTRA WIDE SCSI |
| scsibus* at adw? | |
| sea0 at isa? iomem 0xc8000 irq 5 | Seagate ST0[12] SCSI controllers |
| scsibus* at sea? | |
| uha0 at isa? port 0x330 irq ? drq ? | UltraStor [13]4f SCSI controllers |
| uha1 at isa? port 0x334 irq ? drq ? | UltraStor [13]4f SCSI controllers |
| uha* at eisa? slot ? | UltraStor 24f SCSI controllers |
| scsibus* at uha? | |
| wds0 at isa? port 0x350 irq 15 drq 6 | WD7000 and TMC-7000 controllers |
| #wds1 at isa? port 0x358 irq 11 drq 5 | |
| scsibus* at wds? | |
| sd* at scsibus? target ? lun ? | SCSI disk drives |
| st* at scsibus? target ? lun ? | SCSI tape drives |
| cd* at scsibus? target ? lun ? | SCSI CD-ROM drives |
| ch* at scsibus? target ? lun ? | SCSI autochangers |
| ss* at scsibus? target ? lun ? | SCSI scanners |
| uk* at scsibus? target ? lun ? | unknown SCSI |
The floppy and hdd interface
format:
DEVICEn at bus port port_addr irq irq_no drq drq_no
| Device | |
| fdc | standard PC floppy controllers |
| pciide | IDE controllers |
| wdc | |
| atapiscsi | ATAPI<>SCSI |
| wt | Archive and Wangtek QIC tape drives |
| mcd | Mitsumi CD-ROM drives |
| fd | Floppy drives are designated with fd0a, fd0b |
| wd | IDE hard drives are designated wd#letter |
fdc and wdc are the controllers and you access the specific floppy with either fd0a or fd0b (floppy drive a and b.) You an access the IDE Hard-Disk with wd0a-b on the primary controlleror wd1a-b on the secondary controller.
Example use from arch/i386/conf/PETRA
| fdc0 at isa? port 0x3f0 irq 6 drq 2 | standard PC floppy controllers |
| #fdc1 at isa? port 0x370 irq ? drq ? | |
| fd* at fdc? drive ? | |
| IDE controllers | |
| pciide* at pci ? dev ? function ? flags 0x0000 | |
| wdc0 at isa? port 0x1f0 irq 14 flags 0x00 | |
| wdc1 at isa? port 0x170 irq 15 flags 0x00 | |
| wdc* at pcmcia? function ? | |
| wdc* at isapnp? | |
| IDE hard drives | |
| wd* at wdc? channel ? drive ? flags 0x0000 | |
| wd* at pciide? channel ? drive ? flags 0x0000 | |
| ATAPI<>SCSI | |
| atapiscsi* at wdc? channel ? | |
| atapiscsi* at pciide? channel ? | |
| scsibus* at atapiscsi? | |
| #wt0 at isa? port 0x308 irq 5 drq 1 | Archive and Wangtek QIC tape drives |
| #mcd0 at isa? port 0x300 irq 10 | Mitsumi CD-ROM drives |
Supported Ethernet Devices on i386 architecture as extracted from the i386/conf/PETRA sample kernel configuration.
You should be able to comment out the network devices you are not using, or include one which is not in your kernel.
The card support, in my understanding, actually supports the chipset on that card. Where another card uses the same chipset it is likely the driver for the 1st card will work with the 2nd card.
If you have a new network card that is not supported by your kernel, one option is to rebuild a kernel with support for all the network cards, find out which chipset it detects the new card as, and then build your custom kernel with the newly discovered card specification.
Of course using loadable kernel modules (lkm) is probably a better solution, but I haven't figured that one out, yet.
Another reason your network card may not be detected is potentially the port address, or the IO memory address, or the IRQ selected by the Kernel configuration. Check your board settings by looking at the board, or with configuration software that may have come with the board and then reconfigure either the board, or the kernel.
format:
deviceN at bus [port port_no] [iomem
iomem_no irq irq_no] [drq drq_no]
| Device | |
| we | WD/SMC 80x3 ethernet |
| ec | 3COM 3C503 ethernet |
| ne | NE[12]000 ethernet |
| eg | 3COM 3C505/Etherlink+ ethernet |
| el | 3COM 3C501 ethernet |
| ef | 3COM 3C515 PnP ethernet |
| ie | Intel (?) EtherExpress, StarLAN and 3C507 |
| le | (lowercase "elle") IsoLan, NE2100, and DEPCA |
| ex | Intel EtherExpress PRO/10 |
| ep | 3COM 3C579 ethernet |
| fea | DEC DEFEA FDDI |
| lmc | Lan Media Corp SSI/T3/HSSI |
| le | PCnet-PCI based ethernet |
| de | DC21X4X-based ethernet |
| fxp | Intel EtherExpress 10/100B ethernet |
| ne | NE2000-compatible ethernet cards |
| ne | PCMCIA based NE2000 ethernet |
| ep | 3COM 3C59x ethernet, and PCMCIA based 3C5xx ethernet |
| sm | PCMCIA based sm ethernet |
| xe | Xircom ethernet |
| wi | WaveLAN IEEE 802.11 |
| fpa | DEC DEFPA FDDI |
| xl | 3c9xx ethernet |
| rl | RealTek 81[23]9 ethernet |
| tx | SMC 83C170 EPIC ethernet |
| tl | Compaq Thunderlan ethernet |
| vr | VIA Rhine ethernet |
| dc | 21143, "tulip" clone ethernet |
| wb | Winbond W89C840F ethernet |
| ti | Alteon Tigon 1Gb ethernet |
| al | ADMtek AL981/AN985 ethernet |
| sf | Adaptec AIC-6915 ethernet |
| skc | SysKonnect GEnesis 984x |
| Media Independent Device (mii) drivers | |
| exphy* at mii? phy ? | 3Com internal PHYs |
| inphy* at mii? phy ? | Intel 82555 PHYs |
| iophy* at mii? phy ? | Intel 82553 PHYs |
| icsphy* at mii? phy ? | ICS 1890 PHYs |
| #lxtphy* at mii? phy ? | Level1 LXT970 PHYs |
| nsphy* at mii? phy ? | NS and compatible PHYs |
| #qsphy* at mii? phy ? | Quality Semi QS6612 PHYs |
| sqphy* at mii? phy ? | Seeq 8x220 PHYs |
| rlphy* at mii? phy ? | RealTek 8139 internal PHYs |
| #mtdphy* at mii? phy ? | Myson MTD972 PHYs |
| dcphy* at mii? phy ? | Digital Clone PHYs |
| xmphy* at mii? phy ? | XaQti XMAC-II PHYs |
| brgphy* at mii? phy ? | Broadcom Gigabit PHYs |
Example use from arch/i386/conf/PETRA
| we0 at isa? port 0x280 iomem 0xd0000 irq 9 | WD/SMC 80x3 ethernet |
| we1 at isa? port 0x300 iomem 0xcc000 irq 10 | |
| we* at isapnp? | |
| ec0 at isa? port 0x250 iomem 0xd8000 irq 9 | 3C503 ethernet |
| ne0 at isa? port 0x240 irq 9 | NE[12]000 ethernet |
| ne1 at isa? port 0x300 irq 10 | NE[12]000 ethernet |
| ne2 at isa? port 0x280 irq 9 | NE[12]000 ethernet |
| ne* at isapnp? | NE[12]000 PnP ethernet |
| eg0 at isa? port 0x310 irq 5 | 3C505/Etherlink+ ethernet |
| el0 at isa? port 0x300 irq 9 | 3C501 ethernet |
| ep0 at isa? port ? irq ? | 3C509 ethernet |
| ep* at isapnp? | 3C509 PnP ethernet |
| ep* at isa? port ? irq ? | 3C509 ethernet |
| ef* at isapnp? | 3C515 PnP ethernet |
| ie0 at isa? port 0x360 iomem 0xd0000 irq 7 | StarLAN and 3C507 |
| ie1 at isa? port 0x300 irq 10 | EtherExpress |
| le0 at isa? port 0x360 irq 15 drq 6 | IsoLan, NE2100, and DEPCA |
| ex0 at isa? port 0x320 irq 5 | Intel EtherExpress PRO/10 |
| ep0 at eisa? slot ? | |
| ep* at eisa? slot ? | 3C579 ethernet |
| fea* at eisa? slot ? | DEC DEFEA FDDI |
| lmc* at pci? dev ? function ? | Lan Media Corp SSI/T3/HSSI |
| le* at pci? dev ? function ? | PCnet-PCI based ethernet |
| le* at isapnp? | |
| de* at pci? dev ? function ? | DC21X4X-based ethernet |
| fxp* at pci? dev ? function ? | EtherExpress 10/100B ethernet |
| ne* at pci? dev ? function ? | NE2000-compat ethernet |
| ep0 at pci? dev ? function ? | 3C59x ethernet |
| ep* at pci? dev ? function ? | 3C59x ethernet |
| ne* at pcmcia? function ? | PCMCIA based NE2000 ethernet |
| ep* at pcmcia? function ? | PCMCIA based 3C5xx ethernet |
| sm* at pcmcia? function ? | PCMCIA based sm ethernet |
| xe* at pcmcia? function ? | Xircom ethernet |
| wi* at pcmcia? function ? | WaveLAN IEEE 802.11 |
| fpa* at pci? dev ? function ? | DEC DEFPA FDDI |
| xl* at pci? dev ? function ? | 3c9xx ethernet |
| rl* at pci? dev ? function ? | RealTek 81[23]9 ethernet |
| tx* at pci? dev ? function ? | SMC 83C170 EPIC ethernet |
| tl* at pci? dev ? function ? | Compaq Thunderlan ethernet |
| vr* at pci? dev ? function ? | VIA Rhine ethernet |
| dc* at pci? dev ? function ? | 21143, "tulip" clone ethernet |
| wb* at pci? dev ? function ? | Winbond W89C840F ethernet |
| ti* at pci? dev ? function ? | Alteon Tigon 1Gb ethernet |
| al* at pci? dev ? function ? | ADMtek AL981/AN985 ethernet |
| sf* at pci? dev ? function ? | Adaptec AIC-6915 ethernet |
| skc* at pci? dev ? function ? | SysKonnect GEnesis 984x |
| sk* at skc? | each port of above |
| ukphy* at mii? phy ? | "unknown" PHYs |
| pss0 at isa? port 0x220 irq 7 drq 6 | Personal Sound System |
| sp0 at pss0 port 0x530 irq 10 drq 0 | sound port driver |
| eap* at pci? dev ? function ? | Ensoniq AudioPCI S5016 |
| eso* at pci? dev ? function ? | ESS Solo-1 PCI AudioDrive |
| sv* at pci? dev ? function ? | S3 SonicVibes (S3 617) |
| sb0 at isa? port 0x220 irq 5 drq 1 | SoundBlaster |
| sb* at isapnp? ess* at isapnp? | ESS Tech ES188[78], ES888 |
| wss0 at isa? port 0x530 irq 10 drq 0 | Windows Sound System |
| wss* at isapnp? pas0 at isa? port 0x220 irq 7 drq 1 | ProAudio Spectrum |
| gus0 at isa? port 0x220 irq 7 drq 1 drq2 6 | Gravis UltraSound (drq2 is record drq) |
| ym* at isapnp? | |
| mpu* at isapnp? | |
| OPL[23] FM syntheziers | |
| #opl0 at isa? port 0x388 | use only if not attached to sound card |
| opl* at eso? | |
| opl* at sb? | |
| opl* at ess? | |
| MIDI support | |
| midi* at pcppi? | MIDI interface to the PC speaker |
| midi* at sb? | SB MPU401 port |
| midi* at opl? | OPL FM synth |
| midi* at ym? | |
| midi* at mpu? | |
| The spkr driver provides a simple tone interface to the built in speaker. | |
| #spkr0 at pcppi? | PC speaker |
| #Audio Support | |
| audio* at sb? | |
| audio* at gus? | |
| audio* at pas? | |
| audio* at sp? | |
| audio* at ess? | |
| audio* at wss? | |
| audio* at ym? | |
| audio* at eap? | |
| audio* at eso? | |
| audio* at sv? | |
| #audio* at uaudio? | |
| bktr0 at pci? dev ? function ? | BrookTree family video capture and TV tuner board? (reference to FreeBSD http://www.freebsd.org/~fsmp/HomeAuto/Bt848.html) |
| Joystick driver. Probe is a little strange; add only if you have one. | |
| #joy0 at isa? port 0x201 | |
| joy* at isapnp? | |
| #wdt0 at pci? dev ? function ? | Ind Computer Source PCI-WDT50x driver |
| crypto support | |
| #aeon* at pci? dev ? function ? | Aeon crypto card |
| Option | Purpose |
| PCIVERBOSE | Makes the boot process more verbose for PCI peripherals (vendor names and other information is printed, etc.). |
| EISAVERBOSE | Makes the boot process more verbose for EISA peripherals. |
| PCMCIAVERBOSE | Makes the boot process more verbose for PCMCIA peripherals. |
| APERTURE | Provide in-kernel support for VGA framebuffer mapping by user-processes (such as an X windows server). This option is supported in the i386 architecture. |
| XSERVER | Support for X windows in the console driver. |
| LKM | Enable support for loadable kernel modules. See lkm(4) for details. Note: This option is not yet available on all architectures. |
| INSECURE | Hardwires the kernel security level at -1. This means that the system always runs in securelevel 0 mode, even when running multiuser. See init(8) for details on the implications of this. The kernel secure level may be manipulated by the superuser by altering the kern.securelevel sysctl variable. (It should be noted that the securelevel may only be lowered by a call from process ID 1, i.e., init(8).) See also sysctl(8) and sysctl(3). |
| MACHINE_NONCONTIG | This option changes part of the VM/pmap interface, to allow for non-contiguous memory. On some ports it is not an option. These ports typically only use one of the interfaces. |
| RAM_DISK_HOOKS | This option allows for some machine dependent functions to be called when the ramdisk driver is configured. This can result in automatically loading a ramdisk from floppy on open (among other things). |
| RAM_DISK_IS_ROOT | Forces the ramdisk to be the root device. This can only be overridden when the kernel is booted in the "ask-for-root" mode. |
| CCDNBUF=integer | The ccd(4) device driver uses "component buffers" to distribute I/O requests to the components of a concatenated disk. It keeps a freelist of buffer headers in order to reduce use of the kernel memory allocator. CCDNBUF is the number of buffer headers allocated on the freelist for each component buffer. It defaults to 8. |
| KMEMSTATS | The kernel memory allocator, malloc(9), will keep statistics on its performance if this option is enabled. Unfortunately, this option therefore essentially disables MALLOC() and FREE() forms of the memory allocator, which are used to enhance the performance of certain critical sections of code in the kernel. This option therefore can lead to a significant decrease in the performance of certain code in the kernel if enabled. Examples of such code namei() routine, the ccd(4) driver, the ncr(4) driver, and much of the networking code. Note that this option is silently turned on by the DEBUG option. |
| BOOT_CONFIG | Adds support for the -c boot option (User Kernel Config). Allows modification of kernel settings (i.e., device parameters) before booting the system. |
| UVM_SWAP_ENCRYPT | Enables kernel support for encrypting pages that are written out to swap storage. Swap encryption prevents sensitive data from remaining on the disk even after the operating system has been shut down. This option should be turned on if cryptographic filesystems are used. The sysctl variable vm.swapencrypt.enable controls its behaviour. See sysctl(8) and sysctl(3) for details. |
[ref: modload(8), lkm(4), modstat(8), modunload(8)]
LKM is the answer to that error in your configuration file (or the overzealous, took to many things out, problem.) LKM as its name tells us, allows the administrator to dynamically load kernel modules without rebooting.
Most useful when your designed kernel does not include drivers for a new piece of hardware just attached to your machine. Test it by dynamically loading the kernel module before doing a recompile.
"modload" is used to install the module, an object file (.o file). "modstat" lets you find out what modules are currently loaded, and modunload lets you remove loadable modules the running kernel.
Copyright (c) 2000/1/2 Samiuela LV Taufa. All Rights Reserved.
I reserve the right to be totally incorrect even at the best advice of betters.
You are permitted and encouraged to use this guide for fun or for profit as you see fit. If you republish this work in what-ever form, it would be nice (though not enforceable) to be credited.
|
kernel optimizations |
Copyright © 2000/1/2 NoMoa.COM All rights reserved.


Democrats take jabs at Trump's foreign policy during November debate
ATLANTA -- Democrats seeking the 2020 presidential nomination weighed in on foreign policy while criticizing President Donald Trump - and getting in a few one-liners.
California Sen. Kamala Harris said "Donald Trump got punked" by North Korean leader Kim Jong Un. Harris said Trump has compromised America's ability to provide a check on North Korea's nuclear program.
Former Vice President Joe Biden and Minnesota Sen. Amy Klobuchar said they would work to rebuild relationships with allies.
Vermont Sen. Bernie Sanders said "it's time to bring our troops home" from Afghanistan, and he would work with the international community to do so.
Entrepreneur Andrew Yang was asked what he'd say in his first call to Russian President Vladimir Putin. Yang, referencing Trump, responded: "First, I'd say I'm sorry I beat your guy."


CDRDAO(1) CDRDAO(1) NAME cdrdao - reads and writes CDs in disc-at-once mode SYNOPSIS cdrdao {show-toc|read-toc|read-cd|read-cddb|show-data|read-test|disk- info|msinfo|unlock|simulate|write|copy|blank} [--device device] [--source-device device] [--driver driver-id] [--source-driver driver-id] [--simulate] [--speed writing-speed] [--blank-mode mode] [--datafile file] [--read-raw] [--read-subchan [--no-mode2-mixed] mode] [--tao- source] [--tao-source-adjust link-blocks] [--fast-toc] [--buffers buffer- count] [--multi] [--overburn] [--eject] [--swap] [--session] [--force] [--reload] [--keepimage] [--on-the-fly] [--paranoia-mode mode] [--with- cddb] [--cddb-servers server-list] [--cddb-timeout timeout] [--cddb- directory directory] [--tmpdir directory] [--keep] [--save] [-n] [-v ver‐ bose-level] toc-file DESCRIPTION cdrdao creates audio and data CD-Rs in disk-at-once (DAO) mode driven by a description file called toc-file. In DAO mode it is possible to create non standard track pre-gaps that have other lengths than 2 seconds and contain nonzero audio data. This is for example useful to divide live recordings into tracks where 2 second gaps would be kind of irritating. Instead of a toc-file a cue file (used by a famous DOS/Windows mastering tool) may be used. See the CUE FILES section for more details. COMMANDS The first argument must be one of the following commands: show-toc Print out a summary about what will be written to the CD-R. read-toc Analyze each track of the inserted CD and create a toc-file that can be used to make a more or less exact copy of the CD. This command does not read out the audio or data tracks, use read-cd for this purpose. You can specify a filename for the data file via the --datafile option. read-cd Copies all tracks of the inserted CD to an image file and creates a corresponding toc-file. The name of the image file defaults to "data.bin" if no --datafile option is given. read-cddb Tries to retrieve title and artist data from a CDDB server for the CD represented by the given toc-file. The retrieved data is added as CD-TEXT data for language 0 to the toc-file. Existing CD-TEXT data for language 0 will be overwritten. show-data Print out all samples that would be written to the CD-R. Each line contains the sample number (starting at 0) and the decimal sample value for the left and right channel. Useful to check if the byte order of audio files is correct. read-test Check if all data can be read from the audio files that are defined in the toc-file. This will also check the communication with the slave process that is responsible for writing the audio data to the CD-recorder. Mainly used for testing. disk-info Shows information about the inserted CD-R. If the CD-R has an open session it will also print the start of the last and current ses‐ sion which is used by mkisofs to create an image for a second or higher session. msinfo Shows information required for creating multi session disks with mkisofs. The output is meant for processing by scripts. unlock Tries to unlock the recorder device after a failed write or simu‐ lation run. If you cannot eject the CD after a cdrdao run try this command. blank Blanks a CD-RW. The CD-RW is minimally blanked by default. Use option --blank-mode to select another blanking mode. Sometimes the blanking speed must be manually reduced for a successful blanking operation. Use option --speed to select another blanking speed. simulate Like write but laser stays cold. It is a shortcut for write --sim‐ ulate. write Write the CD-R according to the specifications in the toc-file. copy Performs all steps to copy a CD. The device containing the source CD must be specified with option --source-device and the recorder device with option --device. If only a single device is available the option --source-device must be omitted and cdrdao will prompt to insert the CD-R after an image of the source CD was created. The image file with name "cddata<pid>.bin" will be created in the current working directory if no --datafile option is given. The created image will be removed after it has been written. If option --on-the-fly is given no image file is created and the data will be directly piped from the reading device to the CD recorder. OPTIONS --device [prot:]bus,id,lun Sets the SCSI address of the CD-recorder in form of a bus/id/lun triple, e.g. '0,2,0' for the logical unit 0 of SCSI device with ID 2 on bus 0. ATAPI devices can be specified by using the prefix 'ATAPI:', e.g. 'ATAPI:0,0,0'. On some systems a device node may be specified directly, e.g. '/dev/sg0' on Linux systems. Linux 2.6 users may also try the newer ATAPI interface with the 'ATA:' pre‐ fix. --source-device [prot:]bus,id,lun Like above but used for the copy command to specify the source device. --driver driver-id:option-flags Force usage of specified driver instead of the automatically determined driver. Available driver IDs: cdd2600, plextor, plextor-scan, generic-mmc, generic-mmc-raw, ricoh-mp6200, yamaha-cdr10x, teac-cdr55, sony-cdu920, sony-cdu948, taiyo-yuden, toshiba. Specifying an illegal driver ID will give a list of available drivers. Option flags may be used to modify the behavior of some drivers. See README for details. --source-driver driver-id:option-flags Like above but used for the device specified with option --source- device. --speed value Set the writing speed to value. Default is the highest possible speed. --blank-mode mode Sets the blanking mode. Available modes are full and minimal. Please consider that the data of minimally blanked disks may be easily recovered. Use the full blanking mode for completely eras‐ ing all data. The default blanking mode is minimal. --datafile file Used for read-toc, read-cd and copy. Set the default data file placed in the toc-file by read-toc. Use "-" to indicate STDIN. For commands read-cd and copy it specifies the name of the created image file. --read-raw Only used for commands read-cd and read-toc. All data sectors will be written as 2352 byte blocks including the sector header and L-EC data to the image file. The track mode will be set to MODE1_RAW or MODE2_RAW in the created toc-file. --read-subchan mode Used by commands read-cd, read-toc and copy. Specifies the type of sub-channel data that is extracted from the source CD and writ‐ ten to the track image or copied to the destination CD. Mode may be rw for reading packed R-W sub-channel data (de-interleaved and error corrected) and rw_raw for reading raw R-W sub-channel data (not de-interleaved, not error corrected, L-EC data included in the track image). If this option is not specified no sub-channel data will be extracted. --no-mode2-mixed Only used for commands read-cd and read-toc. If we have MODE2_FORM1 or MODE2_FORM2, don't extract it as MODE2_FORM_MIX. toc-file. --tao-source This option indicates to the commands read-toc and read-cd that the source CD was written in TAO mode. It will be assumed that the pre-gap length between all tracks (except between two audio tracks) is the standard 150 blocks plus the number of link blocks (usually 2). The number of link blocks can be controlled with option --tao-source-adjust. Use this option only if read-toc or read-cd give error messages in the transition areas between two tracks. If you use this option with pressed CDs or CDs written in DAO mode you will get wrong results. --tao-source-adjust link-blocks Specifies the number of link blocks for tracks written in TAO mode. This option has only an effect if option --tao-source is given. --fast-toc Only used for command read-toc. This option suppresses the pre- gap length and index mark extraction which speeds up the read-toc process. Standard 2 second pre-gaps (but no silence!) will be placed into the toc-file. The resulting CD will sound like the source CD. Only the CD player's display will behave slightly dif‐ ferent in the transition area between two tracks. This option might help, too, if read-toc fails with your drive otherwise. --buffers buffer-count Specifies the number of buffers that are allocated to avoid buffer under runs. The minimal buffer count is fixed to 10, default is 32 except on FreeBSD systems, on which default is 20. Each buffer holds 1 second of audio data so that dividing buffer-count by the writing speed gives the maximum time for which reading of audio data may be stalled. --multi If this option is given the session will not be closed after the audio data is successfully written. It is possible to append another session on such disks, e.g. to create a CD-EXTRA. --overburn By default cdrdao will not allow to write more data on a medium than specified by the current medium. This option allows to ignore this condition. --eject Eject the CD-R after writing or write simulation. --swap Swap the byte order of all samples that are send to the CD- recorder. --session session-nr Used for read-toc and read-cd to specify the session which should be processed on multi session CDs. --reload Indicates that the tray may be opened before writing without prompting the user to reset the disk status after a simulation run. --force Forces the execution of an operation that otherwise would not be performed. --paranoia-mode mode Sets the correction mode for digital audio extraction. 0: No checking, data is copied directly from the drive. 1: Perform over‐ lapped reading to avoid jitter. 2: Like 1 but with additional checks of the read audio data. 3: Like 2 but with additional scratch detection and repair. The extraction speed reduces from 0 to 3. Default is the full paranoia mode (3). --keepimage If a CD is copied with command copy this option will cause that the created image is not removed after the copy process has fin‐ ished. --on-the-fly Perform CD copy on the fly without creating an image file. --with-cddb Enables the automatic fetching of CDDB data for use as CD-TEXT data for commands copy, read-toc and read-cd. --cddb-servers server-list Sets space or ',' separated list of CDDB servers used for command read-cddb or for commands where the --with-cddb option is active. A server entry may have the following forms: <server> Connect to <server>, default cddbp port (888), use cddbp protocol. <server>:<port> Connect to <server>, port <port>, use cddbp protocol. <server>:<cgi-bin-path> Connect to <server>, default http port (80), use http protocol, url: <cgi-bin-path>. <server>:<port>:<cgi-bin-path> Connect to <server>, port <port>, use http protocol, url: <cgi- bin-path>. <server>:<port>:<cgi-bin-path>:<proxy-server> Connect to <proxy-server>, default http port (80), use http proto‐ col, url: http://<server>:<port>/<cgi-bin-path>. <server>:<port>:<cgi-bin-path>:<proxy-server>:<proxy-port> Connect to <proxy-server>, port <proxy-port>, use http protocol, url: http://<server>:<port>/<cgi-bin-path>. The <cgi-bin-path> is usually "/~cddb/cddb.cgi". All servers of the server list will be tried in the given order until a successful connection can be established. For http proxy servers the first successful connected http proxy server will be used independent of the ability to connect to the target http server. Example: freedb.freedb.org:/~cddb/cddb.cgi --cddb-timeout timeout Sets the timeout in seconds used for connections to CDDB servers. --cddb-directory directory Specifies the local CDDB database directory where fetched CDDB records will be stored. If this option is not given a fetched CDDB record will not be stored locally. --tmpdir directory Specifies the directory in which to store temporary data files created from decoding MP3 and Ogg Vorbis files. By default, "/tmp" is used. --keep Upon exit from cdrdao, do not delete temporary WAV files created from MP3 and Ogg Vorbis files. --save Saves some of the current options to the settings file "$HOME/.cdrdao" and exit. See section ´SETTINGS´ for more details. -n Suppresses the 10 second pause before writing or simulating. -v verbose-level Sets verbose level. Levels > 2 are debug levels which produce a lot of output. TOC FILES The toc-file describes what data is written to the CD-R and allows con‐ trol over track/index positions, pre-gaps and sub-channel information. It is a simple text file, use your favorite text editor to create it. A toc-file contains an optional header and a sequence of track specifica‐ tions. Comments starting with '//' reaching until end of line can be placed anywhere. Header CATALOG "ddddddddddddd" Specifies the optional catalog number of the CD. The string must contain exactly 13 digits. The following flags specify the type of session that will be created. It is used to create the correct CD-TOC format and to check the consistency of the track modes for the desired session type. If multiple flags are given the last one will take effect. CD_DA The disc contains only audio tracks. CD_ROM The disc contains just mode 1 tracks or mode 1 and audio tracks (mixed mode CD). CD_ROM_XA The disc contains mode 2 form 1 or mode 2 form 2 tracks. Audio tracks are allowed, too. This type must be used if multi session disks are created (option --multi). CD_TEXT { ... } Defines global CD-TEXT data like the album title and the used lan‐ guages. See the CD-TEXT section below for the syntax of the CD- TEXT block contents. Track Specification TRACK <track-mode> [<sub-channel-mode>] Starts a new track, the track number is incremented by 1. The length of a track must be at least 4 seconds. The block length of the input data depends on the <track-mode>: AUDIO: 2352 bytes (588 samples), MODE1: 2048 bytes, MODE1_RAW: 2352 bytes, MODE2: 2336 bytes, MODE2_FORM1: 2048 bytes, MODE2_FORM2: 2324 bytes, MODE2_FORM_MIX: 2336 bytes including the sub-header, MODE2_RAW: 2352 bytes. The <sub-channel-mode> is optional. If given it spec‐ ifies the type of sub-channel data for each sector. RW: packed R-W sub-channel data (96 bytes, L-EC data will be generated if required), RW_RAW: raw R-W sub-channel data (interleaved and L-EC data already calculated, 96 bytes). The block length is increased by the sub-channel data length if a <sub-channel-mode> is speci‐ fied. If the input data length is not a multiple of the block length it will be padded with zeros. The following flags may follow the track start statement. They are used to set sub-channel information for the current track. Each flag is optional. If not given the following defaults are used: copy not permit‐ ted, no pre emphasis, two channel audio, no ISRC code. [ NO ] COPY Sets or clears the copy permitted flag. [ NO ] PRE_EMPHASIS Sets or clears the pre emphasis flag (only for audio tracks). TWO_CHANNEL_AUDIO Indicates that track contains two channel audio data (only for audio tracks). FOUR_CHANNEL_AUDIO Indicates that track contains four channel audio data (only for audio tracks). ISRC "CCOOOYYSSSSS" Sets ISRC code of track (only for audio tracks). C: country code (upper case letters or digits) O: owner code (upper case letters or digits) Y: year (digits) S: serial number (digits) An optional CD-TEXT block that defines the CD-TEXT data for this track may follow. See the CD-TEXT section below for the syntax of the CD-TEXT block contents. CD_TEXT { ... } At least one of the following statements must appear to specify the data for the current track. Lengths and start positions may be expressed in samples (1/44100 seconds) for audio tracks or in bytes for data tracks. It is also possible to give the length in blocks with the MSF format 'MM:SS:FF' specifying minutes, seconds and frames (0 <= 'FF' < 75) . A frame equals one block. If more than one statement is used the track will be composed by concate‐ nating the data in the specified order. SILENCE <length> Adds zero audio data of specified length to the current audio track. Useful to create silent pre-gaps. ZERO <length> Adds zero data to data tracks. Must be used to define pre- or post-gaps between tracks of different mode. [ FILE | AUDIOFILE ] "<filename>" <start> [ <length> ] Adds the audio data of specified file to the current audio track. It is possible to select a portion of an audio file with <start> and <length> which allows non destructive cutting. The first sam‐ ple of an audio file is addressed with <start> = 0. If <length> is omitted or set to 0 all audio data from <start> until the end of file is used. Audio files may have raw or WAVE format with 16 bits per sample, 44.1 kHz sampling rate, stereo. Raw files must have the layout 'MSBLeft LSBLeft MSBRight LSBRight ...' (big endian byte order). WAVE files are expected to have little endian byte order. The option --swap reverses the expected byte order for all raw and WAVE files. Only filenames with a ".wav" ending are treated as WAVE files, all other names are assumed to be raw audio files. Use tools like sox(1) to convert other file formats to supported for‐ mats. Specifying a "-" as filename causes data to be read from STDIN. Currently only raw files are supported from STDIN. If you are unsure about the byte order of your audio files try the command 'show-data'. If the byte order is correct you will see a sequence of increasing or decreasing numbers for both channels. Otherwise numbers are jumping between very high and low values - high volume static. DATAFILE "<filename>" [ <length> ] Adds data from given file to the current data track. If <length> is omitted the actual file length will be used. FIFO "<fifo path>" <length> Adds data from specified FIFO path to the current audio or data track. <length> must specify the amount of data that will be read from the FIFO. The value is always in terms of bytes (scalar value) or in terms of the block length (MSF value). START [ MM:SS:FF ] Defines the length of the pre-gap (position where index switches from 0 to 1). If the MSF value is omitted the current track length is used. If the current track length is not a multiple of the block length the pre-gap length will be rounded up to next block boundary. If no START statement is given the track will not have a pre-gap. PREGAP MM:SS:FF This is an alternate way to specify a pre-gap with zero audio data. It may appear before the first SILENCE, ZERO or FILE state‐ ment. Either PREGAP or START can be used within a track specifica‐ tion. It is equivalent to the sequence SILENCE MM:SS:FF START for audio tracks or ZERO MM:SS:FF START for data tracks. Nothing prevents mixing 'DATAFILE'/'ZERO' and 'AUDIOFILE'/'SILENCE' statements within the same track. The results, however, are undefined. The end of a track specification may contain zero or more index increment statements: INDEX MM:SS:FF Increments the index number at given position within the track. The first statement will increment from 1 to 2. The position is relative to the real track start, not counting an existing pre- gap. CD-TEXT Blocks A CD-TEXT block may be placed in the global section to define data valid for the whole CD and in each track specification of a toc-file. The global section must define a language map that is used to map a language- number to country codes. Up to 8 different languages can be defined: LANGUAGE_MAP { 0 : c1 1 : c2 ... 7 : c7 } The country code may be an integer value in the range 0..255 or one of the following countries (the corresponding integer value is placed in braces behind the token): EN(9, English) It is just necessary to define a mapping for the used languages. If no mapping exists for a language-number the data for this language will be ignored. For each language a language block must exist that defines the actual data for a certain language. LANGUAGE language-number { cd-text-item cd-text-data cd-text-item cd- text-data ... } Defines the CD-TEXT items for given language-number which must be defined in the language map. The cd-text-data may be either a string enclosed by " or binary data like { 0, 10, 255, ... } where each integer number must be in the range 0..255. The cd-text-item may be one of the following: TITLE String data: Title of CD or track. PERFORMER String data. SONGWRITER String data. COMPOSER String data. ARRANGER String data. MESSAGE String data. Message to the user. DISC_ID String data: Should only appear in the global CD-TEXT block. The format is usually: XY12345 GENRE Mixture of binary data (genre code) and string data. Should only appear in the global CD-TEXT block. Useful entries will be created by gcdmaster. TOC_INFO1 Binary data: Optional table of contents 1. Should only appear in the global CD-TEXT block. TOC_INFO2 Binary data: Optional table of contents 2. Should only appear in the global CD-TEXT block. UPC_EAN String data: This item should only appear in the global CD-TEXT block. Was always an empty string on the CD-TEXT CDs I had access to. ISRC String data: ISRC code of track. The format is usually: CC-OOO-YY- SSSSS SIZE_INFO Binary data: Contains summary about all CD-TEXT data and should only appear in the global CD-TEXT block. The data will be automat‐ ically (re)created when the CD-TEXT data is written. If one of the CD-TEXT items TITLE, PERFORMER, SONGWRITER, COM‐ POSER, ARRANGER, ISRC is defined for at least on track or in the global section it must be defined for all tracks and in the global section. If a DISC_ID item is defined in the global section, an ISRC entry must be defined for each track. Examples Simple track without pre-gap with all audio data from WAVE file "data.wav": CD_DA TRACK AUDIO FILE "data.wav" 0 Standard track with two second pre-gap, ISRC code and CD-TEXT: CD_DA CD_TEXT { LANGUAGE_MAP { 0 : EN } LANGUAGE 0 { TITLE "CD Title" PERFORMER "Performer" DISC_ID "XY12345" UPC_EAN "" } } TRACK AUDIO ISRC "DEXXX9800001" CD_TEXT { LANGUAGE 0 { TITLE "Track Title" PERFORMER "Performer" ISRC "DE-XXX-98-00001" } } PREGAP 0:2:0 FILE "data.wav" 0 Track with 10 second pre-gap containing audio data from raw file "data.cdr": CD_DA TRACK AUDIO FILE "data.cdr" 0 START 0:10:0 Composed track with data from different files. Pre-gap data and length is taken from "pregapdata.wav". The first minute of "track.cdr" is omitted and two seconds silence are inserted at '2:0:0'. Index will be incre‐ mented after 2 and 4 minutes past track start: CD_DA TRACK AUDIO FILE "pregapdata.wav" 0 START FILE "track.cdr" 1:0:0 1:0:0 SILENCE 0:2:0 FILE "track.cdr" 2:0:0 INDEX 2:0:0 INDEX 4:0:0 Mixed mode CD with a data track as first track followed by two audio tracks. CD_ROM TRACK MODE1 DATAFILE "data_1" ZERO 00:02:00 // post-gap TRACK AUDIO SILENCE 00:02:00 // pre-gap START FILE "data_2.wav" 0 TRACK AUDIO FILE "data_3.wav" 0 CUE FILES Cue files may be used wherever a toc-file is expected. The corresponding bin file is not taken from the FILE statement of a cue file but con‐ structed from the cue file name by replacing ".cue" by ".bin". The cue file must have exactly one FILE statement. Currently, following track modes are supported: MODE1/2048, MODE1/2352, MODE2/2336, MODE2/2352. The CATALOG, ISRC and POSTGAP statements are parsed but not evaluated, yet. SETTINGS Some of the command line options can be stored as settings at following locations. The files will be read on startup of cdrdao in that order: 1. /etc/cdrdao.conf 2. /etc/defaults/cdrdao 3. /etc/default/cdrdao 4. $HOME/.cdrdao Command line options will overwrite the loaded settings. The settings file contains name - value pairs separated by a colon. String values must be enclosed by ". The file is automatically written if the command line option --save is used but it is also possible to modify it manually. Fol‐ lowing values are defined: write_device Device used for operations simulate, write, copy, blank, disk-info and unlock. Corresponding option: --device write_driver Driver (including driver options) that is used for operations sim‐ ulate, write, copy, blank, disk-info and unlock. Corresponding option: --driver write_speed Specifies writing speed. Corresponding option: --speed write_buffers Specifies fifo buffers used for recording. Corresponding option: --buffers read_device Device used for operations read-toc, read-cd and copy. Corre‐ sponding option: --device or --source-device read_driver Driver (including driver options) used for operations read-toc, read-cd and copy. Corresponding option: --driver or --source- driver read_paranoia_mode Paranoia mode used for operations read-cd and copy. Corresponding option: --paranoia-mode cddb_server_list CDDB server list for read-cddb. Corresponding option: --cddb- servers cddb_timeout CDDB connection timeout in seconds used by read-cddb. Correspond‐ ing option: --cddb-timeout cddb_directory Local directory where fetched CDDB records will be stored, used by read-cddb. Corresponding option: --cddb-directory tmp_file_dir Directory where temporary WAV files will be created from decoding MP3 and Ogg Vorbis files. Corresponding option: --tmpdir BUGS If the program is terminated during the write/simulation process used IPC resources may not be released. Use ipcs(8) and ipcrm(8) to delete them. AUTHOR Andreas Mueller<EMAIL_ADDRESS>[DEFUNCT] Denis Leroy<EMAIL_ADDRESS>Manuel Clos<EMAIL_ADDRESS>SEE ALSO gcdmaster(1), cdrecord(1), cdda2wav(1), cdparanoia(1), sox(1), ipcs(8), ipcrm(8) Jan 18, 2006 CDRDAO(1)