Re: Lilo: fatal: raid_setup: stat("/dev/hda")



On Fri, 03 Sep 2010 14:15:23 -0400 (EDT), Thomas H. George wrote:
On Fri, Sep 03, 2010 at 12:24:08PM -0400, Stephen Powell wrote:
On Fri, 03 Sep 2010 12:06:29 -0400 (EDT), Thomas H. George wrote:

After latest upgrade installation of lilo fails.

I am not using raid and have the entry boot=/dev/hda in lilo.conf as
specified in the man page. The installation fails with error code 01
which according to the lilo man page means invalid disk command.

Does it now want a UUID? If so, where do I find the correct UUID.
Values for the partitions are listed in /etc/fstab but not for the MBR.
I have checked several posibilities in /proc without success. In
particular in /proc/bus there are now only three subdirectories, Input,
pci and usb.

Since this a new problem I checked the archives for August and September
but found nothing about lilo.

Your post is lacking important information to diagnose the problem.
For example,

(1) Are you running Lenny or Squeeze? (or something else)
Squeeze
(2) What architecture? (i386 or amd64)
amd64
(3) What kernel are you running? Is it stock or custom? If it is
custom, exactly how did you build it?
Stock kernel 2.6.32-5-amd64
(4) What additional backup kernels (if any) do you have installed?
/boot/vmlinuz-2.6.24-1-amd64.sav
/boot/vmlinuz-2.6.26-1-amd64
/boot/vmlinuz-2.6.26-2-amd64
/boot/vmlinuz-2.6.30-1-amd64
/boot/vmlinuz-2.6.30-2-amd64
/boot/vmlinuz-2.6.32-3-amd64
/boot/vmlinuz-2.6.32-5-amd64
(5) What files, if any, are present in the following directories:
/etc/kernel/postinst.d
initramfs-tools
pm-utils
zz-lilo
zz-update-grub
/etc/kernel/postrm.d
initramfs-tools
zz-lilo
zz-update-grub
/etc/initramfs/post-update.d
lilo
(6) I'd like to see the contents of the following files:
/etc/kernel-img.conf
# Kernel image management overrides
# See kernel-img.conf(5) for details
do_symlinks = yes
relative_links = yes
do_bootloader = yes
do_bootfloppy = no
do_initrd = yes
link_in_boot = no
/etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
# /dev/sdb1 / ext3 errors=remount-ro 0 1
UUID=bfcd3316-153a-4279-ab86-286906857b98 / ext3 errors=remount-ro 0 1
# /dev/sdb5 none swap sw 0 0
UUID=4b1523d0-bec9-4565-b085-0a151469b8db none swap sw 0 0

# formerly named /dev/sda1 is now:
UUID=507caf8f-f9cd-4ed2-91cc-3e46ae942e9d /bkups ext3 rw,user,noauto 0 2
# /dev/sda5 /ubuntu ext3 defaults 0 2
UUID=28a4eb99-6213-4b82-96a2-42b45097e256 /ubuntu ext3 defaults 0 2
# /dev/sda6 /data ext3 defaults 0 2
UUID=36cb29b0-2694-4dee-9ae4-10351963b979 /data ext3 defaults 0 2

/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0


# /dev/hda1 /temp ext2 rw,user,auto 0 2
UUID=4a2915d8-60cf-498e-a15c-f0bc6ebdb25e /temp ext2 rw,user,auto 0 2
# /dev/hda5 /storage ext2 defaults 0 2
UUID=408287f4-8b15-42d1-b6d3-bfeaefde3002 /storage ext2 defaults 0 2

# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>

/dev/cdrom /cdrom iso9660 ro,user,noauto 0 0

/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/scd0 /media/cddata auto ro,user,noauto 0 0
/dev/scd1 /media/cdrom1 udf,iso9660 user,noauto 0 0

/dev/sdc1 /usbkey auto rw,user,noauto 0 0
/dev/sdc5 /media/bkup ext3 rw,user,noauto 0 0
/dev/sdc /media/fuze vfat rw,user,noauto 0 0

