How to determine hardware bitness in "Precise Light"

Moderator: Forum moderators

Post Reply
m-cuda
Posts: 62
Joined: Sun Jul 26, 2020 4:52 am
Location: USA
Has thanked: 41 times
Been thanked: 4 times
Contact:

How to determine hardware bitness in "Precise Light"

Post by m-cuda »

Just for fun I tried to run “precise LIGHT” on my Dell Inspiron 11 model 3180 laptop with a AMD A6-9220e processor (64 bit) and 4GB memory. Unfortunately, X just would not start. After trying all the possibilities using xorgwizard I gave up. Later I thought the problem may be the xorg.conf generated by xorgwizard may be intended for older hardware so I modified a working BionicPup64 xorg.conf to work with “precise LIGHT”. After some trial and error I finally got X to work.

Probably, the only reason for running a 32-bit Puppy OS on 64-bit hardware is if you want a single OS that can run on the old MBR 32-bit hardware and the current GPT 64-bit hardware, i.e., one flash drive does all.

This requires a different xorg.conf depending on the hardware. Currently, I have two different personal save files one with the xorg.conf for the 32-bit Asus and the other with the xorg.conf for the 64-bit Dell. This is not ideal. So, I thought I could solve this by customizing the "xwin" script to symbolically link the correct xorg.conf to xorg.conf depending on the hardware type.

The problem is I cannot find a way to determine if the hardware is 32-bit or 64-bit.

"uname -m" reports "i686" probably because its reporting the bitness of the kernel not the bitness of the hardware.

The command "lscpu" doesn't exists in "Precise Light" even though PPM says that the "util-linux" package is installed.

The file "/proc/cpuinfo" is empty as are many other items in this directory. Why is that?

Is there a way to determine the bitness of the hardware in "Precise Light"?

A tangential question: Would running a 32-bit OS on 64-bit hardware reduce memory usage since the integers are smaller?

Here is the xorg.conf that worked on the Dell.

Code: Select all

#barry Kauler 2011
#pre-constructed xorg.conf, for use by /usr/sbin/xorgwizard-automatic

# **********************************************************************
# Module section -- this  section  is used to specify
# which dynamically loadable modules to load.
# **********************************************************************
#
Section "Module"

	# This loads the DBE extension module.
	Load        "dbe"  	# Double buffer extension

EndSection

# **********************************************************************
# Files section.  This allows default font paths to be set
# **********************************************************************

Section "Files"

	# Multiple FontPath entries are allowed
	FontPath   "/usr/share/X11/fonts/misc/"
	FontPath   "/usr/share/X11/fonts/Type1/"
	FontPath   "/usr/share/X11/fonts/TTF/"

EndSection

# **********************************************************************
# Server flags section.
# **********************************************************************

Section "ServerFlags"

	# Enables mode switching with xrandr
	Option "RandR" "on"

	# With this, Xorg won't talk to udev to add evdev devices
	# and you'll be back with the old Xorg behavior (pre-7.4)...
	Option "AutoAddDevices" "false"

	# Xorg 7.4, Ubuntu Jaunty, CTRL-ALT-BACKSPACE is disabled by default...
	Option "DontZap" "false"

EndSection

# ===============================================================

Section "InputClass"
	Identifier "keyboard-all"
	MatchIsKeyboard "on"
	MatchDevicePath "/dev/input/event*"
	Driver      "evdev"
	Option      "XkbRules" "evdev"
	Option      "XkbModel" "pc104" #xkbmodel0
	Option      "XkbLayout" "us"
	Option      "XkbVariant" "" #xkbvariant0
	Option      "XkbOptions" "terminate:ctrl_alt_bksp" #xkboptions0
EndSection

Section "ServerLayout"
	Identifier     "X.org Configured"
	Screen      0  "Screen0" 0 0
	# InputDevice    "Mouse0" "CorePointer"
	# InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "Monitor Model"
#	HorizSync    35-81
#	VertRefresh  59-76
	#UseModes     "Modes0" #monitor0usemodes
#	Option      "PreferredMode" "1024x768" #monitor0prefmode
	EndSection
	
Section "Modes"
	Identifier "Modes0"
	#modes0modeline0
EndSection

Section "Device"
	Identifier  "Card0"
	Driver      "fbdev" #card0driver
#	VendorName  "Unknown Vendor"
#	BoardName   "Unknown Board"
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
#	DefaultDepth 24
	#Option         "metamodes" "1280x800_60 +0+0" #METAMODES_0
	Subsection "Display"
		Depth       24 #screen0depth
		Modes       "1366x768" #screen0modes
	EndSubsection
EndSection
User avatar
6502coder
Posts: 89
Joined: Mon Jul 13, 2020 6:21 pm
Location: Western US
Has thanked: 3 times
Been thanked: 20 times

Re: How to determine hardware bitness in "Precise Light"

Post by 6502coder »

You say /proc/cpuinfo is empty? That is very strange. I booted a PreciseLight LiveCD (752 mk 2.1) on my 64-bit Dell desktop system (i5 processor) and /proc/cpuinfo looks perfectly normal.
williams2
Posts: 1026
Joined: Sat Jul 25, 2020 5:45 pm
Been thanked: 291 times

Re: How to determine hardware bitness in "Precise Light"

Post by williams2 »

/proc/cpuinfo is information directly from the kernel. Maybe the kernel doesn't understand your hardware?

You could install lscpu. For example, in this package lscpu is 32 bit for Ubuntu Trusty Tahr.
https://ubuntu.pkgs.org/14.04/ubuntu-ma ... 6.deb.html
It runs in BionicPup64 8.0 without extra 32 bit library files.

Code: Select all

# ./lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
etc etc etc
Most 8 bit, 16 bit, 32 bit and 64 bit cpus address the memory by bytes (1 bytes = 8 bits --- a bit is a 0 or a 1)
A cpu instruction can be 1 byte or 2 bytes or 3 bytes etc etc
For example, the 64 bit cpu instruction:
PUSHFQ is hex 9C
CDQE is hex 4898
(compiled by nasm)

If a program accesses many ram locations as 64 bit addresses, as opposed to 32 bit addresses
that would take a little more space.
Very often, an address is put in a cpu register once, and then incremented or decremented to access the next addresses.

PAE allows a 32 bit cpu to access up to 64 bits of ram, if think.

A 32 bit program might be slightly smaller than the equivalent 64 bit program, and might run just as fast, depending on what the program does.

Xorg can start without an xorg.conf file.
Puppy might rebuild an xorg.conf file if you delete or move it.
You could create a blank xorg.conf file to prevent that, like this:

Code: Select all

echo '#' > /etc/X11/xorg.conf
m-cuda
Posts: 62
Joined: Sun Jul 26, 2020 4:52 am
Location: USA
Has thanked: 41 times
Been thanked: 4 times
Contact:

