Archlinux

From Hack Sphere Labs Wiki
Revision as of 13:54, 20 September 2015 by Webdawg (talk | contribs) (Installing with Intel Fake Raid)

Jump to: navigation, search

Upgrading

Intel Microcode Not Manual

/etc/grub.d/10_linux

   if test -n "${initrd}" ; then
+    if test -f "${dirname}/intel-ucode.img"; then
+        ucode="${rel_dirname}/intel-ucode.img"
+    else
+        ucode=
+    fi
     # TRANSLATORS: ramdisk isn't identifier. Should be translated.
     message="$(gettext_printf "Loading initial ramdisk ...")"
     sed "s/^/$submenu_indentation/" << EOF
 	echo	'$(echo "$message" | grub_quote)'
-	initrd	${rel_dirname}/${initrd}
+	initrd	${ucode} ${rel_dirname}/${initrd}
 EOF
  • then
grub-mkconfig -o /boot/grub/grub.cfg

Intel Microcode

pacman -Sv intel-ucode
yaourt iucode-tool
modprobe cpuid
bsdtar -Oxf /boot/intel-ucode.img | iucode_tool -tb -lS - 

NetworkManager and CIFS fstab

//192.168.1.40/bla /mnt/bla cifs credentials=/your/path/to/smbcredentials,noauto,x-systemd.automount 0 0

This is the work around so the system does not try to mount before network manager brings up the interface.

noauto,x-systemd.automount

smbcredentials

user=theusername
password=thepassword

USB Automount

pacman -Sv udiskie

add

udiskie &

to .xintrc

udiskie mounting in /media/

you add this new file in udev rules should work:
   create a new file /etc/udev/rules.d/99-udisks2.rules
   copy&paste this line and save
   # UDISKS_FILESYSTEM_SHARED
   # ==1: mount filesystem to a shared directory (/media/VolumeName)
   # ==0: mount filesystem to a private directory (/run/media/$USER/VolumeName)
   # See udisks(8)
   ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{UDISKS_FILESYSTEM_SHARED}="1"

USB Automount Thunar-Udisks-GVFS

I use Archlinux on a few of my desktop machines. I use XFCE and am for the most part satisfied. The one problem that I have with XFCe is thunar-volman and the fact that one cannot pass mount options to the devices that you mount via the GUI. Even when I set the device up for automount through thunar-volman I cannot find a place to pass my command line options. It seems that thunar-volman uses a combination of gvfs and udisks to mount the disks. To fix this I tried a number of solutions autofs was my first try and for the most part seemed to work. The only problem is that it was not interacting with udisks or gvfs really. I may have been able to pass some options to the autofs mount command and get it to interact with gvfs but I did not explore that option. After quite a few people telling me that autofs was buggy and outdated anyways (I was having problems too) I decided to see if I could get thunar-volman to mount right.

I could not do it and instead of messing about with thunar-volman any more I decided just to have devmon taken out of the archlinux aur to do the automount work for me. It automounts, and I think that it was passing the options that I wanted. The instructions for using devmon are here: https://wiki.archlinux.org/index.php/Udev#Automounting_UDisks_Wrappers and the devmon site is here http://igurublog.wordpress.com/downloads/script-devmon/

I stopped playing with devmon because it did not look like it was passing the --mount-options that I wanted.

So screw everything above. I used a combinition of udev and udisks to automount the sticks and pass the async command.

How I did It: Mount under /media; use partition label if present

The following udev rule set automatically mounts devices/partitions that are represented by /dev/sd* (USB drives, external hard drives and sometimes SD cards). If a partition label is available, it mounts the device to /media/<label> and otherwise to /media/usbhd-sd* (ex: /media/usbhd-sdb1):

/etc/udev/rules.d/11-media-by-label-auto-mount.rules
KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_auto_mount_end"

# Import FS infos
IMPORT{program}="/sbin/blkid -o udev -p %N"

# Get a label if present, otherwise specify one
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"

# Global mount options
ACTION=="add", ENV{mount_options}="relatime"
# Filesystem-specific mount options
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"

# Mount the device
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"

# Clean up after removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"

# Exit
LABEL="media_by_label_auto_mount_end"

The above file needs whatever options you would like to add to it.

This is my file:

KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_auto_mount_end"

# Import FS infos
IMPORT{program}="/sbin/blkid -o udev -p %N"

# Get a label if present, otherwise specify one
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"

# Global mount options
ACTION=="add", ENV{mount_options}="relatime,async"
# Filesystem-specific mount options
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002,async"

# Mount the device
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options},async /dev/%k /media/%E{dir_name}"

# Clean up after removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"

# Exit
LABEL="media_by_label_auto_mount_end"

I think I put one to many asyncs but at the moment...whatever.