/dev/sr0 /media/cdrw iso9660 rw,user,noauto 0 0
/dev/sr1 /dvdrw iso9660 rw,user,noauto 0 0
/dev/sg0 /sony iso9660 rw,user,noauto 0 0
/dev/sg1 /usbdrive vfat rw,user,noauto 0 0

/dev/sdd1 /usbmem vfat rw,user,noauto 0 0
/etc/initramfs-tools/conf.d/resume
# RESUME=/dev/sdb5
RESUME='UUID=4b1523d0-bec9-4565-b085-0a151469b8db'
/etc/initramfs-tools/conf.d/driver-policy
No such file
/etc/lilo.conf
# Automatically added by lilo postinst script
large-memory

# /etc/lilo.conf - See: `lilo(8)' and `lilo.conf(5)',
# --------------- `install-mbr(8)', `/usr/share/doc/lilo/',
# and `/usr/share/doc/mbr/'.

# +---------------------------------------------------------------+
# | !! Reminder !! |
# | |
# | Don't forget to run `lilo' after you make changes to this |
# | conffile, `/boot/bootmess.txt' (if you have created it), or |
# | install a new kernel. The computer will most likely fail to |
# | boot if a kernel-image post-install script or you don't |
# | remember to run `lilo'. |
# | |
# +---------------------------------------------------------------+

# Specifies the boot device. This is where Lilo installs its boot
# block. It can be either a partition, or the raw device, in which
# case it installs in the MBR, and will overwrite the current MBR.
#
boot=/dev/hda

# Specifies the device that should be mounted as root. (`/')
#

# root = /dev/sdb1
root = "UUID=bfcd3316-153a-4279-ab86-286906857b98"


# This option may be needed for some software RAID installs.
#
# raid-extra-boot=mbr-only

# Enable map compaction:
# Tries to merge read requests for adjacent sectors into a single
# read request. This drastically reduces load time and keeps the
# map smaller. Using `compact' is especially recommended when
# booting from a floppy disk. It is disabled here by default
# because it doesn't always work.
#
# compact

# Installs the specified file as the new boot sector
# You have the choice between: text, bmp, and menu
# Look in lilo.conf(5) manpage for details
#
#install=menu

# Specifies the location of the map file
#
map=/boot/map

# You can set a password here, and uncomment the `restricted' lines
# in the image definitions below to make it so that a password must
# be typed to boot anything but a default configuration. If a
# command line is given, other than one specified by an `append'
# statement in `lilo.conf', the password will be required, but a
# standard default boot will not require one.
#
# This will, for instance, prevent anyone with access to the
# console from booting with something like `Linux init=/bin/sh',
# and thus becoming `root' without proper authorization.
#
# Note that if you really need this type of security, you will
# likely also want to use `install-mbr' to reconfigure the MBR
# program, as well as set up your BIOS to disallow booting from
# removable disk or CD-ROM, then put a password on getting into the
# BIOS configuration as well. Please RTFM `install-mbr(8)'.
#
# password=tatercounter2000

# Specifies the number of deciseconds (0.1 seconds) LILO should
# wait before booting the first image.
#
delay=20

# You can put a customized boot message up if you like. If you use
# `prompt', and this computer may need to reboot unattended, you
# must specify a `timeout', or it will sit there forever waiting
# for a keypress. `single-key' goes with the `alias' lines in the
# `image' configurations below. eg: You can press `1' to boot
# `Linux', `2' to boot `LinuxOLD', if you uncomment the `alias'.
#
message=/boot/bootmess.txt
prompt
# delay=100
# timeout=100

# Specifies the VGA text mode at boot time. (normal, extended, ask, <mode>)
#
# vga=ask
# vga=9
#


# Kernel command line options that apply to all installed images go
# here. See: The `boot-prompt-HOWTO' and `kernel-parameters.txt' in
# the Linux kernel `Documentation' directory.
#
# append=""

# If you used a serial console to install Debian, this option should be
# enabled by default.
# serial=

#
# Boot up Linux by default.
#
default=Linux

image=/vmlinuz
label=Linux
read-only
# restricted
# alias=1
append="quiet"
initrd=/initrd.img