Re: How to determine hardware bitness in "Precise Light"

Post by m-cuda »

@6502coder thank-you for your post.

On my system, Dell Inspiron 11 model 3180 laptop with a AMD A6-9220e processor running Precise Puppy light-5.7.2, here is what my /proc directory looks like:

Code: Select all

# file /proc/[a-z]*
/proc/acpi:         directory
/proc/asound:       directory
/proc/buddyinfo:    empty
/proc/bus:          directory
/proc/cgroups:      empty
/proc/cmdline:      empty
/proc/config.gz:    gzip compressed data, from Unix, max compression
/proc/consoles:     empty
/proc/cpuinfo:      empty
/proc/crypto:       empty
/proc/devices:      empty
/proc/diskstats:    empty
/proc/dma:          empty
/proc/driver:       directory
/proc/execdomains:  empty
/proc/fb:           empty
/proc/filesystems:  empty
/proc/fs:           directory
/proc/interrupts:   empty
/proc/iomem:        empty
/proc/ioports:      empty
/proc/irq:          directory
/proc/key-users:    empty
/proc/kmsg:         empty
/proc/kpagecount:   empty
/proc/kpageflags:   empty
/proc/loadavg:      empty
/proc/locks:        empty
/proc/mdstat:       empty
/proc/meminfo:      empty
/proc/misc:         empty
/proc/modules:      empty
/proc/mounts:       symbolic link to `self/mounts'
/proc/mpt:          directory
/proc/mtrr:         empty
/proc/net:          symbolic link to `self/net'
/proc/pagetypeinfo: empty
/proc/partitions:   empty
/proc/scsi:         directory
/proc/self:         symbolic link to `11613'
/proc/softirqs:     empty
/proc/stat:         empty
/proc/swaps:        empty
/proc/sys:          directory
/proc/sysvipc:      directory
/proc/timer_list:   empty
/proc/tty:          directory
/proc/uptime:       empty
/proc/version:      empty
/proc/vmallocinfo:  empty
/proc/vmstat:       empty
/proc/zoneinfo:     empty
#
As you can see most files are empty. Any idea why this would be? I would be interested in seeing what your /proc directory looks like.
Thank-you
Last edited by m-cuda on Sat Oct 03, 2020 1:43 am, edited 1 time in total.
m-cuda
Posts: 62
Joined: Sun Jul 26, 2020 4:52 am
Location: USA
Has thanked: 41 times
Been thanked: 4 times
Contact:

Re: How to determine hardware bitness in "Precise Light"

Post by m-cuda »

@williams2 - Thank-you indeed for your very informative response.


I did not know that Xorg could run off a empty xorg.conf so I did not try that previously. I tried it but X again fails to start. Here is the Xorg.0.log.

Code: Select all

[   157.593] 
X.Org X Server 1.11.3
Release Date: 2011-12-16
[   157.593] X Protocol Version 11, Revision 0
[   157.594] Build Operating System: Linux 2.6.42-76-generic i686 Ubuntu
[   157.594] Current Operating System: Linux puppypc25414 3.14.56 #1 SMP PREEMPT Wed Nov 4 15:19:30 GMT-8 2015 i686
[   157.594] Kernel command line: BOOT_IMAGE=/vmlinuz pmedia=usbflash
[   157.594] Build Date: 12 February 2015  02:51:26PM
[   157.594] xorg-server 2:1.11.4-0ubuntu10.17 (For technical support please see http://www.ubuntu.com/support) 
[   157.594] Current version of pixman: 0.30.2
[   157.594] 	Before reporting problems, check http://wiki.x.org
	to make sure that you have the latest version.
[   157.594] Markers: (--) probed, (**) from config file, (==) default setting,
	(++) from command line, (!!) notice, (II) informational,
	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[   157.594] (==) Log file: "/var/log/Xorg.0.log", Time: Fri Oct  2 11:51:19 2020
[   157.595] (==) Using config file: "/etc/X11/xorg.conf"
[   157.595] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[   157.596] (==) No Layout section.  Using the first Screen section.
[   157.596] (==) No screen section available. Using defaults.
[   157.596] (**) |-->Screen "Default Screen Section" (0)
[   157.596] (**) |   |-->Monitor "<default monitor>"
[   157.596] (==) No monitor specified for screen "Default Screen Section".
	Using a default monitor configuration.
[   157.596] (==) Automatically adding devices
[   157.596] (==) Automatically enabling devices
[   157.596] (WW) The directory "/usr/share/fonts/X11/misc" does not exist.
[   157.596] 	Entry deleted from font path.
[   157.596] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
[   157.596] 	Entry deleted from font path.
[   157.596] (WW) The directory "/usr/share/fonts/X11/100dpi/" does not exist.
[   157.596] 	Entry deleted from font path.
[   157.596] (WW) The directory "/usr/share/fonts/X11/75dpi/" does not exist.
[   157.596] 	Entry deleted from font path.
[   157.596] (WW) The directory "/usr/share/fonts/X11/Type1" does not exist.
[   157.596] 	Entry deleted from font path.
[   157.596] (WW) The directory "/usr/share/fonts/X11/100dpi" does not exist.
[   157.596] 	Entry deleted from font path.
[   157.596] (WW) The directory "/usr/share/fonts/X11/75dpi" does not exist.
[   157.596] 	Entry deleted from font path.
[   157.596] (WW) The directory "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" does not exist.
[   157.596] 	Entry deleted from font path.
[   157.596] (==) FontPath set to:
	built-ins
[   157.596] (==) ModulePath set to "/usr/lib/i386-linux-gnu/xorg/extra-modules,/usr/lib/xorg/extra-modules,/usr/lib/xorg/modules"
[   157.596] (II) The server relies on udev to provide the list of input devices.
	If no devices become available, reconfigure udev or disable AutoAddDevices.
[   157.596] (II) Loader magic: 0xb77e65a0
[   157.596] (II) Module ABI versions:
[   157.596] 	X.Org ANSI C Emulation: 0.4
[   157.596] 	X.Org Video Driver: 11.0
[   157.596] 	X.Org XInput driver : 16.0
[   157.596] 	X.Org Server Extension : 6.0
[   157.597] (--) PCI:*(0:0:1:0) 1002:98e4:1028:087e rev 235, Mem @ 0xe8000000/134217728, 0xf0000000/8388608, 0xf0b00000/262144, I/O @ 0x00002000/256, BIOS @ 0x????????/131072
[   157.597] (WW) Open ACPI failed (/var/run/acpid.socket) (No such file or directory)
[   157.597] (II) LoadModule: "extmod"
[   157.598] (II) Loading /usr/lib/xorg/modules/extensions/libextmod.so
[   157.599] (II) Module extmod: vendor="X.Org Foundation"
[   157.599] 	compiled for 1.11.3, module version = 1.0.0
[   157.599] 	Module class: X.Org Server Extension
[   157.599] 	ABI class: X.Org Server Extension, version 6.0
[   157.599] (II) Loading extension MIT-SCREEN-SAVER
[   157.599] (II) Loading extension XFree86-VidModeExtension
[   157.599] (II) Loading extension XFree86-DGA
[   157.599] (II) Loading extension DPMS
[   157.599] (II) Loading extension XVideo
[   157.599] (II) Loading extension XVideo-MotionCompensation
[   157.599] (II) Loading extension X-Resource
[   157.599] (II) LoadModule: "dbe"
[   157.599] (II) Loading /usr/lib/xorg/modules/extensions/libdbe.so
[   157.599] (II) Module dbe: vendor="X.Org Foundation"
[   157.599] 	compiled for 1.11.3, module version = 1.0.0
[   157.599] 	Module class: X.Org Server Extension
[   157.599] 	ABI class: X.Org Server Extension, version 6.0
[   157.599] (II) Loading extension DOUBLE-BUFFER
[   157.599] (II) LoadModule: "glx"
[   157.600] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[   157.600] (II) Module glx: vendor="X.Org Foundation"
[   157.600] 	compiled for 1.11.3, module version = 1.0.0
[   157.600] 	ABI class: X.Org Server Extension, version 6.0
[   157.600] (==) AIGLX enabled
[   157.600] (II) Loading extension GLX
[   157.600] (II) LoadModule: "record"
[   157.601] (II) Loading /usr/lib/xorg/modules/extensions/librecord.so
[   157.601] (II) Module record: vendor="X.Org Foundation"
[   157.601] 	compiled for 1.11.3, module version = 1.13.0
[   157.601] 	Module class: X.Org Server Extension
[   157.601] 	ABI class: X.Org Server Extension, version 6.0
[   157.601] (II) Loading extension RECORD
[   157.601] (II) LoadModule: "dri"
[   157.602] (II) Loading /usr/lib/xorg/modules/extensions/libdri.so
[   157.602] (II) Module dri: vendor="X.Org Foundation"
[   157.602] 	compiled for 1.11.3, module version = 1.0.0
[   157.602] 	ABI class: X.Org Server Extension, version 6.0
[   157.602] (II) Loading extension XFree86-DRI
[   157.602] (II) LoadModule: "dri2"
[   157.603] (II) Loading /usr/lib/xorg/modules/extensions/libdri2.so
[   157.603] (II) Module dri2: vendor="X.Org Foundation"
[   157.603] 	compiled for 1.11.3, module version = 1.2.0
[   157.603] 	ABI class: X.Org Server Extension, version 6.0
[   157.603] (II) Loading extension DRI2
[   157.603] (==) Matched fglrx as autoconfigured driver 0
[   157.603] (==) Matched ati as autoconfigured driver 1
[   157.603] (==) Matched vesa as autoconfigured driver 2
[   157.603] (==) Matched fbdev as autoconfigured driver 3
[   157.603] (==) Assigned the driver to the xf86ConfigLayout
[   157.603] (II) LoadModule: "fglrx"
[   157.604] (WW) Warning, couldn't open module fglrx
[   157.604] (II) UnloadModule: "fglrx"
[   157.604] (II) Unloading fglrx
[   157.604] (EE) Failed to load module "fglrx" (module does not exist, 0)
[   157.604] (II) LoadModule: "ati"
[   157.604] (II) Loading /usr/lib/xorg/modules/drivers/ati_drv.so
[   157.604] (II) Module ati: vendor="X.Org Foundation"
[   157.604] 	compiled for 1.11.3, module version = 6.14.99
[   157.604] 	Module class: X.Org Video Driver
[   157.604] 	ABI class: X.Org Video Driver, version 11.0
[   157.604] (II) LoadModule: "radeon"
[   157.604] (II) Loading /usr/lib/xorg/modules/drivers/radeon_drv.so
[   157.604] (II) Module radeon: vendor="X.Org Foundation"
[   157.604] 	compiled for 1.11.3, module version = 6.14.99
[   157.604] 	Module class: X.Org Video Driver
[   157.604] 	ABI class: X.Org Video Driver, version 11.0
[   157.604] (II) LoadModule: "vesa"
[   157.605] (II) Loading /usr/lib/xorg/modules/drivers/vesa_drv.so
[   157.605] (II) Module vesa: vendor="X.Org Foundation"
[   157.605] 	compiled for 1.11.3, module version = 2.3.0
[   157.605] 	Module class: X.Org Video Driver
[   157.605] 	ABI class: X.Org Video Driver, version 11.0
[   157.605] (II) LoadModule: "fbdev"
[   157.605] (II) Loading /usr/lib/xorg/modules/drivers/fbdev_drv.so
[   157.605] (II) Module fbdev: vendor="X.Org Foundation"
[   157.605] 	compiled for 1.11.3, module version = 0.4.2
[   157.605] 	ABI class: X.Org Video Driver, version 11.0
[   157.605] (==) Matched fglrx as autoconfigured driver 0
[   157.605] (==) Matched ati as autoconfigured driver 1
[   157.605] (==) Matched vesa as autoconfigured driver 2
[   157.605] (==) Matched fbdev as autoconfigured driver 3
[   157.605] (==) Assigned the driver to the xf86ConfigLayout
[   157.605] (II) LoadModule: "fglrx"
[   157.606] (WW) Warning, couldn't open module fglrx
[   157.606] (II) UnloadModule: "fglrx"
[   157.606] (II) Unloading fglrx
[   157.606] (EE) Failed to load module "fglrx" (module does not exist, 0)
[   157.606] (II) LoadModule: "ati"
[   157.606] (II) Loading /usr/lib/xorg/modules/drivers/ati_drv.so
[   157.606] (II) Module ati: vendor="X.Org Foundation"
[   157.606] 	compiled for 1.11.3, module version = 6.14.99
[   157.606] 	Module class: X.Org Video Driver
[   157.606] 	ABI class: X.Org Video Driver, version 11.0
[   157.606] (II) LoadModule: "vesa"
[   157.607] (II) Loading /usr/lib/xorg/modules/drivers/vesa_drv.so
[   157.607] (II) Module vesa: vendor="X.Org Foundation"
[   157.607] 	compiled for 1.11.3, module version = 2.3.0
[   157.607] 	Module class: X.Org Video Driver
[   157.607] 	ABI class: X.Org Video Driver, version 11.0
[   157.607] (II) UnloadModule: "vesa"
[   157.607] (II) Unloading vesa
[   157.607] (II) Failed to load module "vesa" (already loaded, 0)
[   157.607] (II) LoadModule: "fbdev"
[   157.607] (II) Loading /usr/lib/xorg/modules/drivers/fbdev_drv.so
[   157.607] (II) Module fbdev: vendor="X.Org Foundation"
[   157.607] 	compiled for 1.11.3, module version = 0.4.2
[   157.607] 	ABI class: X.Org Video Driver, version 11.0
[   157.607] (II) UnloadModule: "fbdev"
[   157.607] (II) Unloading fbdev
[   157.607] (II) Failed to load module "fbdev" (already loaded, 0)
[   157.607] (II) RADEON: Driver for ATI Radeon chipsets:
	ATI Radeon Mobility X600 (M24) 3150 (PCIE), ATI FireMV 2400 (PCI),
	ATI Radeon Mobility X300 (M24) 3152 (PCIE),
	ATI FireGL M24 GL 3154 (PCIE), ATI FireMV 2400 3155 (PCI),
	ATI Radeon X600 (RV380) 3E50 (PCIE),
	ATI FireGL V3200 (RV380) 3E54 (PCIE), ATI Radeon IGP320 (A3) 4136,
	ATI Radeon IGP330/340/350 (A4) 4137, ATI Radeon 9500 AD (AGP),
	ATI Radeon 9500 AE (AGP), ATI Radeon 9600TX AF (AGP),
	ATI FireGL Z1 AG (AGP), ATI Radeon 9800SE AH (AGP),
	ATI Radeon 9800 AI (AGP), ATI Radeon 9800 AJ (AGP),
	ATI FireGL X2 AK (AGP), ATI Radeon 9600 AP (AGP),
	ATI Radeon 9600SE AQ (AGP), ATI Radeon 9600XT AR (AGP),
	ATI Radeon 9600 AS (AGP), ATI FireGL T2 AT (AGP), ATI Radeon 9650,
	ATI FireGL RV360 AV (AGP), ATI Radeon 7000 IGP (A4+) 4237,
	ATI Radeon 8500 AIW BB (AGP), ATI Radeon IGP320M (U1) 4336,
	ATI Radeon IGP330M/340M/350M (U2) 4337,
	ATI Radeon Mobility 7000 IGP 4437, ATI Radeon 9000/PRO If (AGP/PCI),
	ATI Radeon 9000 Ig (AGP/PCI), ATI Radeon X800 (R420) JH (AGP),
	ATI Radeon X800PRO (R420) JI (AGP),
	ATI Radeon X800SE (R420) JJ (AGP), ATI Radeon X800 (R420) JK (AGP),
	ATI Radeon X800 (R420) JL (AGP), ATI FireGL X3 (R420) JM (AGP),
	ATI Radeon Mobility 9800 (M18) JN (AGP),
	ATI Radeon X800 SE (R420) (AGP), ATI Radeon X800XT (R420) JP (AGP),
	ATI Radeon X800 VE (R420) JT (AGP), ATI Radeon X850 (R480) (AGP),
	ATI Radeon X850 XT (R480) (AGP), ATI Radeon X850 SE (R480) (AGP),
	ATI Radeon X850 PRO (R480) (AGP), ATI Radeon X850 XT PE (R480) (AGP),
	ATI Radeon Mobility M7 LW (AGP),
	ATI Mobility FireGL 7800 M7 LX (AGP),
	ATI Radeon Mobility M6 LY (AGP), ATI Radeon Mobility M6 LZ (AGP),
	ATI FireGL Mobility 9000 (M9) Ld (AGP),
	ATI Radeon Mobility 9000 (M9) Lf (AGP),
	ATI Radeon Mobility 9000 (M9) Lg (AGP), ATI FireMV 2400 PCI,
	ATI Radeon 9700 Pro ND (AGP), ATI Radeon 9700/9500Pro NE (AGP),
	ATI Radeon 9600TX NF (AGP), ATI FireGL X1 NG (AGP),
	ATI Radeon 9800PRO NH (AGP), ATI Radeon 9800 NI (AGP),
	ATI FireGL X2 NK (AGP), ATI Radeon 9800XT NJ (AGP),
	ATI Radeon Mobility 9600/9700 (M10/M11) NP (AGP),
	ATI Radeon Mobility 9600 (M10) NQ (AGP),
	ATI Radeon Mobility 9600 (M11) NR (AGP),
	ATI Radeon Mobility 9600 (M10) NS (AGP),
	ATI FireGL Mobility T2 (M10) NT (AGP),
	ATI FireGL Mobility T2e (M11) NV (AGP), ATI Radeon QD (AGP),
	ATI Radeon QE (AGP), ATI Radeon QF (AGP), ATI Radeon QG (AGP),
	ATI FireGL 8700/8800 QH (AGP), ATI Radeon 8500 QL (AGP),
	ATI Radeon 9100 QM (AGP), ATI Radeon 7500 QW (AGP/PCI),
	ATI Radeon 7500 QX (AGP/PCI), ATI Radeon VE/7000 QY (AGP/PCI),
	ATI Radeon VE/7000 QZ (AGP/PCI), ATI ES1000 515E (PCI),
	ATI Radeon Mobility X300 (M22) 5460 (PCIE),
	ATI Radeon Mobility X600 SE (M24C) 5462 (PCIE),
	ATI FireGL M22 GL 5464 (PCIE), ATI Radeon X800 (R423) UH (PCIE),
	ATI Radeon X800PRO (R423) UI (PCIE),
	ATI Radeon X800LE (R423) UJ (PCIE),
	ATI Radeon X800SE (R423) UK (PCIE),
	ATI Radeon X800 XTP (R430) (PCIE), ATI Radeon X800 XL (R430) (PCIE),
	ATI Radeon X800 SE (R430) (PCIE), ATI Radeon X800 (R430) (PCIE),
	ATI FireGL V7100 (R423) (PCIE), ATI FireGL V5100 (R423) UQ (PCIE),
	ATI FireGL unknown (R423) UR (PCIE),
	ATI FireGL unknown (R423) UT (PCIE),
	ATI Mobility FireGL V5000 (M26) (PCIE),
	ATI Mobility FireGL V5000 (M26) (PCIE),
	ATI Mobility Radeon X700 XL (M26) (PCIE),
	ATI Mobility Radeon X700 (M26) (PCIE),
	ATI Mobility Radeon X700 (M26) (PCIE),
	ATI Radeon X550XTX 5657 (PCIE), ATI Radeon 9100 IGP (A5) 5834,
	ATI Radeon Mobility 9100 IGP (U3) 5835,
	ATI Radeon XPRESS 200 5954 (PCIE),
	ATI Radeon XPRESS 200M 5955 (PCIE), ATI Radeon 9250 5960 (AGP),
	ATI Radeon 9200 5961 (AGP), ATI Radeon 9200 5962 (AGP),
	ATI Radeon 9200SE 5964 (AGP), ATI FireMV 2200 (PCI),
	ATI ES1000 5969 (PCI), ATI Radeon XPRESS 200 5974 (PCIE),
	ATI Radeon XPRESS 200M 5975 (PCIE),
	ATI Radeon XPRESS 200 5A41 (PCIE),
	ATI Radeon XPRESS 200M 5A42 (PCIE),
	ATI Radeon XPRESS 200 5A61 (PCIE),
	ATI Radeon XPRESS 200M 5A62 (PCIE),
	ATI Radeon X300 (RV370) 5B60 (PCIE),
	ATI Radeon X600 (RV370) 5B62 (PCIE),
	ATI Radeon X550 (RV370) 5B63 (PCIE),
	ATI FireGL V3100 (RV370) 5B64 (PCIE),
	ATI FireMV 2200 PCIE (RV370) 5B65 (PCIE),
	ATI Radeon Mobility 9200 (M9+) 5C61 (AGP),
	ATI Radeon Mobility 9200 (M9+) 5C63 (AGP),
	ATI Mobility Radeon X800 XT (M28) (PCIE),
	ATI Mobility FireGL V5100 (M28) (PCIE),
	ATI Mobility Radeon X800 (M28) (PCIE), ATI Radeon X850 5D4C (PCIE),
	ATI Radeon X850 XT PE (R480) (PCIE),
	ATI Radeon X850 SE (R480) (PCIE), ATI Radeon X850 PRO (R480) (PCIE),
	ATI unknown Radeon / FireGL (R480) 5D50 (PCIE),
	ATI Radeon X850 XT (R480) (PCIE),
	ATI Radeon X800XT (R423) 5D57 (PCIE),
	ATI FireGL V5000 (RV410) (PCIE), ATI Radeon X700 XT (RV410) (PCIE),
	ATI Radeon X700 PRO (RV410) (PCIE),
	ATI Radeon X700 SE (RV410) (PCIE), ATI Radeon X700 (RV410) (PCIE),
	ATI Radeon X700 SE (RV410) (PCIE), ATI Radeon X1800,
	ATI Mobility Radeon X1800 XT, ATI Mobility Radeon X1800,
	ATI Mobility FireGL V7200, ATI FireGL V7200, ATI FireGL V5300,
	ATI Mobility FireGL V7100, ATI Radeon X1800, ATI Radeon X1800,
	ATI Radeon X1800, ATI Radeon X1800, ATI Radeon X1800,
	ATI FireGL V7300, ATI FireGL V7350, ATI Radeon X1600, ATI RV505,
	ATI Radeon X1300/X1550, ATI Radeon X1550, ATI M54-GL,
	ATI Mobility Radeon X1400, ATI Radeon X1300/X1550,
	ATI Radeon X1550 64-bit, ATI Mobility Radeon X1300,
	ATI Mobility Radeon X1300, ATI Mobility Radeon X1300,
	ATI Mobility Radeon X1300, ATI Radeon X1300, ATI Radeon X1300,
	ATI RV505, ATI RV505, ATI FireGL V3300, ATI FireGL V3350,
	ATI Radeon X1300, ATI Radeon X1550 64-bit, ATI Radeon X1300/X1550,
	ATI Radeon X1600, ATI Radeon X1300/X1550, ATI Mobility Radeon X1450,
	ATI Radeon X1300/X1550, ATI Mobility Radeon X2300,
	ATI Mobility Radeon X2300, ATI Mobility Radeon X1350,
	ATI Mobility Radeon X1350, ATI Mobility Radeon X1450,
	ATI Radeon X1300, ATI Radeon X1550, ATI Mobility Radeon X1350,
	ATI FireMV 2250, ATI Radeon X1550 64-bit, ATI Radeon X1600,
	ATI Radeon X1650, ATI Radeon X1600, ATI Radeon X1600,
	ATI Mobility FireGL V5200, ATI Mobility Radeon X1600,
	ATI Radeon X1650, ATI Radeon X1650, ATI Radeon X1600,
	ATI Radeon X1300 XT/X1600 Pro, ATI FireGL V3400,
	ATI Mobility FireGL V5250, ATI Mobility Radeon X1700,
	ATI Mobility Radeon X1700 XT, ATI FireGL V5200,
	ATI Mobility Radeon X1700, ATI Radeon X2300HD,
	ATI Mobility Radeon HD 2300, ATI Mobility Radeon HD 2300,
	ATI Radeon X1950, ATI Radeon X1900, ATI Radeon X1950,
	ATI Radeon X1900, ATI Radeon X1900, ATI Radeon X1900,
	ATI Radeon X1900, ATI Radeon X1900, ATI Radeon X1900,
	ATI Radeon X1900, ATI Radeon X1900, ATI Radeon X1900,
	ATI AMD Stream Processor, ATI Radeon X1900, ATI Radeon X1950,
	ATI RV560, ATI RV560, ATI Mobility Radeon X1900, ATI RV560,
	ATI Radeon X1950 GT, ATI RV570, ATI RV570, ATI FireGL V7400,
	ATI RV560, ATI Radeon X1650, ATI Radeon X1650, ATI RV560,
	ATI Radeon 9100 PRO IGP 7834, ATI Radeon Mobility 9200 IGP 7835,
	ATI Radeon X1200, ATI Radeon X1200, ATI Radeon X1200,
	ATI Radeon X1200, ATI Radeon X1200, ATI RS740, ATI RS740M, ATI RS740,
	ATI RS740M, ATI Radeon HD 2900 XT, ATI Radeon HD 2900 XT,
	ATI Radeon HD 2900 XT, ATI Radeon HD 2900 Pro, ATI Radeon HD 2900 GT,
	ATI FireGL V8650, ATI FireGL V8600, ATI FireGL V7600,
	ATI Radeon 4800 Series, ATI Radeon HD 4870 x2,
	ATI Radeon 4800 Series, ATI Radeon HD 4850 x2,
	ATI FirePro V8750 (FireGL), ATI FirePro V7760 (FireGL),
	ATI Mobility RADEON HD 4850, ATI Mobility RADEON HD 4850 X2,
	ATI Radeon 4800 Series, ATI FirePro RV770, AMD FireStream 9270,
	AMD FireStream 9250, ATI FirePro V8700 (FireGL),
	ATI Mobility RADEON HD 4870, ATI Mobility RADEON M98,
	ATI Mobility RADEON HD 4870, ATI Radeon 4800 Series,
	ATI Radeon 4800 Series, ATI FirePro M7750, ATI M98, ATI M98, ATI M98,
	ATI Mobility Radeon HD 4650, ATI Radeon RV730 (AGP),
	ATI Mobility Radeon HD 4670, ATI FirePro M5750,
	ATI Mobility Radeon HD 4670, ATI Radeon RV730 (AGP),
	ATI RV730XT [Radeon HD 4670], ATI RADEON E4600,
	ATI Radeon HD 4600 Series, ATI RV730 PRO [Radeon HD 4650],
	ATI FirePro V7750 (FireGL), ATI FirePro V5700 (FireGL),
	ATI FirePro V3750 (FireGL), ATI Mobility Radeon HD 4830,
	ATI Mobility Radeon HD 4850, ATI FirePro M7740, ATI RV740,
	ATI Radeon HD 4770, ATI Radeon HD 4700 Series, ATI Radeon HD 4770,
	ATI FirePro M5750, ATI RV610, ATI Radeon HD 2400 XT,
	ATI Radeon HD 2400 Pro, ATI Radeon HD 2400 PRO AGP, ATI FireGL V4000,
	ATI RV610, ATI Radeon HD 2350, ATI Mobility Radeon HD 2400 XT,
	ATI Mobility Radeon HD 2400, ATI RADEON E2400, ATI RV610,
	ATI FireMV 2260, ATI RV670, ATI Radeon HD3870,
	ATI Mobility Radeon HD 3850, ATI Radeon HD3850,
	ATI Mobility Radeon HD 3850 X2, ATI RV670,
	ATI Mobility Radeon HD 3870, ATI Mobility Radeon HD 3870 X2,
	ATI Radeon HD3870 X2, ATI FireGL V7700, ATI Radeon HD3850,
	ATI Radeon HD3690, AMD Firestream 9170, ATI Radeon HD 4550,
	ATI Radeon RV710, ATI Radeon RV710, ATI Radeon RV710,
	ATI Radeon HD 4350, ATI Mobility Radeon 4300 Series,
	ATI Mobility Radeon 4500 Series, ATI Mobility Radeon 4500 Series,
	ATI FirePro RG220, ATI Mobility Radeon 4330, ATI RV630,
	ATI Mobility Radeon HD 2600, ATI Mobility Radeon HD 2600 XT,
	ATI Radeon HD 2600 XT AGP, ATI Radeon HD 2600 Pro AGP,
	ATI Radeon HD 2600 XT, ATI Radeon HD 2600 Pro, ATI Gemini RV630,
	ATI Gemini Mobility Radeon HD 2600 XT, ATI FireGL V5600,
	ATI FireGL V3600, ATI Radeon HD 2600 LE,
	ATI Mobility FireGL Graphics Processor, ATI Radeon HD 3470,
	ATI Mobility Radeon HD 3430, ATI Mobility Radeon HD 3400 Series,
	ATI Radeon HD 3450, ATI Radeon HD 3450, ATI Radeon HD 3430,
	ATI Radeon HD 3450, ATI FirePro V3700, ATI FireMV 2450,
	ATI FireMV 2260, ATI FireMV 2260, ATI Radeon HD 3600 Series,
	ATI Radeon HD 3650 AGP, ATI Radeon HD 3600 PRO,
	ATI Radeon HD 3600 XT, ATI Radeon HD 3600 PRO,
	ATI Mobility Radeon HD 3650, ATI Mobility Radeon HD 3670,
	ATI Mobility FireGL V5700, ATI Mobility FireGL V5725,
	ATI Radeon HD 3200 Graphics, ATI Radeon 3100 Graphics,
	ATI Radeon HD 3200 Graphics, ATI Radeon 3100 Graphics,
	ATI Radeon HD 3300 Graphics, ATI Radeon HD 3200 Graphics,
	ATI Radeon 3000 Graphics, SUMO, SUMO, SUMO2, SUMO2, SUMO2, SUMO2,
	SUMO, SUMO, SUMO, SUMO, SUMO, SUMO, SUMO, ATI Radeon HD 4200,
	ATI Radeon 4100, ATI Mobility Radeon HD 4200,
	ATI Mobility Radeon 4100, ATI Radeon HD 4290, ATI Radeon HD 4250,
	AMD Radeon HD 6310 Graphics, AMD Radeon HD 6310 Graphics,
	AMD Radeon HD 6250 Graphics, AMD Radeon HD 6250 Graphics,
	AMD Radeon HD 6300 Series Graphics,
	AMD Radeon HD 6200 Series Graphics, PALM, PALM, CYPRESS,
	ATI FirePro (FireGL) Graphics Adapter,
	ATI FirePro (FireGL) Graphics Adapter,
	ATI FirePro (FireGL) Graphics Adapter, AMD Firestream 9370,
	AMD Firestream 9350, ATI Radeon HD 5800 Series,
	ATI Radeon HD 5800 Series, ATI Radeon HD 5800 Series,
	ATI Radeon HD 5800 Series, ATI Radeon HD 5900 Series,
	ATI Radeon HD 5900 Series, ATI Mobility Radeon HD 5800 Series,
	ATI Mobility Radeon HD 5800 Series,
	ATI FirePro (FireGL) Graphics Adapter,
	ATI FirePro (FireGL) Graphics Adapter,
	ATI Mobility Radeon HD 5800 Series, ATI Radeon HD 5700 Series,
	ATI Radeon HD 5700 Series, ATI Radeon HD 6700 Series,
	ATI Radeon HD 5700 Series, ATI Radeon HD 6700 Series,
	ATI Mobility Radeon HD 5000 Series,
	ATI Mobility Radeon HD 5000 Series, ATI Mobility Radeon HD 5570,
	ATI FirePro (FireGL) Graphics Adapter,
	ATI FirePro (FireGL) Graphics Adapter, ATI Radeon HD 5670,
	ATI Radeon HD 5570, ATI Radeon HD 5500 Series, REDWOOD,
	ATI Mobility Radeon HD 5000 Series,
	ATI Mobility Radeon HD 5000 Series, ATI Mobility Radeon Graphics,
	ATI Mobility Radeon Graphics, CEDAR,
	ATI FirePro (FireGL) Graphics Adapter,
	ATI FirePro (FireGL) Graphics Adapter, ATI FirePro 2270, CEDAR,
	ATI Radeon HD 5450, CEDAR, CEDAR, CAYMAN, CAYMAN, CAYMAN, CAYMAN,
	CAYMAN, CAYMAN, CAYMAN, CAYMAN, CAYMAN, CAYMAN,
	AMD Radeon HD 6900 Series, AMD Radeon HD 6900 Series, CAYMAN, CAYMAN,
	CAYMAN, AMD Radeon HD 6900M Series, Mobility Radeon HD 6000 Series,
	BARTS, BARTS, Mobility Radeon HD 6000 Series,
	Mobility Radeon HD 6000 Series, BARTS, BARTS, BARTS, BARTS,
	AMD Radeon HD 6800 Series, AMD Radeon HD 6800 Series,
	AMD Radeon HD 6700 Series, TURKS, TURKS, TURKS, TURKS, TURKS, TURKS,
	TURKS, TURKS, TURKS, TURKS, TURKS, TURKS, TURKS, TURKS, TURKS, TURKS,
	TURKS, TURKS, TURKS, TURKS, TURKS, TURKS, TURKS, TURKS, TURKS,
	CAICOS, CAICOS, CAICOS, CAICOS, CAICOS, CAICOS, CAICOS, CAICOS,
	CAICOS, CAICOS, CAICOS, CAICOS, CAICOS, CAICOS
[   157.611] (II) VESA: driver for VESA chipsets: vesa
[   157.611] (II) FBDEV: driver for framebuffer: fbdev
[   157.611] (--) using VT number 4

[   157.616] (II) Loading /usr/lib/xorg/modules/drivers/vesa_drv.so
[   157.616] (WW) Falling back to old probe method for fbdev
[   157.616] (II) Loading sub module "fbdevhw"
[   157.616] (II) LoadModule: "fbdevhw"
[   157.616] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so
[   157.616] (II) Module fbdevhw: vendor="X.Org Foundation"
[   157.616] 	compiled for 1.11.3, module version = 0.0.2
[   157.616] 	ABI class: X.Org Video Driver, version 11.0
[   157.616] (II) Loading sub module "vbe"
[   157.616] (II) LoadModule: "vbe"
[   157.617] (II) Loading /usr/lib/xorg/modules/libvbe.so
[   157.617] (II) Module vbe: vendor="X.Org Foundation"
[   157.617] 	compiled for 1.11.3, module version = 1.1.0
[   157.617] 	ABI class: X.Org Video Driver, version 11.0
[   157.617] (II) Loading sub module "int10"
[   157.617] (II) LoadModule: "int10"
[   157.617] (II) Loading /usr/lib/xorg/modules/libint10.so
[   157.617] (II) Module int10: vendor="X.Org Foundation"
[   157.617] 	compiled for 1.11.3, module version = 1.0.0
[   157.617] 	ABI class: X.Org Video Driver, version 11.0
[   157.617] (II) VESA(0): initializing int10
[   157.618] (EE) VESA(0): V_BIOS address 0xb8480 out of range
[   157.618] (II) UnloadModule: "vesa"
[   157.618] (II) Unloading vesa
[   157.618] (II) UnloadModule: "int10"
[   157.618] (II) Unloading int10
[   157.618] (II) UnloadModule: "vbe"
[   157.618] (II) Unloading vbe
[   157.618] (EE) Screen(s) found, but none have a usable configuration.
[   157.618] 
Fatal server error:
[   157.618] no screens found
[   157.618] 
Please consult the The X.Org Foundation support 
	 at http://wiki.x.org
 for help. 
[   157.618] Please also check the log file at "/var/log/Xorg.0.log" for additional information.
[   157.618] 
[   157.630]  ddxSigGiveUp: Closing log
[   157.630] Server terminated with error (1). Closing log file.
So the null xorg.conf, the default xorg.conf, the xorg.conf's generated by xorgwizard using all reasonable values for the parameters have all failed.

When I tried to install the util-linux package using PPM, PPM reported that the package is already installed but different from the package in the repository.

Code: Select all

Found Package       Installed Package
util-linux_2.20.1   util-linux-2.21.2-patched_f2fs-i486
I think "patched" may mean that the author of "Precise Light" may have stripped lscpu from the util-linux package to build a "light" Puppy. Anyway, I don't think installing lscpu would help as lscpu works by reading the file "/proc/cpuinfo" which is empty on my system as are most of the files /proc/[a-z]*. Why is that?

Code: Select all

# file /proc/[a-z]*
/proc/acpi:         directory
/proc/asound:       directory
/proc/buddyinfo:    empty
/proc/bus:          directory
/proc/cgroups:      empty
/proc/cmdline:      empty
/proc/config.gz:    gzip compressed data, from Unix, max compression
/proc/consoles:     empty
/proc/cpuinfo:      empty
/proc/crypto:       empty
/proc/devices:      empty
/proc/diskstats:    empty
/proc/dma:          empty
/proc/driver:       directory
/proc/execdomains:  empty
/proc/fb:           empty
/proc/filesystems:  empty
/proc/fs:           directory
/proc/interrupts:   empty
/proc/iomem:        empty
/proc/ioports:      empty
/proc/irq:          directory
/proc/key-users:    empty
/proc/kmsg:         empty
/proc/kpagecount:   empty
/proc/kpageflags:   empty
/proc/loadavg:      empty
/proc/locks:        empty
/proc/mdstat:       empty
/proc/meminfo:      empty
/proc/misc:         empty
/proc/modules:      empty
/proc/mounts:       symbolic link to `self/mounts'
/proc/mpt:          directory
/proc/mtrr:         empty
/proc/net:          symbolic link to `self/net'
/proc/pagetypeinfo: empty
/proc/partitions:   empty
/proc/scsi:         directory
/proc/self:         symbolic link to `11613'
/proc/softirqs:     empty
/proc/stat:         empty
/proc/swaps:        empty
/proc/sys:          directory
/proc/sysvipc:      directory
/proc/timer_list:   empty
/proc/tty:          directory
/proc/uptime:       empty
/proc/version:      empty
/proc/vmallocinfo:  empty
/proc/vmstat:       empty
/proc/zoneinfo:     empty
#
However, I thought of a hideous ad hoc solution.