You need to restart udevd with:

udevadm control --reload-rules


Resources:

Office 2007

Install

(10.25.11)

This works great:

From forum post: https://bbs.archlinux.org/viewtopic.php?id=86436

Note: You should never run wine commands as root. Run it as your user.

...to get office 2007 working for me I installed bin32-wine, winetricks and then ran:

$ WINEARCH=win32 WINEPREFIX=~/win32 winecfg
and set windows to xp and then ran:
Note: See winetricks section below!!!
$ WINEPREFIX=~/win32 winetricks msxml3  gdiplus riched20 riched30 vcrun2005sp1 allfonts
$ WINEPREFIX=~/win32 wine setup.exe
and then to actually use any of the executables you must cd to the directory. IE:
$ cd ~/win32/drive_c/Program Files/Microsoft Office/Office12
$ WINEPREFIX=~/win32 wine ./EXCEL.EXE

You could set WINEPREFIX in your bash_profile, or make 32bit wine your default (then you only have to do WINEARCH=win32 winecfg). Anyway the two main problems I had were accidentally emulating 64bit (I know Wine Is Not Emulation) windows instead of 32 bit. Also I found that the programs hang if I didn't cd into the directory, probably because the dlls are linked with the local directory. Anyway everything works this way.

Note: I did not have to run via command or script like the guy does though. To execute the software I could just open it from the applicaiton menu.

Office 2k7 SP2

Download from: http://www.microsoft.com/download/en/confirmation.aspx?id=5

Install with:

WINEPREFIX=~/win32 wine office2007sp2-kb953195-fullfile-en-us.exe

Winetricks

The droid font downloader in winetricks is broken. The url is part of the google git project atm. Either the maintainer of winetricks will update or kernel.org will change. I just chose to remove the droid font install from the winetricks script. I think you could create a .netrc file with password information in it but I did not test it or do it this way.

If you visit: http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob_plain;f=data/fonts/ and generate a password in a webbrowser then put it in ~/.netrc , then run the script without comments...might work.

This is what I did:

sudo nano -w /usr/bin/winetricks

Search for: do_droid You should see this:

do_droid() {
    w_download ${DROID_URL}$1';hb=HEAD'   $3  $1
    w_try cp -f "$W_CACHE"/droid/$1 "$W_FONTSDIR_UNIX"
    w_register_font $1 "$2"
}
load_droid()
{
    # See http://en.wikipedia.org/wiki/Droid_(font)
    DROID_URL='http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob_plain;f=data/fonts/'
    do_droid DroidSans-Bold.ttf        "Droid Sans Bold"         560e4bcafdebaf29645fbf92633a2ae0d2f9801f
    do_droid DroidSansFallback.ttf     "Droid Sans Fallback"     64de2fde75868ab8d4c6714add08c8f08b3fae1e
    do_droid DroidSansJapanese.ttf     "Droid Sans Japanese"     b3a248c11692aa88a30eb25df425b8910fe05dc5
    do_droid DroidSansMono.ttf         "Droid Sans Mono"         133fb6cf26ea073b456fb557b94ce8c46143b117
    do_droid DroidSans.ttf             "Droid Sans"              62f2841f61e4be66a0303cd1567ed2d300b4e31c
    do_droid DroidSerif-BoldItalic.ttf "Droid Serif Bold Italic" b7f2d37c3a062be671774ff52f4fd95cbef813ce
    do_droid DroidSerif-Bold.ttf       "Droid Serif Bold"        294fa99ceaf6077ab633b5a7c7db761e2f76cf8c
    do_droid DroidSerif-Italic.ttf     "Droid Serif Italic"      bdd8aad5e6ac546d11e7378bdfabeac7ccbdadfc
    do_droid DroidSerif-Regular.ttf    "Droid Serif"             805c5f975e02f488fa1dd1dd0d44ed4f93b0fab4
}

Comment it out with:

#do_droid() {
#    w_download ${DROID_URL}$1';hb=HEAD'   $3  $1
#    w_try cp -f "$W_CACHE"/droid/$1 "$W_FONTSDIR_UNIX"
#    w_register_font $1 "$2"
#}
#load_droid()
#{
#    # See http://en.wikipedia.org/wiki/Droid_(font)
#    DROID_URL='http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob_plain;f=data/fonts/'
#
#    do_droid DroidSans-Bold.ttf        "Droid Sans Bold"         560e4bcafdebaf29645fbf92633a2ae0d2f9801f
#    do_droid DroidSansFallback.ttf     "Droid Sans Fallback"     64de2fde75868ab8d4c6714add08c8f08b3fae1e
#    do_droid DroidSansJapanese.ttf     "Droid Sans Japanese"     b3a248c11692aa88a30eb25df425b8910fe05dc5
#    do_droid DroidSansMono.ttf         "Droid Sans Mono"         133fb6cf26ea073b456fb557b94ce8c46143b117
#    do_droid DroidSans.ttf             "Droid Sans"              62f2841f61e4be66a0303cd1567ed2d300b4e31c
#    do_droid DroidSerif-BoldItalic.ttf "Droid Serif Bold Italic" b7f2d37c3a062be671774ff52f4fd95cbef813ce
#    do_droid DroidSerif-Bold.ttf       "Droid Serif Bold"        294fa99ceaf6077ab633b5a7c7db761e2f76cf8c
#    do_droid DroidSerif-Italic.ttf     "Droid Serif Italic"      bdd8aad5e6ac546d11e7378bdfabeac7ccbdadfc
#    do_droid DroidSerif-Regular.ttf    "Droid Serif"             805c5f975e02f488fa1dd1dd0d44ed4f93b0fab4
#}

Save then execute the command from the installation section.

USB Device Automount

autofs works but is buggy and outdated.

cpu usage

I am having problem with Firefox and high CPU usage. Lets fix this. I have a feeling it is the flash plugin.

dstat -cdnpmgs --top-bio --top-cpu

Installing

  • Configure Networking
  • Enable Multilib?

Easy LVM:

# using archlinux-2013.07.01-dual.iso

pacman -Syy
pacman -S gdisk
# answer y
gdisk /dev/sda
	o
	#answer y
	n
	# enter
	# enter
	+2M
	EF02
	n
	# enter
	# enter
	+200M
	# enter
	n
	# enter
	# enter
	# enter
	# enter
	w
	y
cryptsetup luksFormat /dev/sda3
	YES
	# enter passphrase
	# re-enter passphrase
cryptsetup luksOpen /dev/sda3 lvm
	# enter passphrase
pvcreate /dev/mapper/lvm
vgcreate MyStorage /dev/mapper/lvm
lvcreate -L 7G MyStorage -n rootvol
lvcreate -L 500M MyStorage -n swap
lvcreate -l 100%FREE MyStorage -n homevol
mkfs.ext4 /dev/sda2
mkfs.ext4 /dev/mapper/MyStorage-rootvol
mkfs.ext4 /dev/mapper/MyStorage-homevol
# ignoring swap at the moment
mount /dev/MyStorage/rootvol /mnt
mkdir /mnt/home
mount /dev/MyStorage/homevol /mnt/home
mkdir /mnt/boot
mount /dev/sda2 /mnt/boot
vi /etc/pacman.d/mirrorlist
	/waterloo
	yy
	# mash page up key to the top
	p
	# escape key
	:wq
pacstrap /mnt base
genfstab -U -p /mnt >> /mnt/etc/fstab
arch-chroot /mnt
vi /etc/locale.gen
	/en_CA
	h
	x
	# escape key
	:wq
locale-gen	
echo LANG=en_CA.UTF-8 > /etc/locale.conf
export LANG=en_CA.UTF-8
ln -s /usr/share/zoneinfo/Canada/Eastern /etc/localtime
hwclock --systohc --utc
echo arch > /etc/hostname
ip addr
	# note the network device, in my case it is "enp0s3", it is often "eth0" it is not "lo"
systemctl enable dhcpcd@enp0s3.service # enp0s3 from above
vi /etc/mkinitcpio.conf  #make sure this didn't delete the S off HOOKS
	/^HOOKS
	/filesystems
	h
	i
	#spcae
	keymap encrypt lvm2
	#escape key
	:wq
pacman -S grub	
	y
vi /etc/default/grub
	/GRUB_CMDLINE_LINUX=""
	$
	i
	cryptdevice=/dev/sda3:MyStorage
	# escape key
	:wq
grub-install --recheck /dev/sda
mkinitcpio -p linux
grub-mkconfig -o /boot/grub/grub.cfg
	# bunch of warnings about lvmetad, but, I shall ignore
passwd
	# enter password
	# re-enter password
exit
umount /mnt/home /mnt/boot /mnt
reboot

Saved Links

Installing with Intel Fake Raid

at the time: 2015.09.01 iso

All I have done so far was get dhcp running, passwd root, and enabled sshd as I am installing over the network.

On to install:

Looks like it loaded mdadm [1]

ls /dev/md
imsm0  ZERO_0

Lets see more:


# mdadm --detail-platform
      Platform : Intel(R) Matrix Storage Manager
       Version : 5.6.2.1002
   RAID Levels : raid0 raid1 raid10 raid5
   Chunk Sizes : 4k 8k 16k 32k 64k 128k
   2TB volumes : not supported
     2TB disks : not supported
     Max Disks : 4
   Max Volumes : 2 per array, 4 per controller