image=/vmlinuz.old
label=LinuxOLD
read-only
optional
# restricted
# alias=2
append="quiet"
initrd=/initrd.img.old

image=/boot/vmlinuz-2.6.24-1-amd64.sav
label=LinuxSaved
read-only
append="quiet"
initrd=/boot/initrd.img-2.6.24-1-amd64.sav

# If you have another OS on this machine to boot, you can uncomment the
# following lines, changing the device name on the `other' line to
# where your other OS' partition is.
#
# other=/dev/hda4
# label=HURD
# restricted
# alias=3
(7) I'd like to see the output of the following commands:
ls -Ald /dev/disk/by-uuid/ output using ls -Al
total 0
lrwxrwxrwx 1 root root 10 Sep 3 10:16 17E9-242F -> ../../sdd1
lrwxrwxrwx 1 root root 10 Sep 3 10:16 28a4eb99-6213-4b82-96a2-42b45097e256 -> ../../sda5
lrwxrwxrwx 1 root root 10 Sep 3 10:16 36cb29b0-2694-4dee-9ae4-10351963b979 -> ../../sda6
lrwxrwxrwx 1 root root 10 Sep 3 10:16 408287f4-8b15-42d1-b6d3-bfeaefde3002 -> ../../sdb5
lrwxrwxrwx 1 root root 10 Sep 3 10:16 4a2915d8-60cf-498e-a15c-f0bc6ebdb25e -> ../../sdb1
lrwxrwxrwx 1 root root 10 Sep 3 10:16 4b1523d0-bec9-4565-b085-0a151469b8db -> ../../sdc5
lrwxrwxrwx 1 root root 10 Sep 3 10:16 507caf8f-f9cd-4ed2-91cc-3e46ae942e9d -> ../../sda1
lrwxrwxrwx 1 root root 10 Sep 3 10:16 bfcd3316-153a-4279-ab86-286906857b98 -> ../../sdc1
ls -Al /dev/disk/by-path/
total 0
lrwxrwxrwx 1 root root 9 Sep 3 10:16 pci-0000:00:02.0-usb-0:2:1.0-scsi-0:0:0:0 -> ../../sdd
lrwxrwxrwx 1 root root 10 Sep 3 10:16 pci-0000:00:02.0-usb-0:2:1.0-scsi-0:0:0:0-part1 -> ../../sdd1
lrwxrwxrwx 1 root root 9 Sep 3 10:16 pci-0000:00:02.1-usb-0:1:1.0-scsi-0:0:0:0 -> ../../sr1
lrwxrwxrwx 1 root root 9 Sep 3 10:16 pci-0000:00:04.0-scsi-0:0:0:0 -> ../../sdb
lrwxrwxrwx 1 root root 10 Sep 3 10:16 pci-0000:00:04.0-scsi-0:0:0:0-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Sep 3 10:16 pci-0000:00:04.0-scsi-0:0:0:0-part2 -> ../../sdb2
lrwxrwxrwx 1 root root 10 Sep 3 10:16 pci-0000:00:04.0-scsi-0:0:0:0-part5 -> ../../sdb5
lrwxrwxrwx 1 root root 9 Sep 3 10:16 pci-0000:00:05.0-scsi-0:0:0:0 -> ../../sda
lrwxrwxrwx 1 root root 10 Sep 3 10:16 pci-0000:00:05.0-scsi-0:0:0:0-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Sep 3 10:16 pci-0000:00:05.0-scsi-0:0:0:0-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Sep 3 10:16 pci-0000:00:05.0-scsi-0:0:0:0-part5 -> ../../sda5
lrwxrwxrwx 1 root root 10 Sep 3 10:16 pci-0000:00:05.0-scsi-0:0:0:0-part6 -> ../../sda6
lrwxrwxrwx 1 root root 9 Sep 3 10:16 pci-0000:00:05.0-scsi-1:0:0:0 -> ../../sr0
lrwxrwxrwx 1 root root 9 Sep 3 10:16 pci-0000:00:05.1-scsi-0:0:0:0 -> ../../sdc
lrwxrwxrwx 1 root root 10 Sep 3 10:16 pci-0000:00:05.1-scsi-0:0:0:0-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 10 Sep 3 10:16 pci-0000:00:05.1-scsi-0:0:0:0-part2 -> ../../sdc2
lrwxrwxrwx 1 root root 10 Sep 3 10:16 pci-0000:00:05.1-scsi-0:0:0:0-part5 -> ../../sdc5
ls -Al /dev/disk/by-id/
total 0
lrwxrwxrwx 1 root root 9 Sep 3 10:16 ata-WDC_WD307AA-00BAA0_WD-WMA2F3071727 -> ../../sdb
lrwxrwxrwx 1 root root 10 Sep 3 10:16 ata-WDC_WD307AA-00BAA0_WD-WMA2F3071727-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Sep 3 10:16 ata-WDC_WD307AA-00BAA0_WD-WMA2F3071727-part2 -> ../../sdb2
lrwxrwxrwx 1 root root 10 Sep 3 10:16 ata-WDC_WD307AA-00BAA0_WD-WMA2F3071727-part5 -> ../../sdb5
lrwxrwxrwx 1 root root 9 Sep 3 10:16 ata-WDC_WD4000ABYS-01TNA0_WD-WCAPY0040763 -> ../../sda
lrwxrwxrwx 1 root root 10 Sep 3 10:16 ata-WDC_WD4000ABYS-01TNA0_WD-WCAPY0040763-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Sep 3 10:16 ata-WDC_WD4000ABYS-01TNA0_WD-WCAPY0040763-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Sep 3 10:16 ata-WDC_WD4000ABYS-01TNA0_WD-WCAPY0040763-part5 -> ../../sda5
lrwxrwxrwx 1 root root 10 Sep 3 10:16 ata-WDC_WD4000ABYS-01TNA0_WD-WCAPY0040763-part6 -> ../../sda6
lrwxrwxrwx 1 root root 9 Sep 3 10:16 ata-WDC_WD800JD-60LSA5_WD-WMAM9UU42905 -> ../../sdc
lrwxrwxrwx 1 root root 10 Sep 3 10:16 ata-WDC_WD800JD-60LSA5_WD-WMAM9UU42905-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 10 Sep 3 10:16 ata-WDC_WD800JD-60LSA5_WD-WMAM9UU42905-part2 -> ../../sdc2
lrwxrwxrwx 1 root root 10 Sep 3 10:16 ata-WDC_WD800JD-60LSA5_WD-WMAM9UU42905-part5 -> ../../sdc5
lrwxrwxrwx 1 root root 9 Sep 3 10:16 scsi-SATA_WDC_WD307AA-00BWD-WMA2F3071727 -> ../../sdb
lrwxrwxrwx 1 root root 10 Sep 3 10:16 scsi-SATA_WDC_WD307AA-00BWD-WMA2F3071727-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Sep 3 10:16 scsi-SATA_WDC_WD307AA-00BWD-WMA2F3071727-part2 -> ../../sdb2
lrwxrwxrwx 1 root root 10 Sep 3 10:16 scsi-SATA_WDC_WD307AA-00BWD-WMA2F3071727-part5 -> ../../sdb5
lrwxrwxrwx 1 root root 9 Sep 3 10:16 scsi-SATA_WDC_WD4000ABYS-_WD-WCAPY0040763 -> ../../sda
lrwxrwxrwx 1 root root 10 Sep 3 10:16 scsi-SATA_WDC_WD4000ABYS-_WD-WCAPY0040763-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Sep 3 10:16 scsi-SATA_WDC_WD4000ABYS-_WD-WCAPY0040763-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Sep 3 10:16 scsi-SATA_WDC_WD4000ABYS-_WD-WCAPY0040763-part5 -> ../../sda5
lrwxrwxrwx 1 root root 10 Sep 3 10:16 scsi-SATA_WDC_WD4000ABYS-_WD-WCAPY0040763-part6 -> ../../sda6
lrwxrwxrwx 1 root root 9 Sep 3 10:16 scsi-SATA_WDC_WD800JD-60L_WD-WMAM9UU42905 -> ../../sdc
lrwxrwxrwx 1 root root 10 Sep 3 10:16 scsi-SATA_WDC_WD800JD-60L_WD-WMAM9UU42905-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 10 Sep 3 10:16 scsi-SATA_WDC_WD800JD-60L_WD-WMAM9UU42905-part2 -> ../../sdc2
lrwxrwxrwx 1 root root 10 Sep 3 10:16 scsi-SATA_WDC_WD800JD-60L_WD-WMAM9UU42905-part5 -> ../../sdc5
lrwxrwxrwx 1 root root 9 Sep 3 10:16 usb-LEXAR_JUMPDRIVE_E141520206010-0:0 -> ../../sdd
lrwxrwxrwx 1 root root 10 Sep 3 10:16 usb-LEXAR_JUMPDRIVE_E141520206010-0:0-part1 -> ../../sdd1
lrwxrwxrwx 1 root root 9 Sep 3 10:16 usb-SONY_DVD_RW_DRU-510A_DRX-510UL_SYQ013324-0:0 -> ../../sr1
lrwxrwxrwx 1 root root 9 Sep 3 10:16 wwn-0x50014ee200ed8e67 -> ../../sda
lrwxrwxrwx 1 root root 10 Sep 3 10:16 wwn-0x50014ee200ed8e67-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Sep 3 10:16 wwn-0x50014ee200ed8e67-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Sep 3 10:16 wwn-0x50014ee200ed8e67-part5 -> ../../sda5
lrwxrwxrwx 1 root root 10 Sep 3 10:16 wwn-0x50014ee200ed8e67-part6 -> ../../sda6