Code: Select all

#!/bin/sh
# This script is an adhoc way to determine if the 32-bit "Puppy Precise Light" OS is running on 64-bit hardware.
# N.B., lscpu does not exists in "Puppy Precise Light", "proc/cpuinfo" is empty and uname reports the bitness of the kernel not
# the bitness of the hardware.
#
# If the hardware is 64-bit then the 32-bit "Puppy Precise Light" kernel will write the following line to "/var/log/messages". 
# ... user.info kernel: efi: No EFI runtime due to 32/64-bit mismatch with kernel
#
# This script obviously does not work with 64-bit kernels
if uname -m|egrep x86_64>/dev/null ; then
    echo $0 does not work with 64-bit kernels!
exit 2
fi
dmesg|egrep 'efi:.+32/64-bit mismatch'>/dev/null
exit $?
A 32 bit program might be slightly smaller than the equivalent 64 bit program, and might run just as fast, depending on what the program does.
Is it possible for a 32-bit program to run faster than its 64-bit counterpart. Although I ran the 32-bit "Precise Light" on my 64-bit Dell on a lark, at least for browsing, subjectively the 32-bit "Precise Light" seemed to be faster than 64-bit BionicPup64 running on the same hardware not slower as I was expecting. The memory usage while only browsing as reported by htop shows "Precise Light" using much less RAM than BionicPup64.

