<!-- $Id: admin.sgml,v 1.21 1999-03-20 12:40:32 jesusr Exp $ --> <!-- The FreeBSD Documentation Project --> <sect> <heading>System Administration<label id="admin"></heading> <sect1> <heading>Where are the system start-up configuration files?</heading> <p>From 2.0.5R to 2.2.1R, the primary configuration file is <tt>/etc/sysconfig</tt>. All the options are to be specified in this file and other files such as <htmlurl url="http://www.freebsd.org/cgi/man.cgi?rc" name="/etc/rc"> and <tt>/etc/netstart</tt> just include it. <p>Look in the <tt>/etc/sysconfig</tt> file and change the value to match your system. This file is filled with comments to show what to put in there. <p>In post-2.2.1 and 3.0, <tt>/etc/sysconfig</tt> was renamed to a more self-describing <htmlurl url="http://www.freebsd.org/cgi/man.cgi?rc.conf(5)" name="rc.conf"> file and the syntax cleaned up a bit in the process. <tt>/etc/netstart</tt> was also renamed to <tt>/etc/rc.network</tt> so that all files could be copied with a <tt><htmlurl url="http://www.freebsd.org/cgi/man.cgi?cp" name="cp"> /usr/src/etc/rc* /etc</tt> command. <p><tt>/etc/rc.local</tt> is here as always and may be used to start up additional local services like <htmlurl url="http://www.freebsd.org/cgi/ports.cgi?^inn" name="INN"> or set custom options. <p>The <tt>/etc/rc.serial</tt> is for serial port initialization (e.g. locking the port characteristics, and so on.). <p>The <tt>/etc/rc.i386</tt> is for Intel-specifics settings, such as iBCS2 emulation or the PC system console configuration. <p>Starting with 2.1.0R, you can also have "local" startup files in a directory specified in <tt>/etc/sysconfig</tt> (or <tt>/etc/rc.conf</tt>): <verb> # Location of local startup files. local_startup=/usr/local/etc/rc.local.d </verb> <p>Each file ending in <tt/.sh/ will be executed in alphabetical order. <p>If you want to ensure a certain execution order without changing all the file names, you can use a scheme similar to the following with digits prepended to each file name to insure the ordering: <verb> 10news.sh 15httpd.sh 20ssh.sh </verb> <p>It can be seen as ugly (or SysV :-)) but it provides a simple and regular scheme for locally-added packages without resorting to magical editing of <tt>/etc/rc.local</tt>. Many of the ports/packages assume that <tt>/usr/local/etc/rc.d</tt> is a local startup directory. <sect1> <heading>How do I add a user easily?</heading> <p>Use the <htmlurl url="http://www.freebsd.org/cgi/man.cgi?adduser" name="adduser"> command. <p>There is another package called ``<tt/new-account/'' also written in Perl by Ollivier Robert. Ask <tt><roberto@FreeBSD.ORG></tt> about it. It is currently undergoing further development. <p>To remove the user again, use the <htmlurl url="http://www.freebsd.org/cgi/man.cgi?rmuser" name="rmuser"> command. <sect1> <heading>How can I add my new hard disk to my FreeBSD system?</heading> <p>See the Disk Formatting Tutorial at <url url="../tutorials/diskformat/" name="www.freebsd.org">. <sect1> <heading>I have a new removable drive, how do I use it?</heading> <p>Whether it's a removable drive like a ZIP or an EZ drive (or even a floppy, if you want to use it that way), or a new hard disk, once it's installed and recognized by the system, and you have your cartridge/floppy/whatever slotted in, things are pretty much the same for all devices. <p><label id="disklabel">(this section is based on <url url="http://www.vmunix.com/mark/FreeBSD/ZIP-FAQ.html" name="Mark Mayo's ZIP FAQ">) <p>If it's a ZIP drive or a floppy , you've already got a DOS filesystem on it, you can use a command like this: <verb> mount -t msdos /dev/fd0c /floppy </verb> <p>if it's a floppy, or this: <verb> mount -t msdos /dev/sd2s4 /zip </verb> <p>for a ZIP disk with the factory configuration. <p>For other disks, see how they're laid out using <tt/fdisk/ or <tt>/stand/sysinstall</tt>. <p>The rest of the examples will be for a ZIP drive on sd2, the third SCSI disk. <p>Unless it's a floppy, or a removable you plan on sharing with other people, it's probably a better idea to stick a BSD file system on it. You'll get long filename support, at least a 2X improvement in performance, and a lot more stability. First, you need to redo the DOS-level partitions/filesystems. You can either use <htmlurl url="http://www.freebsd.org/cgi/man.cgi?fdisk" name="fdisk"> or <tt>/stand/sysinstall</tt>, or for a small drive that you don't want to bother with multiple operating system support on, just blow away the whole FAT partition table (slices) and just use the BSD partitioning: <verb> dd if=/dev/zero of=/dev/rsd2 count=2 disklabel -Brw sd2 auto </verb> <p>You can use disklabel or <tt>/stand/sysinstall</tt> to create multiple BSD partitions. You'll certainly want to do this if you're adding swap space on a fixed disk, but it's probably irrelevant on a removable drive like a ZIP. <p>Finally, create a new file system, this one's on our ZIP drive using the whole disk: <verb> newfs /dev/rsd2c </verb> <p>and mount it: <verb> mount /dev/sd2c /zip </verb> <p>and it's probably a good idea to add a line like this to <htmlurl url="http://www.freebsd.org/cgi/man.cgi?fstab" name="/etc/fstab"> so you can just type "mount /zip" in the future: <verb> /dev/sd2c /zip ffs rw,noauto 0 0 </verb> <sect1> <heading>How do I mount a secondary DOS partition?</heading> <p>The secondary DOS partitions are found after ALL the primary partitions. For example, if you have an "E" partition as the second DOS partition on the second SCSI drive, you need to create the special files for "slice 5" in /dev, then mount /dev/sd1s5: <verb> # cd /dev # ./MAKEDEV sd1s5 # mount -t msdos /dev/sd1s5 /dos/e </verb> <sect1> <heading>Can I mount other foreign filesystems under FreeBSD?</heading> <p><bf/ Digital UNIX/ UFS CDROMs can be mounted directly on FreeBSD. Mounting disk partitions from Digital UNIX and other systems that support UFS may be more complex, depending on the details of the disk partitioning for the operating system in question. <p><bf/ Linux/: 2.2 and later have support for <bf/ext2fs/ partitions. See <htmlurl url="http://www.freebsd.org/cgi/man.cgi?mount_ext2fs" name="mount_ext2fs"> for more information. <p><bf/ NT/: A read-only NTFS driver exists for FreeBSD. For more information, see this tutorial by Mark Ovens at <htmlurl url="http://www.users.globalnet.co.uk/~markov/ntfs_install.html" name="http://www.users.globalnet.co.uk/~markov/ntfs_install.html">. <p>Any other information on this subject would be appreciated. <sect1> <heading>How can I use the NT loader to boot FreeBSD?</heading> <p>The general idea is that you copy the first sector of your native root FreeBSD partition into a file in the DOS/NT partition. Assuming you name that file something like <tt>c:\bootsect.bsd</tt> (inspired by <tt>c:\bootsect.dos</tt>), you can then edit the <tt>c:\boot.ini</tt> file to come up with something like this: <verb> [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows NT" C:\BOOTSECT.BSD="FreeBSD" C:\="DOS" </verb> <p>This procedure assumes that DOS, NT, FreeBSD, or whatever have been installed into their respective fdisk partitions on the <bf/same/ disk. In my case DOS & NT are in the first fdisk partition and FreeBSD is in the second. I also installed FreeBSD to boot from its native partition, <bf/not/ the disk MBR. <p>Mount a DOS-formatted floppy (if you've converted to NTFS) or the FAT partition, under, say, <tt>/mnt</tt>. <verb> dd if=/dev/rsd0a of=/mnt/bootsect.bsd bs=512 count=1 </verb> <p>Reboot into DOS or NT. NTFS users copy the <tt/bootsect.bsd/ and/or the <tt/bootsect.lnx/ file from the floppy to <tt/C:\/. Modify the attributes (permissions) on <tt/boot.ini/ with: <verb> attrib -s -r c:\boot.ini </verb> <p>Edit to add the appropriate entries from the example <tt/boot.ini/ above, and restore the attributes: <verb> attrib -r -s c:\boot.ini </verb> <p>If FreeBSD is booting from the MBR, restore it with the DOS ``<tt/fdisk/'' command after you reconfigure them to boot from their native partitions. <sect1> <heading> How do I boot FreeBSD and Linux from LILO? </heading> <p>If you have FreeBSD and Linux on the same disk, just follow LILO's installation instructions for booting a non-Linux operating system. Very briefly, these are: <p>Boot Linux, and add the following lines to <tt>/etc/lilo.conf</tt>: <verb> other=/dev/hda2 table=/dev/hda label=FreeBSD </verb> (the above assumes that your FreeBSD slice is known to Linux as <tt>/dev/hda2</tt>; tailor to suit your setup). Then, run <tt>lilo</tt> as root and you should be done. <p>If FreeBSD resides on another disk, you need to add ``<tt>loader=/boot/chain.b</tt>'' to the LILO entry. For example: <verb> other=/dev/sdb4 table=/dev/sdb loader=/boot/chain.b label=FreeBSD </verb> <p>In some cases you may need to specify the BIOS drive number to the FreeBSD boot loader to successfully boot off the second disk. For example, if your FreeBSD SCSI disk is probed by BIOS as BIOS disk 1, at the FreeBSD boot loader prompt you need to specify: <verb> Boot: 1:sd(0,a)/kernel </verb> <p>On FreeBSD 2.2.5 and later, you can configure <htmlurl url="http://www.freebsd.org/cgi/man.cgi?boot(8)" name="boot(8)"> to automatically do this for you at boot time. <p>The <htmlurl url="http://sunsite.unc.edu/LDP/HOWTO/mini/Linux+FreeBSD.html" name="Linux+FreeBSD mini-HOWTO"> is a good reference for FreeBSD and Linux interoperability issues. <sect1> <heading> How do I boot FreeBSD and Linux using BootEasy? </heading> <p>Install LILO at the start of your Linux boot partition instead of in the Master Boot Record. You can then boot LILO from BootEasy. <p>If you're running Windows-95 and Linux this is recommended anyway, to make it simpler to get Linux booting again if you should need to reinstall Windows95 (which is a Jealous Operating System, and will bear no other Operating Systems in the Master Boot Record). <sect1> <heading> Will a ``dangerously dedicated'' disk endanger my health? </heading> <p><label id="dedicate">The installation procedure allows you to chose two different methods in partitioning your harddisk(s). The default way makes it compatible with other operating systems on the same machine, by using fdisk table entries (called ``slices'' in FreeBSD), with a FreeBSD slice that employs partitions of its own. Optionally, one can chose to install a boot-selector to switch between the possible operating systems on the disk(s). The alternative uses the entire disk for FreeBSD, and makes no attempt to be compatible with other operating systems. <p>So why it is called ``dangerous''? A disk in this mode doesn't contain what normal PC utilities would consider a valid fdisk table. Depending on how well they have been designed, they might complain at you once they are getting in contact with such a disk, or even worse, they might damage the BSD bootstrap without even asking or notifying you. In addition, the ``dangerously dedicated'' disk's layout is known to confuse many BIOSsen, including those from AWARD (eg. as found in HP Netserver and Micronics systems as well as many others) and Symbios/NCR (for the popular 53C8xx range of SCSI controllers). This isn't a complete list, there are more. Symptoms of this confusion include the "read error" message printed by the FreeBSD bootstrap when it can't find itself, as well as system lockups when booting. <p>Why have this mode at all then? It only saves a few kbytes of disk space, and it can cause real problems for a new installation. ``Dangerously dedicated'' mode's origins lie in a desire to avoid one of the most common problems plaguing new FreeBSD installers - matching the BIOS ``geometry'' numbers for a disk to the disk itself. <p>``Geometry'' is an outdated concept, but one still at the heart of the PC's BIOS and its interaction with disks. When the FreeBSD installer creates slices, it has to record the location of these slices on the disk in a fashion that corresponds with the way the BIOS expects to find them. If it gets it wrong, you won't be able to boot. <p>``Dangerously dedicated'' mode tries to work around this by making the problem simpler. In some cases, it gets it right. But it's meant to be used as a last-ditch alternative - there are better ways to solve the problem 99 times out of 100. <p>So, how do you avoid the need for ``DD'' mode when you're installing? Start by making a note of the geometry that your BIOS claims to be using for your disks. You can arrange to have the kernel print this as it boots by specifying ``-v'' at the ``boot:'' prompt, or using ``boot -v'' in the loader. Just before the installer starts, the kernel will print a list of BIOS geometries. Don't panic - wait for the installer to start and then use scrollback to read the numbers. Typically the BIOS disk units will be in the same order that FreeBSD lists your disks, first IDE, then SCSI. <p>When you're slicing up your disk, check that the disk geometry displayed in the FDISK screen is correct (ie. it matches the BIOS numbers); if it's wrong, use the ``g'' key to fix it. You may have to do this if there's absolutely nothing on the disk, or if the disk has been moved from another system. Note that this is only an issue with the disk that you're going to boot from; FreeBSD will sort itself out just fine with any other disks you may have. <p>Once you've got the BIOS and FreeBSD agreeing about the geometry of the disk, your problems are almost guaranteed to be over, and with no need for ``DD'' mode at all. If, however, you are still greeted with the dreaded ``read error'' message when you try to boot, it's time to cross your fingers and go for it - there's nothing left to lose. <p>To return a ``dangerously dedicated'' disk for normal PC use, there are basically two options. The first is, you write enough NULL bytes over the MBR to make any subsequent installation believe this to be a blank disk. You can do this for example with <verb> dd if=/dev/zero of=/dev/rsd0 count=15 </verb> <p>Alternatively, the undocumented DOS ``feature'' <verb> fdisk /mbr </verb> <p>will to install a new master boot record as well, thus clobbering the BSD bootstrap. <sect1> <heading>How can I add more swap space?</heading> <p>The best way is to increase the size of your swap partition, or take advantage of this convenient excuse to add another disk. The general rule of thumb is to have around 2x the swap space as you have main memory. However, if you have a very small amount of main memory you may want to configure swap beyond that. It is also a good idea to configure sufficient swap relative to anticipated future memory upgrades so you do not have to futz with your swap configuration later. <p>Adding swap onto a separate disk makes things faster than simply adding swap onto the same disk. As an example, if you are compiling source located on one disk, and the swap is on another disk, this is much faster than both swap and compile on the same disk. This is true for SCSI disks specifically. <p>When you have several disks, configuring a swap partition on each one is usually beneficial, even if you wind up putting swap on a work disk. Typically, each fast disk in your system should have some swap configured. FreeBSD supports up to 4 interleaved swap devices by default. When configuring multiple swap partitions you generally want to make them all about the same size, but people sometimes make their primary swap parition larger in order to accomodate a kernel core dump. Your primary swap partition must be at least as large as main memory in order to be able to accomodate a kernel core. <p>IDE drives are not able to allow access to both drives on the same channel at the same time (FreeBSD doesn't support mode 4, so all IDE disk I/O is ``programmed''). I would still suggest putting your swap on a separate drive however. The drives are so cheap, it is not worth worrying about. <p>Swapping over NFS is only recommended if you do not have a local disk to swap to. Swapping over NFS is slow and inefficient in FreeBSD releases prior to 4.x, but reasonably fast in releases greater or equal to 4.0. Even so, it will be limited to the network bandwidth available and puts an additional burden on the NFS server. <p>Here is an example for 64Mb vn-swap (<tt>/usr/swap0</tt>, though of course you can use any name that you want). <p>Make sure your kernel was built with the line <verb> pseudo-device vn 1 #Vnode driver (turns a file into a device) </verb> <p>in your config-file. The GENERIC kernel already contains this. <enum> <item>create a vn-device <verb> cd /dev sh ./MAKEDEV vn0 </verb> <item>create a swapfile (<tt>/usr/swap0</tt>) <verb> dd if=/dev/zero of=/usr/swap0 bs=1024k count=64 </verb> <item>set proper permissions on (<tt>/usr/swap0</tt>) <verb> chmod 0600 /usr/swap0 </verb> <item>enable the swap file in <tt>/etc/rc.conf</tt> <verb> swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired. </verb> <item>reboot the machine </enum> <p>To enable the swap file immediately, type <verb> vnconfig -ce /dev/vn0c /usr/swap0 swap </verb> <sect1> <heading>I'm having problems setting up my printer.</heading> <p>Please have a look at the Handbook entry on printing. It should cover most of your problem. See the <url url="../handbook/printing.html" name="Handbook entry on printing."> <sect1> <heading>The keyboard mappings are wrong for my system.</heading> <p>The kbdcontrol program has an option to load a keyboard map file. Under <tt>/usr/share/syscons/keymaps</tt> are a number of map files. Choose the one relevant to your system and load it. <verb> kbdcontrol -l uk.iso </verb> <p>Both the <tt>/usr/share/syscons/keymaps</tt> and the <tt/.kbd/ extension are assumed by <htmlurl url="http://www.freebsd.org/cgi/man.cgi?kbdcontrol" name="kbdcontrol">. <p>This can be configured in <tt>/etc/sysconfig</tt> (or <htmlurl url="http://www.freebsd.org/cgi/man.cgi?rc.conf(5)" name="rc.conf">). See the appropriate comments in this file. <p>In 2.0.5R and later, everything related to text fonts, keyboard mapping is in <tt>/usr/share/examples/syscons</tt>. <p>The following mappings are currently supported: <itemize> <!-- generate by `kbdmap -p' --> <item>Belgian ISO-8859-1 <item>Brazilian 275 keyboard Codepage 850 <item>Brazilian 275 keyboard ISO-8859-1 <item>Danish Codepage 865 <item>Danish ISO-8859-1 <item>French ISO-8859-1 <item>German Codepage 850 <item>German ISO-8859-1 <item>Italian ISO-8859-1 <item>Japanese 106 <item>Japanese 106x <item>Latin American <item>Norwegian ISO-8859-1 <item>Polish ISO-8859-2 (programmer's) <item>Russian Codepage 866 (alternative) <item>Russian koi8-r (shift) <item>Russian koi8-r <item>Spanish ISO-8859-1 <item>Swedish Codepage 850 <item>Swedish ISO-8859-1 <item>Swiss-German ISO-8859-1 <item>United Kingdom Codepage 850 <item>United Kingdom ISO-8859-1 <item>United States of America ISO-8859-1 <item>United States of America dvorak <item>United States of America dvorakx </itemize> <sect1> <heading>I can't get user quotas to work properly.</heading> <p> <enum> <item>Don't turn on quotas on '/', <item>Put the quota file on the file system that the quotas are to be enforced on. ie: <verb> FS QUOTA FILE /usr /usr/admin/quotas /home /home/admin/quotas ... </verb> </enum> <sect1> <heading>What's inappropriate about my ccd?</heading> <p>The symptom of this is: <verb> # ccdconfig -C ccdconfig: ioctl (CCDIOCSET): /dev/ccd0c: Inappropriate file type or format # </verb> <p>This usually happens when you are trying to concatenate the `c' partitions, which default to type `unused'. The ccd driver requires the underlying partition type to be FS_BSDFFS. Edit the disklabel of the disks you are trying to concatenate and change the types of partitions to `4.2BSD'. <sect1> <heading>Why can't I edit the disklabel on my ccd?</heading> <p>The symptom of this is: <verb> # disklabel ccd0 (it prints something sensible here, so let's try to edit it) # disklabel -e ccd0 (edit, save, quit) disklabel: ioctl DIOCWDINFO: No disk label on disk; use "disklabel -r" to install initial label # </verb> <p>This is because the disklabel returned by ccd is actually a `fake' one that is not really on the disk. You can solve this problem by writing it back explicitly, as in: <verb> # disklabel ccd0 > /tmp/disklabel.tmp # disklabel -Rr ccd0 /tmp/disklabel.tmp # disklabel -e ccd0 (this will work now) </verb> <sect1> <heading>Does FreeBSD support System V IPC primitives?</heading> <p>Yes, FreeBSD supports System V-style IPC. This includes shared memory, messages and semaphores. You need to add the following lines to your kernel config to enable them. <verb> options SYSVSHM options "SHMMAXPGS=64" # 256Kb of sharable memory options SYSVSEM # enable for semaphores options SYSVMSG # enable for messaging </verb> <p>Recompile and install. <p><bf/NOTE:/ You may need to increase SHMMAXPGS to some ridiculous number like 4096 (16M!) if you want to run GIMP. 256Kb is plenty for X11R6 shared memory. <sect1> <heading> How do I use sendmail for mail delivery with UUCP?<label id="uucpmail"> </heading> <p>The sendmail configuration that ships with FreeBSD is suited for sites that connect directly to the Internet. Sites that wish to exchange their mail via UUCP must install another sendmail configuration file. <p>Tweaking <tt>/etc/sendmail.cf</tt> manually is considered something for purists. Sendmail version 8 comes with a new approach of generating config files via some <htmlurl url="http://www.freebsd.org/cgi/man.cgi?m4" name="m4"> preprocessing, where the actual hand-crafted configuration is on a higher abstraction level. You should use the configuration files under <verb> /usr/src/usr.sbin/sendmail/cf </verb> <p>If you didn't install your system with full sources, the sendmail config stuff has been broken out into a separate source distribution tarball just for you. Assuming you've got your CD-ROM mounted, do: <verb> cd /usr/src tar -xvzf /cdrom/dists/src/ssmailcf.aa </verb> <p>Don't panic, this is only a few hundred kilobytes in size. The file <tt>README</tt> in the <tt>cf</tt> directory can serve as a basic introduction to m4 configuration. <p>For UUCP delivery, you are best advised to use the <em>mailertable</em> feature. This constitutes a database that sendmail can use to base its routing decision upon. <p>First, you have to create your <tt>.mc</tt> file. The directory <tt>/usr/src/usr.sbin/sendmail/cf/cf</tt> is the home of these files. Look around, there are already a few examples. Assuming you have named your file <tt>foo.mc</tt>, all you need to do in order to convert it into a valid <tt>sendmail.cf</tt> is: <verb> cd /usr/src/usr.sbin/sendmail/cf/cf make foo.cf cp foo.cf /etc/sendmail.cf </verb> <p>A typical <tt>.mc</tt> file might look like: <verb> include(`../m4/cf.m4') VERSIONID(`Your version number') OSTYPE(bsd4.4) FEATURE(nodns) FEATURE(nocanonify) FEATURE(mailertable) define(`UUCP_RELAY', your.uucp.relay) define(`UUCP_MAX_SIZE', 200000) MAILER(local) MAILER(smtp) MAILER(uucp) Cw your.alias.host.name Cw youruucpnodename.UUCP </verb> <p>The <em>nodns</em> and <em>nocanonify</em> features will prevent any usage of the DNS during mail delivery. The <em>UUCP_RELAY</em> clause is needed for bizarre reasons, don't ask. Simply put an Internet hostname there that is able to handle .UUCP pseudo-domain addresses; most likely, you will enter the mail relay of your ISP there. <p>Once you've got this, you need this file called <tt>/etc/mailertable</tt>. A typical example of this gender again: <verb> # # makemap hash /etc/mailertable.db < /etc/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom:sax </verb> <p>As you can see, this is part of a real-life file. The first three lines handle special cases where domain-addressed mail should not be sent out to the default route, but instead to some UUCP neighbor in order to ``shortcut'' the delivery path. The next line handles mail to the local Ethernet domain that can be delivered using SMTP. Finally, the UUCP neighbors are mentioned in the .UUCP pseudo-domain notation, to allow for a ``uucp-neighbor!recipient'' override of the default rules. The last line is always a single dot, matching everything else, with UUCP delivery to a UUCP neighbor that serves as your universal mail gateway to the world. All of the node names behind the <tt>uucp-dom:</tt> keyword must be valid UUCP neighbors, as you can verify using the command <tt>uuname</tt>. <p>As a reminder that this file needs to be converted into a DBM database file before being usable, the command line to accomplish this is best placed as a comment at the top of the mailertable. You always have to execute this command each time you change your mailertable. <p>Final hint: if you are uncertain whether some particular mail routing would work, remember the <tt>-bt</tt> option to sendmail. It starts sendmail in <em>address test mode</em>; simply enter ``0 '', followed by the address you wish to test for the mail routing. The last line tells you the used internal mail agent, the destination host this agent will be called with, and the (possibly translated) address. Leave this mode by typing Control-D. <verb> j@uriah 191% sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 0 foo@interface-business.de rewrite: ruleset 0 input: foo @ interface-business . de ... rewrite: ruleset 0 returns: $# uucp-dom $@ if-bus $: foo \ < @ interface-business . de > > ^D j@uriah 192% </verb> <sect1> <heading> How do I set up mail with a dialup connection to the 'net? <label id="ispmail"> </heading> <p>If you've got a statically assigned IP number, you should not need to adjust anything from the default. Set your host name up as your assigned internet name and sendmail will do the rest. <p>If you've got a dynamically assigned IP number and use a dialup <bf/ppp/ connection to the internet, you will probably be given a mailbox on your ISPs mail server. Lets assume your ISPs domain is <tt/myISP.com/, and that your user name is <tt/user/. Lets also assume you've called your machine <tt/bsd.home/ and that your ISP has told you that you may use <tt/relay.myISP.com/ as a mail relay. <p>In order to retrieve mail from your mailbox, you'll need to install a retrieval agent. <bf/Fetchmail/ is a good choice as it supports many different protocols. Usually, POP3 will be provided by your ISP. If you've chosen to use user-ppp, you can automatically fetch your mail when a connection to the 'net is established with the following entry in <tt>/etc/ppp/ppp.linkup</tt>: <verb> MYADDR: !bg su user -c fetchmail </verb> <p>If you are using <tt>sendmail</tt> (as shown below) to deliver mail to non-local accounts, put the command <verb> !bg su user -c "sendmail -q" </verb> after the above shown entry. This forces sendmail to process your mailqueue as soon as the connection to the 'net is established. <p>I'm assuming that you have an account for <tt/user/ on <tt/bsd.home/. In the home directory of <tt/user/ on <tt/bsd.home/, create a <tt/.fetchmailrc/ file: <verb> poll myISP.com protocol pop3 fetchall pass MySecret; </verb> <p>Needless to say, this file should not be readable by anyone except <tt/user/ as it contains the password <tt/MySecret/. <p>In order to send mail with the correct <bf/from:/ header, you must tell sendmail to use <tt/user@myISP.com/ rather than <tt/user@bsd.home/. You may also wish to tell sendmail to send all mail via <tt/relay.myISP.com/, allowing quicker mail transmission. <p>The following <tt/.mc/ file should suffice: <verb> VERSIONID(`bsd.home.mc version 1.0') OSTYPE(bsd4.4)dnl FEATURE(nouucp)dnl MAILER(local)dnl MAILER(smtp)dnl Cwlocalhost Cwbsd.home MASQUERADE_AS(`myISP.com')dnl FEATURE(allmasquerade)dnl FEATURE(masquerade_envelope)dnl FEATURE(nocanonify)dnl FEATURE(nodns)dnl define(SMART_HOST, `relay.myISP.com') Dmbsd.home define(`confDOMAIN_NAME',`bsd.home')dnl define(`confDELIVERY_MODE',`deferred')dnl </verb> <p>Refer to the previous section for details of how to turn this <tt/.mc/ file into a <tt/sendmail.cf/ file. Also, don't forget to restart sendmail after updating sendmail.cf. <sect1> <heading>Eek! I forgot the root password!</heading> <p>Don't Panic! Simply restart the system, type -s at the Boot: prompt to enter Single User mode. At the question about the shell to use, hit ENTER. You'll be dropped to a # prompt. Enter <tt>mount -u /</tt> to remount your root filesystem read/write, then run <tt/mount -a/ to remount all the filesystems. Run <tt/passwd root/ to change the root password then run <tt/exit/ to continue booting. <sect1> <heading>How do I keep Control-Alt-Delete from rebooting the system? </heading> <p>Edit the keymap you are using for the console and replace the <tt/boot/ keywords with <tt/nop/. The default keymap is <tt>/usr/share/syscons/keymaps/us.iso.kbd</tt>. You may have to instruct <tt>/etc/rc.conf</tt> to load this keymap explicitly for the change to take effect. Of course if you are using an alternate keymap for your country, you should edit that one instead. <sect1> <heading>How do I reformat DOS text files to UNIX ones?</heading> <p>Simply use this perl command: <verb> perl -i.bak -npe 's/\r\n/\n/g' file ... </verb> <p>file is the file(s) to process. The modification is done in-place, with the original file stored with a .bak extension. <p>Alternatively you can use the <url url="/cgi/man.cgi?tr" name="tr(1)"> command: <verb> tr -d '\r' < dos-text-file > unix-file </verb> <p>dos-text-file is the file containing DOS text while unix-file will contain the converted output. This can be quite a bit faster than using perl. <sect1> <heading>How do I kill processes by name?</heading> <p>Use <url url="/cgi/man.cgi?killall" name="killall(1)">. <sect1> <heading>Why is su bugging me about not being in root's ACL? </heading> <p>The error comes from the Kerberos distributed authentication system. The problem isn't fatal but annoying. You can either run su with the -K option, or uninstall Kerberos as described in the next question. <sect1> <heading>How do I uninstall Kerberos?</heading> <p>To remove Kerberos from the system, reinstall the bin distribution for the release you are running. If you have the CDROM, you can mount the cd (we'll assume on /cdrom) and run <verb> cd /cdrom/bin ./install.sh </verb> <sect1> <heading>How do I add pseudoterminals to the system?</heading> <p>If you have lots of telnet, ssh, X, or screen users, you'll probably run out of pseudoterminals. Here's how to add more: <enum> <item>Build and install a new kernel with the line <verb> pseudo-device pty 256 </verb> <p>in the configuration file. <item>Run the command <verb> # cd /dev # ./MAKEDEV pty{1,2,3,4,5,6,7} </verb> <p>to make 256 device nodes for the new terminals. <item>Edit <tt>/etc/ttys</tt> and add lines for each of the 256 terminals. They should match the form of the existing entries, i.e. they look like <verb> ttyqc none network </verb> <p>The order of the letter designations is <tt>tty[pqrsPQRS][0-9a-v]</tt>, using a regular expression. <item>Reboot the system with the new kernel and you're ready to go. </enum> </sect>