Note: I have grub2 boot loaders in the MBR's of the two sata hard drives
which I knew as sda and sdb and lilo on the MBR of the ata drive which I
knew as hda. The grub2 installation recommended putting the loader in
all MBR's but problem with linux-base made it impossible to boot with
grub. The lilo boot still worked and the linux-base problem was
resolved when all references to the cdrom and usb drives was removed
from fstab. The 2.6.32-5-amd64 kernel is apparently too large for lilo.

First of all, thank you for taking the time to collect and post all of this
information. I know it must have been a pain; but believe me, there's no way
to solve the problem without this information. At the risk of telling you
what you already know, allow me to explain what happened. Prior to kernel
2.6.32-5, the traditional IDE drivers were used for traditional IDE hard
drives (also know as parallel ATA or PATA drives). The user-space device
names for these drives were called /dev/hda, /dev/hdb, etc. On the kernel
side, these devices used major number 03. Serial ATA
(or SATA) drives were treated as SCSI disks and used the SCSI naming
convention. On the user-space side they were called /dev/sda, /dev/sdb,
etc. On the kernel side, these devices used major number 08.

Starting with kernel 2.6.32-5, a newer driver was used for PATA drives
which, like the SATA drives, treated them as SCSI disks. In a typical
PC with only one hard disk, the device name simply changed from
/dev/hda to /dev/sda. However, in your case, since you already had two
other disks which were already being treated as SCSI disks, you now
have all three disks being treated as SCSI disks. The question is,
which disk is which? I.e. is the old /dev/hda now /dev/sda? Or is
it now /dev/sdb or /dev/sdc?