Code: Select all

Precise Light:   Mem [ 173M - 1.3G / 3.86G]
BionicPup64:     Mem [ 680M - 2.2G / 3.80G]
This is not a fair comparison as BionicPup64 is my daily driver and has a ton of additional software installed including a MySQL server running in background (in idle). Also on BionicPup64 the browser is "Google Chrome", my preferred browser, and the browser on "Precise Light" is "Firefox ESR" because Google no longer distributes 32-bit browsers. Anyway, is it possible that using smaller integers and addresses will make a program run faster?

ADDENDUM

For curiousity's sake I ran the following sysbench test on the 32-bit "Precise Light 5.7.2" and on the 64-bit "BionicPup64" installed on the same Dell Inspiron 11 model 3180 laptop with a AMD A6-9220e processor and 4GB memory.

Code: Select all

sysbench --test=cpu --cpu-max-prime=10000 --num-threads=2 run
The results are:

Code: Select all

Precise Light 5.7.2         ~8.0 seconds
BionicPup64                ~10.0 seconds
so sysbench runs approximately 25% faster on "Precise Light 5.7.2" than on "BionicPup64". N.B., the versions of sysbench are not the same - 0.4.12 for "Precise Light 5.7.2" and 1.0.11 for "BionicPup64 - don't know how much that matters.
Last edited by m-cuda on Sun Oct 11, 2020 7:09 pm, edited 3 times in total.
User avatar
6502coder
Posts: 89
Joined: Mon Jul 13, 2020 6:21 pm
Location: Western US
Has thanked: 3 times
Been thanked: 20 times