I/O Controller : /sys/devices/pci0000:00/0000:00:1f.2 (SATA)

Read the next paragraph first please.

mdadm should locate the array and create /dev/md/* entries. If it doesn't do this automatically:

mdadm --assemble --scan

I did not find anything here so lets assemble the array inside the container:

mdadm -I /dev/md/imsm0
cat /proc/mdstat

I saw that the array was in auto-read-only and wondered what the heck was going on so I looked[2] and found that when created, before the first write, that just how they are.

ls -l /dev/md/

So, I bumbled through above, to be honest with you, I do not think any of it matters except possible the command with the -I[3] in it. I do not think that even that matters because it looks like after looking at dmesg the array was found and assembled/reconized at boot. The intel raid utility must have wrote the meta data and such. But just in case I was wrong, I left the above.

SO IT LOOKS LIKE YOU CAN START HERE:

 mdadm --detail --scan
mdadm --detail --scan >> /etc/mdadm.conf
parted /dev/md/ZERO_O

ZERO_0 is my named array inside the imsm0 container[4] so hmm:

fdisk -l /dev/md/ZERO_0

Lets get to partitioning...they say not to partition entire arrays and instead create partitions and assemble them separately but I am not going to do that with intel fake raid.

So you have a few options here. I am not using large disks here but I am going with the MBR/GPT hybrid because, well, because. You could do I would think GPT, MBR, or MBR Hybrid.[5]

gdisk /dev/md/ZERO_0

Example from archlinux wiki:

# gdisk /dev/sdX
o  # create new empty GUID partition table
n  # partition 1 [enter], from beginning [enter], to 100GiB [+100GiB], linux fs type [enter]
n  # partition 2 [enter], from beginning [enter], to 108GiB [+8GiB],   linux swap    [8200]
n  # partition 3 [enter], from beginning [enter],           [+1MiB],   linux fs type [enter]
r  # recovery/transformation menu
h  # make hybrid mbr
3  # add partition 3 to hybrid mbr
Place EFI GPT (0xEE) partition first in MBR (good for GRUB)? (Y/N): N
Enter an MBR hex code (default 83): [enter]
Set the bootable flag? (Y/N): Y
Unused partition space(s) found. Use one to protect more partitions? (Y/N): N
w  # write table to disk and exit
 v
This will give you total disk size....
 No problems found. 39063485 free sectors (18.6 GiB) available in 1
 segments, the largest of which is 39063485 (18.6 GiB) in size.
 n
 1
 [enter]
Start at beginning
 [enter]
 +16GiB
 [enter]
 [enter]
 n
 [enter]
 [enter]
 +2GiB
 [enter]
 8200
 [enter]
 n
 [enter]
 [enter]
 +1MiB
 [enter]
 [enter]
 r
 [enter]
 h
 [enter]
 3
 [enter]
 N
 [enter]
 [enter]
 Y
 [enter]
 N
 [enter]
 w
 [enter]
 Y
 [enter]

Will have to do this later:[6]

# grub-install --recheck /dev/sdx
# grub-mkconfig -o /boot/grub/grub.cfg

Rescue

fsck /dev/your\ drive
mount /dev/your\ drive /mnt/somewhere
mount /dev/bootpart\ /mnt/somewhere/boot
mount /dev /mnt/somewhere/dev -o bind
mount /proc /mnt/somewhere/proc -o bind
mount /sys /mnt/somewhere/sys -o bind
[... connect to the internet by your preffered method ...]
cp /etc/resolv.conf /mnt/somewhere/etc
chroot /mnt/somewhere /bin/bash
cat /proc/mounts | grep -v rootfs > /etc/mtab
[... and setup grub and check your system ...]

Yourt Build Dir Space Out

/etc/makepkg.conf:
#-- Specify a directory for package building.
#BUILDDIR=/tmp/makepkg
If you're using yaourt, you can tell it to build somewhere else, use --tmp commandline switch or edit /etc/yaourtrc, uncomment and change
#TMPDIR="/tmp"
to somewhere else.
  1. https://forums.gentoo.org/viewtopic-t-888520-start-0.html
  2. https://unix.stackexchange.com/questions/101072/new-md-array-is-auto-read-only-and-has-resync-pending
  3. https://serverfault.com/questions/226053/intel-matrix-storage-raid-and-linux-mdadm
  4. https://serverfault.com/questions/226053/intel-matrix-storage-raid-and-linux-mdadm
  5. https://wiki.archlinux.org/index.php/GUID_Partition_Table#gdisk_basic_.28with_hybrid_MBR.29
  6. https://wiki.archlinux.org/index.php/GRUB#GUID_Partition_Table_.28GPT.29_specific_instructions