If I am to believe the comments in /etc/fstab, you used to have a
partition called /dev/hda1, mounted as /temp, which has a UUID of
4a2915d8-60cf-498e-a15c-f0bc6ebdb25e. According to the output of
"ls -Ald /dev/disk/by-uuid/", this uuid is now associated with
/dev/sdb1. You also used to have a partition called /dev/hda5,
mounted as /storage, which has a UUID of
408287f4-8b15-42d1-b6d3-bfeaefde3002. According to the output of
"ls -Ald /dev/disk/by-uuid/", this uuid is now associated with
/dev/sdb5. Thus, we conclude that what used to be called /dev/hda
is now called /dev/sdb. The "quick fix" would be to code

boot=/dev/sdb

in /etc/lilo.conf and re-run lilo. And that will work, as long as
you are running a kernel which uses the newer libata drivers.
But if you ever run lilo while running a kernel which uses the older
IDE drivers, this will fail. That's not good. What you want to
do is to use a udev-created alias what will map to /dev/hda when
running a kernel which uses the old IDE driver and which maps to
/dev/sdb when running a kernel which uses the new libata driver.
And we can do that. Based on the output of "ls -Ald /dev/disk/by-id/",
what we really want to use is

boot=/dev/disk/by-id/ata-WDC_WD307AA-00BAA0_WD-WMA2F3071727