Re: How to determine hardware bitness in "Precise Light"

Post by 6502coder »

@m-cuda: Mystery solved!

I repeated my LiveCD test mentioned above. Last time I just ran "cat /proc/cpuiinfo" but this time I ran the "file" command as you stated. Sure enough, I got the same kind of output, with lots of files showing as "empty". Also, "ls -l /proc/cpuinfo" reported a zero-byte size. Yet, "cat /proc/cpuinfo" still gave the same full report of CPU info as before!!

Well...when in doubt, RTFM....

So I checked the "man" page for proc(5), and it turns out that /proc is a "pseudo-filesystem". Exactly what that means is above my pay grade, but the bottom line is that you can't expect files in /proc to behave like normal files. Even though "file" says /proc/cpuinfo is empty, if you "cat" it you will in fact find the info you need. Specfically, the presence of "lm" in the "flags" line indicates a 64-bit cpu.
m-cuda
Posts: 62
Joined: Sun Jul 26, 2020 4:52 am
Location: USA
Has thanked: 41 times
Been thanked: 4 times
Contact:

Re: How to determine hardware bitness in "Precise Light"

Post by m-cuda »

@6502coder
Thanks for the info. I thought I did a cat but I can't say for certain. Unfortunately, I am in BionicPup64 right now - will try that later.
Thanks again.

