Returning to FreeBSD
Dec. 9th, 2014 01:56 pmA long long time ago
katster introduced me to Livejournal and I figured I'd use it to talk about running FreeBSD where I had previously been proto-blogging to a text file. Several systems and OSes later, I got a new computer and decided to install BSD.
FreeBSD 10.1
Partitioning
The FreeBSD installer does not allow for resizing partitions. I had wanted to shrink an existing ntfs partition and install FreeBSD into the remaining space. Instead, I had to wipe out the partition entirely.
When creating a filesystem, the partitioner defaults to some funny long name that means ufs. If you want to use any other filesystem, it expects you to type in the name of that filesystem as a string. After a brief search of the web, it seems that these magic names are not documented anywhere.
Recommendation: allow a user to select the filesystem from a list. Have a string of text appear on screen to describe the file system (ext is for Linux, ntfs is for Windows, etc)
There is an advanced mode that drops me to a command line, where, according to the FreeBSD Handbook, I can use the fdisk partitioner. As expected, that command is not found.
Booting
FreeBSD would not boot after install. According to a forum post, this is intended behavior in order to comply with some standard.
The solution was to run three gpart commands: one to install the boot code, one to mark the drive as bootable, and one to mark the boot partition as bootable. I forgot to record the exact commands.
X marks the spot where I gave up
I could boot to a command line, but x was not installed. This makes sense for a server-centric operating system, but I would like to have a desktop.
pkg worked as intended and installed xorg and enlightenment without any problem. However, it did not configure them.
xorg loaded into a window manager recognizable as TWM with some xterms open. This is a step ahead of how it used to be when X would open into a crosshatched screen with a cursor. However, I could not move the pointer or type anything into an xterm, so I had to hard-shutdown the system at the power switch. I got as far as being able to right-click in TWM to bring up a menu that offered an "exit" option that closed only the window manager, leaving me stuck in a useless X.
I made two different configuration changes that were each individually supposed to turn on ctrl-alt-backspace so that I could exit X by some means other than hard-powering down a running system, but neither worked.
After having to hard-reboot a logically deadlocked Unix three or four times, I gave up. Some extra incentive was provided by the fan going nuts while the system was idling at a command prompt and not running anything in the background, suggesting that power management was busted. Another reason for giving up was knowing that FreeBSD has a desktop-centric distribution called PC-BSD which I expected might be easier to install and would do the work of configuring a working desktop for me.
Conclusion
I was able to configure and run a FreeBSD desktop with Enlightenment as a relative novice 15 years ago. With far more experience and education behind me, and with the community putting in 15 years of effort to make the free Unixes easier to use, I could not repeat the same task today.
PC-BSD 10.1
The PCBSD download page provides an empty section where someone may have intended for a link to a download to be present. The page source includes some extremely obfuscated javascript that does Eris-knows-what. This inspires the opposite of confidence.
Partitioning
After acquiring a copy, I find that the PCBSD partitioner is even more user-hostile than the FreeBSD partitioner. The options that exist are not apparently useful, while options that might be useful do not exist. There are basic and advanced modes that lead to the same set of options.
Due to a bug in how it generates gpart commands, PCBSD is incapable of installing into a partition. It only works if you wipe the drive.
Graphics settings
After successfully going through PCBSD's graphical installation process, X was unable to run with the automatically configured settings. The system has stock intel video, so I picked intel-3d. Nope. intel? Nope. I had to fall back to vesa, and have pity on any n00bs who don't know that vesa is a standard and not another manufacturer. The configuration tool was unhelpfully recommending the ATI driver for my system because it was alphabetically first in the list.
KDE
When asked to choose a desktop, I picked KDE because it always had the most work put into it. KDE in 2014 is still not as polished as Windows 95 was in 1995.
There is something called AppCafe that is supposed to provide an easy way to find and install packages. It provides an empty list. I tried to refresh the index, and it crashed.
There is a "New Activity" button in the corner. Clicking it hides every window. This button is the mechanism to get to the Folder Settings control panel, which makes no sense. After clicking around and trying out the "New Activity" and "Create Activity" buttons that don't do anything, I have no idea what an "Activity" is or is supposed to be.
The kde clock is white on a white background. I can see just a touch of a drop shadow. This is easily reconfigured.
When a context menu is open, KDE intercepts Alt-Tab and does not switch between programs as expected.
Copy and paste are still different keyboard shortcuts in different programs.
Konsole has two different configuration/preferences menus. I was looking for items in the "Configure Konsole" menu that are found in the "Edit Current Profile" menu. The main configuration tool has no way to view or edit profiles, or shortcuts or notifications or other things that may be configured from the main menu. After editing the default profile, my new configuration does not survive a system reboot.
The tools in the "System Settings" control panel mostly pertain to high-level KDE stuff. There are some system settings on the very bottom. You have to scroll down to see them.
There is also a PC-BSD Control Panel that has additional system settings that are not in the System Settings control panel.
The start menu behaves differently from my expectations, but that is on me and not them. It simply does things differently and I will have to get used to it. It is not clear how to open a menu using the keyboard. The right arrow key, which I would use in Windows, changes the supermenu. The space bar adds a space to the search bar which clears the entire start menu. The enter key usually works, but sometimes causes the menu to hang. After opening a menu, it is not clear how to return. Backspace does not work. The left arrow key works, but this is unexpected because the left and right arrow keys are meant to change supermenus in this context.
The KDE start menu includes both a "Favorites" menu and a "Recently Used" menu. These should be the same menu.
There are no hover tooltips on anything in the system tray. There are hardly any hover tooltips on anything.
An obvious help icon in the system tray, with a life preserver icon, leads to a backup utility named Life Preserver. The same exact icon is used for the help utility in other contexts.
As I am writing these notes, the KDE text editor Kate is often rewriting words after I have typed them. Pressing enter to break the line triggers a spellcheck/autocomplete.
It is impossible to copy and paste text from a vim session. The "copy" command is grayed out. I have to exit vim to be allowed to copy the text from the same console session.
After attaching a usb drive, I was unable to find it mounted anywhere on the filesystem. I had to go through a file manager and hope that the file manager would mount the drive. This is stupid. When I was done using the drive, I was unable to dismount it because "One or more files on this device are open in an application." fstat sees no open files on the device.
After running Pidgin once, it automatically starts up every time I log in. Pidgin is not in my .xsession. The .kde4/Autostart directory is empty. Pidgin is listed in plasma-desktop-applets.rc, ksmserverrc, and kickoffrc, but none appear to be starup systems. Whatever kickoff is ("No manual entry for kickoff" "kickoff: nothing appropriate"), it lists Pidgin under RecentlyUsed.
My desktop settings are one pixel wider than my display. When I move my mouse to the left or right, the screen shifts one pixel.
KDE tosses up a "Welcome" screen about ten seconds after the desktop is finished loading. By that time I am already in some program trying to get work done when this window pops up covering the middle of the screen.
Networking
I connected a cable to the ethernet port, ran dhclient on the interface, and tried to browse the web only to get a message that I needed to log in to use the public wireless network. The system had automatically connected to open wireless network without my permission and without notifying me. I disabled the wireless device.
With my wireless disabled in KDE, my system still seeks out and connects to any wireless networks it can find.
Backing up files
Now I need to copy my files over from my old box Skelisle. The straightforward way would be to run sshd on one machine and scp or rsync the files over from the other. The fact that I am writing about this goes to show that the process was not so straightforward.
I ran sshd on the BSD system and it complained about a bad path. Nothing in help or the man page gave any suggestion as to what this could possibly be about. I ran /etc/rc.d/sshd start and it performed whatever magic it needed to do to start, but was not receiving connections. You have to go into the config file and say which IP to listen on. I approve. This is good for security.
After configuring sshd to listen and confirming that it is listening at the correct port and IP address, I still get "connection refused" when attempting to connect. Nothing appears in the log. I can ping the server fine. ipfw settings look good. BSD uses pftcl now; that looks good too. There is nothing in the sshd man page that would suggest a reason for this.
I decide to host from Skelisle and connect from the new system, which I have named Schala in switching naming conventions between exploded volcanic islands for desktops and Square RPG characters for laptops.
Because Linux on Skelisle has been removing my statically assigned IP every minute or two and I can find no configuration file that references the interface, let alone affects it, I boot Skelisle into Windows to host from there.
Windows won't let me host the C:\Windows folder (which I wanted to try vhosting) so I share the whole C drive. Windows spends close to an hour changing folder permissions throughout the drive, which ought not to be necessary to share the drive with the permissions of a given user. Come to think of it, I was never asked which user to share the drive as.
Whatever Windows did, it did wrong. Several folders that I want to move are inaccessible for no apparent reason. For example, I can copy my "downloads" folder but not its subfolder "downloads/games". A side effect of turning on file sharing in Windows is that I have lost the Security tab on all folders, so I cannot tell if there is or is not any difference in the security permissions for these folders.
If it were 1997 I would be done by now but everything is too helpful. Linux has network-mangler or some other daemon helpfully wiping out my static IP address, and you can't kill network-manager. FreeBSD is helpfully blocking all access to ssh for no apparent reason and with no apparent recourse. Windows is helpfully doing something extraordinarily stupid with its filesystem to the point that it has removed extremely important functionality.
With Windows file sharing not working I unshare everything, go have dinner while that is going on, and decide to try something different. With mingw and xampp on the system, I slap together a web service that spits out a tarred directory of a folder. Behold, the easiest way to copy files between two computers in 2014.
The traffic comes through at a disappointing 5mbps, suggesting that one of my ports is set to 10baseT instead of 100.
ifconfig re0 media 100baseTX mediaopt full-duplex
ifconfig shows that the setting took effect, but speed did not improve.
A few minutes later the transfer dies. Forget what I said about this being a way to transfer files, because it did not work. The cause: PCBSD automagically wiped out my statically assigned IP address, just like Linux does. At least BSD seems to do it at a longer interval, which gives me enough time to pull down directories if I tar them up beforehand and use --continue to grab them in parts.
The ip address survived the night. Whatever was killing it is not on a timer.
The culprit is probably dhclient. rc.conf includes:
ifconfig_re0="DHCP"
Another common and easy way to transfer files is through a USB drive, but mine is not big enough to carry all of my files and it's slow. Also, my last USB stick died a few months ago shortly after a large number of writes and I don't want to risk killing my new one -- from a different brand, of course -- by using it as intended. However, I am out of options. After setting up a cp -ruv operation for a directory that I had already copied onto it, Windows tells me that my new USB stick is write protected. That means it is failing already, with the proximate cause being a large number of reads. The USB drive manufacturers to avoid are Lexar and PNY.
plan: split directories into chunks small enough to be copied in my limited disk space, tar them, and --continue.
The transfer is definitely i/o bound. A pre-tarred file comes across at nearly 90mbps. Starting a new tar operation causes this transfer to halt while it waits for the Windows system which is occupied by the tar operation. The new tar operation is working on a small number of large video files that are not fragmented, so they should be read off the disk as quickly as the pre-tarred file. The tar operation uses close to zero % cpu. The bottleneck seems to be the Windows i/o system.
Writing a change to my httpd.conf caused a four-second halt in the download. I doubt that the HD seek accounts for all of that. The transfer halts intermittently for similar periods of time, probably as windows internals hit the disk for some reason or another.
Installed packages
Few or no games were installed, which is unexpected for a desktop distro. I have KDE but the KDE games are not installed. The system is based on BSD but the BSD games are not installed. The only thing in KDE's Games menu is something called AMOR Screen Capture. The games directory contains fortune and a few toys like rot13, but nothing playable like mille or wumpus.
Sound
([Edit Dec. 31] Most of these sound issues were overcome by running sysctl dev.hdac.0.polling=1 to use a polling-based sound system rather than an event-based one. Details in the FreeBSD forum.)
If I have sound I have not heard any chimes, beeps or the like. no speakers? None visible on the laptop. The system tray does not include a volume control. There is no volume control in the System Settings control panel.
(Note: Two or three reboots later, there is a volume control in the system tray. I have not changed any settings.)
PC-BSD has a sound configuration tool that offers me two sound devices, realtek and intel. Nothing happens when I test on the realtek device. On the Intel device the sound test produces a loud horrible grinding noise that sounds like a .mod version of a jackhammer or a hard drive crash played at double speed. This forces me to reboot because I do not have any apparent way to mute the sound, but at least it proves that the laptop has a speaker somewhere.
I later found a volume control in the PCBSD Control Panel under the name of PulseAudio Mixer.
Sound and video
The video player SMPlayer is unable to play mp4 video files. It can decode the files but it will show one frame and pause. This is also a problem in command-line mplayer. There are no error messages.
vlc halts and repeatedly throws the error:
[0x8020cea50] oss audio output error: cannot write samples: Invalid argument
mplayer on an audio file gives the error:
Audio device got stuck!
According to my system settings, I am using OSS.
pulseaudio and knotify4
I randomly hit top and saw that knotify4 and pulseaudio were each using 100% of CPU. This may be related to my sound problems.
knotify4 is run by init.
This is a known problem in KDE since at least 2011. http://entrenchant.blogspot.co.il/2011/08/knotify4-uses-100-cpu.html
According to some random forum comment, knotify4 is only used for KDE sound notifications and can be turned off.
PulseAudio
Someone has reported a similar problem on Linux as a Pulseaudio problem. Commentary suggests it may be ALSA-related. Not on BSD. My problem seems to be at a lower level.
I ran pulseaudio -vvvv and redirected its output to a file, creating an empty file because pulseaudio sends its output to stderr.
systemsettings
Attempting a sound test of OSS in systemsettings causes systemsettings to hang at 100% CPU.
vi and kde
While in vim I intentionally hit backspace a few times to see if this would trigger pulseaudio to go to 100%. Instead I got a popup window saying "Bell in session 'Shell'".
dmesg and pciconf
rebooted to get some info from dmesg. It reported two sound devices:
hdacc0: <realtek (0x0283)="(0x0283)" hda="HDA" codec="CODEC"> at cad 0 on hdac0 hdaa0: <realtek (0x0283)="(0x0283)" audio="Audio" function="Function" group="Group"> at nid 1 on hdacc0 hdaa0: Subsystem ID: 0x10250905 hdaa0: NumGPIO=3 NumGPO=0 NumGPI=0 GPIWake=0 GPIUnsol=1 ... pcm0: <realtek (0x0283)="(0x0283)" (analog="(Analog" 2.0+hp/2.0)="2.0+HP/2.0)"> at nid 20,33 and 18 on hdaa0 hdacc1: <intel (0x2882)="(0x2882)" hda="HDA" codec="CODEC"> at cad 2 on hdac0 hdaa1: <intel (0x2882)="(0x2882)" audio="Audio" function="Function" group="Group"> at nid 1 on hdacc1 hdaa1: Subsystem ID: 0x80860101 hdaa1: NumGPIO=0 NumGPO=0 NumGPI=0 GPIWake=0 GPIUnsol=0 ... pcm1: <intel (0x2882)="(0x2882)" (hdmi/dp="(HDMI/DP" 8ch)="8ch)"> at nid 4 on hdaa1
on the other hand, pciconf -l -vV reports:
hdac0@pci0:0:27:0: class=0x040300 card=0x09051025 chip=0x0f048086 rev=0x0
e hdr=0x00
vendor = 'Intel Corporation'
device = 'ValleyView High Definition Audio Controller'
class = multimedia
subclass = HDA
more sound testing
I plugged in some headphones and catted a .wavfile to /dev/dsp0.0. No effect. Nothing seems to be using cpu. After a few seconds, a message appeared in console:
cat: stdout: Invalid argument
Boot to the head
Seen in /boot/defaults/loader.conf
sound_load="NO" # Digital sound subsystem ... snd_driver_load="NO" # All sound drivers
The file has a big warning against editing it. It is not clear which file I am supposed to edit instead.
I edited loader.conf.pcbsd and rebooted. There was no change in dmesg or sndstat.
rtfm...
According to Intel's doc for my cpu, there are two sound subsystems on the laptop's system-on-a-chip, Intel High Definition Audio (HDA) and Low Power Engine Audio (LPE). LPE is disabled when HDA is active.
checking kernel modules
kldstat does not list anything with "snd", "dsp", or "hda" in the name. kldload snd_hda reports:
kldload: can't load snd_hda: module already loaded or in kernel
kldstat -v does report the sound-related modules.
boot verbosity
added to loader.conf as recommended:
boot_verbose="YES"
reran grub-mkconfig as instructed by the loader.conf file. It produces the message:
Installing for i386-pc platform.
...that was really unexpected because this is a 64-bit install.
rebooted... The system does reboot, which I did not expect. There was nothing new in the dmesg.
sysctl review
sysctl shows:
dev.hdaa.0.%location: nid=1
dev.hdaa.0.nid1 does not exist. However, judging from a web search, this seems to be a normal case.
pinout review
Pins appear to show my speaker as disconnected.
hdaa0: 20 90170110 1 0 Speaker Fixed Analog Internal Unknown 1 hdaa0: Caps: OUT EAPD Sense: 0x00000000 (disconnected)
snd_driver
This is now appearing in dmesg.
module sound already present! KLD file snd_driver.ko is missing dependencies
It had not previously appeared in verbose messages. It continues to appear after I removed the extra sound lines I had added to loader.conf.pcbsd.
hdaa.c is over 200kb of text. Impossible to read.
Sound is still broken as of this writing.
Process management
Open ports review
ports open are udp *.*, 123, 631, 5353, 8885, 24253. Listeners include:
udp *.* - pc-nettray - does this mean it is listening on every interface and port? tcp 8885 - nginx - poking it with a browser produces a "bad gateway" error udp 5353 and 24253 - ahavi-daemon tcp 631 - cupsd udp 123 - ntp
mysqld is running but it is not listening.
Startup processes
processes running that I might not want running:
- webcamd. set webcamd_enable="NO" in rc.conf.
- php-fpm. set php_fpm_enable="NO"
- nptd. set ntpd_enable="NO"
dhclient is running on re0. Commented out in rc.conf:
# ifconfig_re0="DHCP"
nginx
notable: nginx is the default webserver. Apache is no longer the standard.
I cannot find where nginx is started. There is nothing in /etc containing the string "nginx".
Various stuff
DMA channels?
in kinfocenter, attempting to open the dma channels dialog causes kinfocenter to crash. This is repeatable. From the command line, I get the error message:
/usr/local/lib/kde4/kcm_info.so: Undefined symbol "devinfo_init"
ACPI error
/var/log/messages is full of this:
[Edit Dec. 13 - replaced corrupted /var/log/messages report with a saved dmesg log. Corruption was likely due to user error while text editing; I probably swept the touchpad while typing and wiped a line of text and didn't fix it.]ACPI Error: No handler for Region [ECF2] (0xfffff80002ad6e80) [EmbeddedControl] (20130823/evregion-178) ACPI Error: Region EmbeddedControl (ID=3) has no handler (20130823/exfldio-320) ACPI Error: Method parse/execution failed [\134_SB_.PCI0.LPCB.H_EC.BAT1._BST] (Node 0xfffff80002aead80), AE_NOT_EXIST (20130823/psparse-553)
Hallucinating power management
The power management systray utility thinks that I have three batteries. The nonexistent Battery #2 is "not present" and Battery #3 is at 0% and not charging.
Inability to shut down
"Sleep" and "Hibernate" only lock the screen. The system reboots when I tell it to shut down or when I press the power button.
It will usually turn off when I hold down the power button for several seconds. However, there was one time when I thought I had shut it off this way during the boot loader and later found the system on and running with a login screen.
Shutdown graphics corruption
On shutdown, the screen fills with rows of garbage as if it were attempting to use a video mode that the graphics system does not support.
There are rare times that this does not happen. I do not see a pattern.
vim corruption
While editing a text file in vim, something happened to cause vim to corrupt its own history. Some lines of text had been deleted and some lines of text had been copied over other lines of text. undoing would not restore the original text but would cause edits on the corrupted text. I hit Ctrl-L to refresh the screen in case it was the terminal rather than the memory that was corrupted, but this had no effect.
A case of visual corruption caused several lines of text to be underlined. Quitting and restarting fixed this.
In one case, :w! reported a failure with an error message that I have forgotten, but may have been related to utf-8 characters in a file. :q then complained that the file had not been saved. The file was written, but international characters seem to have been lost.
Kernel recompilation
The kernel source was not installed. I remember having asked for it in one of the installs, but I forget whether that was in PCBSD or the earlier FreeBSD install. There appears to be no standard package for the kernel source. They expect you to download it from Github.
make returns an error and a message to use make all for historic behaviour. There is not a clue as to what modern behaviour is supposed to be.
Kernel build failed.
===> lib/libc (all)
Warning: Object directory not changed from original /usr/src/freebsd/lib/libc
printf '#include "compat.h"\n' > syscall.S
printf '#include "SYS.h"\nRSYSCALL(syscall)\n' >> syscall.S
printf '\t.section .note.GNU-stack,"",%%progbits\n' >>syscall.S
RPCGEN_CPP=cpp rpcgen -C -h -o crypt.h /usr/include/rpcsvc/crypt.x
RPCGEN_CPP=cpp rpcgen -C -h -o yp.h /usr/include/rpcsvc/yp.x
yacc -d -p_nsyy -o nsparser.c /usr/src/freebsd/lib/libc/net/nsparser.y
cc -O2 -pipe -I/usr/src/freebsd/lib/libc/include -I/usr/src/freebsd/lib/libc/../../include -I/usr/src/freebsd/lib/libc/amd64 -DNLS -D__DBINTERFACE_PRIVATE -I/usr/src/freebsd/lib/libc/../../contrib/gdtoa -I/usr/src/freebsd/lib/libc/../../contrib/libc-vis -DINET6 -I/usr/src/freebsd/lib/libc -I/usr/src/freebsd/lib/libc/resolv -D_ACL_PRIVATE -DPOSIX_MISTAKE -I/usr/src/freebsd/lib/libc/../libmd -I/usr/src/freebsd/lib/libc/../../contrib/jemalloc/include -I/usr/src/freebsd/lib/libc/../../contrib/tzcode/stdtime -I/usr/src/freebsd/lib/libc/stdtime -I/usr/src/freebsd/lib/libc/locale -DBROKEN_DES -DPORTMAP -DDES_BUILTIN -I/usr/src/freebsd/lib/libc/rpc -DYP -DNS_CACHING -DSYMBOL_VERSIONING -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable -Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality -Wno-unused-function -Wno-enum-conversion -Wno-switch -Wno-switch-enum -Wno-knr-promoted-parameter -Qunused-arguments -c syscall.S
syscall.S:3:122: error: expected ')' in parentheses expression
.text; .p2align 4,0x90; .globl __sys_syscall; .type __sys_syscall,@function; __sys_syscall:; WEAK_REFERENCE(__sys_syscall, syscall); WEAK_REFERENCE(__sys_syscall, _syscall); mov $0,%eax; movq %rcx, %r10; syscall; jb .cerror; ret; .size __sys_syscall, . - __sys_syscall
^
syscall.S:3:162: error: expected ')' in parentheses expression
.text; .p2align 4,0x90; .globl __sys_syscall; .type __sys_syscall,@function; __sys_syscall:; WEAK_REFERENCE(__sys_syscall, syscall); WEAK_REFERENCE(__sys_syscall, _syscall); mov $0,%eax; movq %rcx, %r10; syscall; jb .cerror; ret; .size __sys_syscall, . - __sys_syscall
make clean takes longer to run than it did for the build to fail.
[Edit Dec 11] The new kernel build procedure is well documented inside the Makefile. I only had to look. make buildworld took thirteen and a half hours.
additional notes
netstat on BSD does not include a flag to show what process owns a port. This information can be retrieved from sockstat.
In the time it took to carry the computer from one room to another, the battery went from 100% to 98%. knotify4 was hogging 100% cpu at the time.
"shutdown" actually reboots the system. I turned off the system by holding the power button down while it was at the bootloader. After carrying the laptop to another location, the system was running and waiting for me to log on to KDE.I was fortunate that this was a short enough travel to only use 5% of the power.
The boot process is the old-fashioned type that performs one action at a time instead of running things in parallel. This takes two minutes. Raising the wireless device can take fifteen seconds.
There is now a ~/.config menu for storing all of the dotfiles that pollute a user directory. I recommended doing this over ten years ago. There are still more dotfiles in the root than there used to be.
Moving a large directory between two points on the same file system took a long time, as if some per-file operation was being done. It should have taken less than a second to change one or a few indexes. df shows that the source and destination are considerered to be different mount points even though they are part of the same ZFS file system.
nslookup no longer exists. drill is the replacement. It also replaces dig.
The fan sometimes runs while shutting down. It rarely runs while running. This is likely related to my earlier complaint about the fan going nuts at console with nothing running. I wonder if there is something about X or KDE that takes over and fixes fan and power-control settings that are broken at a system level.