This will work with both types of kernels. linux-base apparently
isn't smart enough to make this substitution. But that's what you
should do.

However, since I'm up to my ears in your system configuration,
I would like to make some recommendations, if I may.

(1) Avoid having multiple boot loaders installed at the same time,
if possible. If you can, find one boot loader which can boot
everything and stick with it.

(2) If you ever create a custom kernel, you will have problems
with lilo because a kernel created by the Squeeze version of
"make-kpkg" or by "make deb-pkg" does not maintain the symlinks.
("do_symlinks = yes" only works for custom kernels under Squeeze.)
For a more general treatment of this topic I recommend that you
read http://www.wowway.com/~zlinuxman/Kernel.htm, especially
"Step 10: Customize the Kernel Installation Process". You will
need to install hook scripts to maintain symlinks in this case,
such as the ones referenced on the web page.

(3) If you are using lilo on an amd64 system, you might want to
try the latest upstream version of lilo. The Debian package is
available here:

http://www.joonet.de/lilo/debian/squeeze/lilo_23.0-1_amd64.deb

Although this is in Debian package format, this package is not
supported by Debian at this time; so if you have problems with it,
please do not open a Debian bug report against the lilo package. But
I do know that the upstream author, Joachim Wiedorn, made a number
of changes to lilo to work better with the amd64 architecture,
and he uses it himself.

There is one known bug in the package, but it is easily fixed.
Change "#!/bin/sh" to "#!/bin/bash" in
/etc/initramfs/post-update.d/lilo.

--
.''`. Stephen Powell
: :' :
`. `'`
`-


--
To UNSUBSCRIBE, email to debian-user-REQUEST@xxxxxxxxxxxxxxxx
with a subject of "unsubscribe". Trouble? Contact listmaster@xxxxxxxxxxxxxxxx
Archive: http://lists.debian.org/674833650.594645.1283543350479.JavaMail.root@xxxxxxxxxxxxxxxxxxxx



Relevant Pages

  • Fatal trap 12 during boot of 5.3-BETA7 installation CD
    ... I've got a Compaq Presario S3500CL desktop machine and every time I boot the ... 5.3-BETA7 miniinst installation CD, ... I've never reported a kernel Fatal trap before, ... pci0: ...
    (freebsd-current)
  • Help: Multi OS wont boot some OS - Grub Boot loader
    ... for default installation). ... I can boot only into SUSE and Kubuntu. ... a blank screen while trying to boot Mandriva issues a Kernel panic with the ... # Set the default entry to the entry number NUM. ...
    (comp.os.linux.setup)
  • Re: Lilo: fatal: raid_setup: stat("/dev/hda")
    ... After latest upgrade installation of lilo fails. ... # Kernel image management overrides ... # Specifies the boot device. ...
    (Debian-User)
  • Re: getting LILO to boot windows
    ... >> people with experience getting LILO or Grub to work may be able to help me. ... >> I need to get my windows installation working to flash my dvd drive. ... > Can you boot your Linux now, even after executing fdisk /mbr et ell? ... # Specifies the device that should be mounted as root. ...
    (comp.os.linux.misc)
  • Does lilo still have a limit on its menu entries?
    ... All my Debian installs, Sarge, Etch, and Lenny, originally started off as ... Woody 3.0r2, and LiLo was, and still is the bootloader. ... The original kernel when I installed Woody 3.0r2 was a bf one. ... remove this original boot floppy kernel. ...
    (Debian-User)