ADDENDUM
Indeed "/proc/cpuinfo" is fully populated in "Precise Light". I often use the "file" command to quickly scan the files in a directory to find files of interest. It absolutely would never have occurred to me that such as basic command would lie. You have just saved me from making a terrible mistake which I unfortunately probably made many times in the past. This is the most useful thing I have learned in a long time - thank-you very much!
williams2
Posts: 1026
Joined: Sat Jul 25, 2020 5:45 pm
Been thanked: 291 times

Re: How to determine hardware bitness in "Precise Light"

Post by williams2 »

Whether software runs faster and more efficiently on a 32 bit system or in a 64 bit system, depends on many factors.

A 64 bit system is unlikely to run twice as fast as a 32 bit system.
It is very possible that a 32 bit system might run a little faster than a 64 bit system.

The older 16 bit and 32 bit cpu instructions that the cpu can execute may be more optimised than 64 bit instructions that have been tacked on.

And yes, it might not be as efficient to work with ram as 8 byte blocks when the cpu is processing data 1 byte at a time.

One advantage of 64 bits, is the cpu can directly access a much larger amount of ram.
And 64 bit processors can use relative addressing, so has support for position independent code (like the old 6809 chip), without the need for workaround tricks.

/proc looks like files, but they are not files at all.
It's just a way to have input and output from the kernel and the kernel modules.
When you cat a "file" in /proc, you are really asking the kernel for information.
Same type of thing with /dev and /sys.

