\" This document is formatted with the GNU Roff formatting scheme. \" View with "man -l readme.2" .color .defcolor r rgb #FF0000 .defcolor g rgb #00FF00 .defcolor b rgb #0000FF .defcolor m rgb #FF00FF .ce \fBCynosure 2\fR .in 4 This tree contains a set of documentation for the Cynosure kernel's second iteration. .in 0 .ce \fBSummary\fR .in 4 Cynosure 2 is the second iteration of the Cynosure kernel. It features a more posix-like kernel API, with even stricter distinctions between kernel and user space. It requires that all filesystem drivers have permissions support, and emulates this feature on managed filesystems where it is not present. .in 4 The Cynosure 2 kernel differentiates itself from the original Cynosure, and most other Unix-likes, by abstracting everything as URL rather than as a file (see `URLs.2'). .ce \fBBuild Configuration\fR .in 4 This section describes the process of configuring Cynosure 2's build script. .in 4 Configuration entries are read from .config, with each line in the following format: .in 8 \fBKEY=VALUE \mb# comment\m[default]\fR .in 4 There is a default configuration in .defconfig in the source tree. .in 4 All available configuration options, each of which is paired with a description, are listed here: .in 6 \fBCOMPONENT_3DPRINTER\fR=[\fByn\fR] .in 8 Whether to enable kernel support for the 3D Printer component. .in 6 \fBCOMPONENT_ACCESSPOINT\fR=[\fByn\fR] .in 8 Whether to enable kernel support for the access_point component. .in 6 \fBCOMPONENT_CHUNKLOADER\fR=[\fByn\fR] .in 8 Whether to enable kernel support for the chunkloader component. .in 6 \fBCOMPONENT_CRAFTING\fR=[\fByn\fR] .in 6 .in 6 \fBCOMPONENT_DATACARD\fR=[\fByn\fR] .in 8 Whether to use the data card for cryptographic operations (e.g. password hashing) rather than a Lua implementation. This reduces kernel size slightly but the resulting kernel will not boot unless a data card is present. .in 6 \fBCOMPONENT_DATABASE\fR=[\fByn\fR] .in 6 \fBCOMPONENT_DEBUG\fR=[\fByn\fR] .in 6 \fBCOMPONENT_DRIVE\fR=[\fByn\fR] .in 8 Whether to enable kernel support for registering drive components as block devices. This is necessary when FS_SFS=y. .in 6 .in 6 \fBCOMPONENT_EEPROM\fR=[\fByn\fR] .in 6 \fBCOMPONENT_EXPERIENCE\fR=[\fByn\fR] .in 6 \fBCOMPONENT_FILESYSTEM\fR=[\fByn\fR] .in 6 \fBCOMPONENT_GENERATOR\fR=[\fByn\fR] .in 6 \fBCOMPONENT_GEOLYZER\fR=[\fByn\fR] .in 6 \fBCOMPONENT_HOLOGRAM\fR=[\fByn\fR] .in 6 \fBCOMPONENT_INTERNET\fR=[\fByn\fR] .in 6 \fBCOMPONENT_INVENTORYCONTROLLER\fR=[\fByn\fR] .in 6 \fBCOMPONENT_LEASH\fR=[\fByn\fR] .in 6 \fBCOMPONENT_MICROCONTROLLER\fR=[\fByn\fR] .in 8 Whether to enable kernel support for the microcontroller component. .in 6 \fBCOMPONENT_MODEM\fR=[\fByn\fR] .in 8 Whether to enable kernel support for the modem component. This by itself does not do much - but all of the MODEM_* options require it. .in 6 \fBCOMPONENT_MOTIONSENSOR\fR=[\fByn\fR] .in 6 \fBCOMPONENT_NAVIGATION\fR=[\fByn\fR] .in 6 \fBCOMPONENT_NETSPLITTER\fR=[\fByn\fR] .in 6 \fBCOMPONENT_PISTON\fR=[\fByn\fR] .in 6 \fBCOMPONENT_REDSTONE\fR=[\fByn\fR] .in 8 Whether to enable redstone card support. The RS_* options require this. .in 6 \fBCOMPONENT_ROBOT\fR=[\fByn\fR] .in 8 Whether to enable kernel support for the robot component. This by itself does not do anything - but all of the ROBOT_* options require it. .in 6 \fBCOMPONENT_SIGN\fR=[\fByn\fR] .in 6 \fBCOMPONENT_TANKCONTROLLER\fR=[\fByn\fR] .in 6 \fBCOMPONENT_TRACTORBEAM\fR=[\fByn\fR] .in 6 \fBCOMPONENT_TRANSPOSER\fR=[\fByn\fR] .in 6 \fBCOMPONENT_TUNNEL\fR=[\fByn\fR] .in 8 Whether to enable kernel support for using linked cards. .in 6 \fBCOMPONENT_WORLDSENSOR\fR=[\fByn\fR] .in 6 \fBCOMPONENT_CARDDOCK\fR=[\fByn\fR] .in 8 Whether to enable kernel support for automatically registering components in Computeronics card docks. This option is not very expensive for code size. .in 6 \fBPREEMPT_MODE\fR=<good|fast|none> .in 8 How often to insert forced yields into loaded Lua code: .in 10 none - don't insert any, disable this functionality .in 10 fast - force a yield every 0.1s .in 10 good - force a yield every time the yield function is called .in 6 \fBEXEC_CLE\fR=[\fByn\fR] .in 8 Whether to enable support for the Cynosure Lua Executable format. It is highly recommended that you enable this option. .in 6 \fBEXEC_SHEBANG\fR=[\fByn\fR] .in 8 Whether to enable kernel support for scripts starting with a shebang (#!/path/to/interpreter). .in 6 \fBFS_SFS\fR=[\fByn\fR] .in 8 Enable or disable the Simple File System driver. When this option is enabled, the resulting kernel will be able to mount and interact with SFS-formatted volumes. See fs/simplefs.txt for details on the filesystem. .in 6 \fBFS_MANAGED\fR=[\fByn\fR] .in 8 Enabled or disable the managed filesystem driver. .in 6 \fBSCHEME_MISC\fR=[\fByn\fR] .in 8 Whether the kernel should support defining schemes from userspace. When this option is enabled, user programs can register a scheme through the user: scheme. .in 6 \fBSCHEME_EXEC\fR=[\fByn\fR] .in 8 Whether the kernel should support defining custom executable formats from userspace. When this option is enabled, user programs can register custom executable format foo by writing specially formatted data to exec://foo, and read all defined formats by listing the files under exec:/. .in 6 \fBSCHEME_CONFIG\fR .in 8 Whether the kernel should provide a list of enabled features through the kernel://config file. This will effectively return the contents of \fB.config\fR. .in 6 \fBSCHEME_EVENT\fR=[\fByn\fR] .in 8 Whether the kernel should provide easy registration of userspace signal handlers. If this is enabled, user programs can open \fBproc://self/handlers\fR and register handlers on the returned file descriptor with an \fB\mbioctl\m[default]\fR call. .in 6 \fBSCHEME_HTTP\fR=[\fByn\fR] .in 8 Whether to include the http: and https: schemes. These use OpenComputers' Internet Card component to open a HTTP connection. .in 6 \fBSCHEME_TCP\fR=[\fByn\fR] .in 8 Whether to include the tcp: scheme. This uses the Internet Card to maintain a TCP socket. .in 6 \fBSCHEME_COMPONENT\fR=[\fByn\fR] .in 8 Whether to include the component: scheme. This allows user programs to access raw components by first opening a component under this scheme, then using the invoke() system call with the file descriptor returned from that operation. .in 6 \fBPROTOCOL_CFTP\fR=[\fByn\fR] .in 8 Whether to include support for the Cynosure File Transfer Protocol. This is a FTP scheme that works on top of any socket. It is useful for abstraction of differences between protocols (i.e. you can use this over TCP, Minitel, GERT...). .in 6 \fBPROTOCOL_MTEL\fR=[\fByn\fR] .in 8 Whether to include support for the Minitel networking protocol. This adds the mtel: scheme for opening and using Minitel sockets. .in 6 \fBPROTOCOL_GERT\fR=[\fByn\fR] .in 8 Whether to include support for the GERTi networking protocol. This adds the gert: scheme for opening and using GERTi sockets. .in 6 \fBTTY_ENABLE_GPU\fR=[\fByn\fR] .in 8 Enables support for some extra GPU control codes in the VT100 emulator. This feature allows much faster terminal graphics operations but increases kernel size and is nonstandard. .in 6 \fBBIT32\fR=[\fByn\fR] .in 8 Enables emulation of the bit32 library. The resulting kernel will not run on Lua 5.2. .in 6 \fBBUFFER_SIZE\fR=\fBnumber\fR .in 8 The maximum size of kernel stream buffers.