It's what they mean when they say that in Linux, everything is a file.
User avatar
6502coder
Posts: 89
Joined: Mon Jul 13, 2020 6:21 pm
Location: Western US
Has thanked: 3 times
Been thanked: 20 times

Re: How to determine hardware bitness in "Precise Light"

Post by 6502coder »

What put me on the right track was actually something from my 6502 programming days. On the Atari 800, there were certain memory addresses that didn't behave like normal memory at all. You could WRITE a value to a certain location and it would change a certain hardware setting, such as the display resolution. Or you could READ that same location and obtain the value of a certain hardware setting, possibly something entirely unrelated to the hardware setting that was affected by a WRITE to the same location!

So that got me to suspecting that /proc files were actually sort of pseudo-ports that you could read, but didn't behave like normal files. Funny how old experience can turn out to still be relevant.
m-cuda
Posts: 62
Joined: Sun Jul 26, 2020 4:52 am
Location: USA
Has thanked: 41 times
Been thanked: 4 times
Contact:

Re: How to determine hardware bitness in "Precise Light"

Post by m-cuda »

@williams2
/proc looks like files, but they are not files at all.
It's just a way to have input and output from the kernel and the kernel modules.
When you cat a "file" in /proc, you are really asking the kernel for information.
Same type of thing with /dev and /sys.
I was vaguely aware that sysfs files were really virtual files but I very mistakenly believed they could be treated just like regular files. As @6502coder pointed out in a previous post the "file" (a command I use frequently) and the "ls" command do not work on sysfs files. I must admit to being totally naive about this and having misused the "file" command for years. It is always the mistaken assumption of what you absolutely believe to be true that gets you into real trouble.

Thanks for the insight about bitness and code performance. Although, the 32-bit "Precise Light" does seem to perform slightly better than the 64-bit BionicPup64 I cannot use it as my daily driver as I do WordPress development on my daily driver and I once had a nasty problem which I found was caused by 64-bit PHP executing differently from 32-bit PHP. So, I am ending my experiments with "Precise Light" on my 64-bit Dell hardware. Anyway I did learn a lot thanks to you and 6502coder.
m-cuda
Posts: 62
Joined: Sun Jul 26, 2020 4:52 am
Location: USA
Has thanked: 41 times
Been thanked: 4 times
Contact:

Re: How to determine hardware bitness in "Precise Light"

Post by m-cuda »

@6502coder 6502 - you must be as old as I am. The chip of my youth was a Z80A. I think both MOS Technologies and Zilogics are gone now. Those were good times - I kind of understood how all of my computer and my 340 Plymouth Duster worked. Now, I have no idea how a modern car works and only a superficial understanding of how a modern computer works, :( .
Post Reply

Return to “Puppy Derivatives”