Difference between revisions of "Archlinux"

From Hack Sphere Labs Wiki
Jump to: navigation, search
(winetricks)
(Installing)
 
(69 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
=Stop Tumblerd in XFCE=
 +
pacman -R tumblerd
 +
 +
*https://miteshjlinuxtips.wordpress.com/2012/11/16/stopping-tumblerd-in-xfce/
 +
 +
=Upgrading=
 +
==Intel Microcode Not Manual==
 +
 +
<pre>
 +
/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
 +
</pre>
 +
 +
*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 -
 +
*If an update is available, it should show up below selected microcodes
 +
*https://wiki.archlinux.org/index.php/Microcode#Enabling_Intel_Microcode_Updates
 +
 +
==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 {{Filename|/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):
 +
{{File|/etc/udev/rules.d/11-media-by-label-auto-mount.rules|<nowiki>
 +
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"
 +
</nowiki>}}
 +
 +
The above file needs whatever options you would like to add to it.
 +
 +
This is my file:
 +
 +
<pre>
 +
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"
 +
</pre>
 +
 +
I think I put one to many asyncs but at the moment...whatever.
 +
 +
You need to restart udevd with:
 +
 +
udevadm control --reload-rules
 +
 +
 +
Resources:
 +
*https://wiki.archlinux.org/index.php/USB_Storage_Devices#Mounting_the_USB_stick_as_normal_user_with_mount
 +
*https://wiki.archlinux.org/index.php/Map_Custom_Device_Entries_with_udev#Restart_udev
 +
*https://bbs.archlinux.org/viewtopic.php?pid=1014948
 +
*http://kernelnewbies.org/Linux_2_6_19#head-f01ddab8484abaf0ddea721f329b5a9499d0912e
 +
*https://bbs.archlinux.org/viewtopic.php?pid=1017030
 +
*https://bbs.archlinux.org/viewtopic.php?id=112846
 +
*https://bbs.archlinux.org/viewtopic.php?pid=1017469
 +
 
==Office 2007==
 
==Office 2007==
  
Line 94: Line 242:
  
 
Save then execute the command from the installation section.
 
Save then execute the command from the installation section.
 +
 +
=USB Device Automount=
 +
 +
autofs works but is buggy and outdated.
 +
 +
*http://en.wikipedia.org/wiki/GVFS
 +
*http://hal.freedesktop.org/docs/udisks/Device.html#Device.FilesystemMount
 +
 +
=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:
 +
<pre>
 +
# 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 nano wget linux linux-firmware base-devel man-db man-pages texinfo openssh bash-completion lvm2
 +
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 --target=i386-pc --recheck /dev/sda
 +
 +
This basic install script does not cover efi installs
 +
 +
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
 +
</pre>
 +
Make sure to do networking:
 +
<pre>
 +
/etc/systemd/network/20-wired.network
 +
 +
[Match]
 +
Name=enp1s0
 +
 +
[Network]
 +
DHCP=yes
 +
</pre>
 +
 +
<pre>
 +
reboot
 +
</pre>
 +
 +
==Enable Swap==
 +
mkswap /dev/mapper/MyStorage-swap
 +
swapon /dev/mapper/MyStorage-swap
 +
Edit fstab:
 +
nano /etc/fstab
 +
# /dev/mapper/MyStorage-swap
 +
UUID=32b094e3-e8de-113e-9dw6-72b99d31dd54      swap            swap            defaults                        0 0
 +
 +
===Enable Swap/Get UUID===
 +
sudo blkid
 +
 +
==Saved Links==
 +
*https://wiki.archlinux.org/index.php/Users_and_Groups
 +
*https://wiki.archlinux.org/index.php/Xorg
 +
*https://wiki.archlinux.org/index.php/Beginners%27_Guide#Mount_the_partitions
 +
*http://suddenkernelpanic.blogspot.de/2013/03/arch-linux-lvm-on-top-of-luks-2013-style.html
 +
*https://bbs.archlinux.org/viewtopic.php?id=166876
 +
*https://wiki.archlinux.org/index.php/Network_Configuration#Device_names
 +
*https://wiki.archlinux.org/index.php/Beginners%27_Guide#Mount_the_partitions
 +
*https://wiki.archlinux.org/index.php/Grub#GUID_Partition_Table_.28GPT.29_specific_instructions
 +
*https://wiki.archlinux.org/index.php/Dm-crypt_with_LUKS#Initial_Setup
 +
*https://wiki.archlinux.org/index.php/Partitioning
 +
*https://wiki.archlinux.org/index.php/Installation_Guide
 +
 +
=Installing with Intel Fake Raid (MDADM)=
 +
 +
https://wiki.archlinux.org/index.php/Beginners'_guide#Preparation
 +
 +
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 <ref>https://forums.gentoo.org/viewtopic-t-888520-start-0.html</ref>
 +
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<ref>https://unix.stackexchange.com/questions/101072/new-md-array-is-auto-read-only-and-has-resync-pending</ref> 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<ref>https://serverfault.com/questions/226053/intel-matrix-storage-raid-and-linux-mdadm</ref> 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
 +
 +
parted /dev/md/ZERO_O
 +
ZERO_0 is my named array inside the imsm0 container<ref>https://serverfault.com/questions/226053/intel-matrix-storage-raid-and-linux-mdadm</ref> 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.
 +
 +
==MBR Install==
 +
 +
Doing MBR because my bios does not support EFI, I ran into trouble with HYBRID/GPT, and my disks are only 20GB.
 +
 +
parted /dev/md/ZERO_0
 +
mklabel msdos
 +
mkpart primary ext4 1MiB 100MiB
 +
set 1 boot on
 +
mkpart primary ext4 100MiB 16.5GiB
 +
mkpart primary linux-swap 16.5GiB 100%
 +
Just to see changes:
 +
fdisk -l /dev/md/ZERO_0
 +
 +
Create Filesystem/swap/activate swap
 +
mkfs.ext4 /dev/md/ZERO_0p1
 +
mkfs.ext4 /dev/md/ZERO_0p2
 +
mkswap /dev/md/ZERO_0p3
 +
swapon /dev/md/ZERO_0p3
 +
mount /dev/md/ZERO_0p2 /mnt
 +
mkdir -p /mnt/boot
 +
mount /dev/md/ZERO_0p1 /mnt/boot/
 +
nano /etc/pacman.conf
 +
Uncomment multilib on x64
 +
pacstrap -i /mnt base base-devel
 +
genfstab -U /mnt > /mnt/etc/fstab
 +
cat /mnt/etc/fstab
 +
nano /mnt/etc/fstab
 +
replace UUIDs with:
 +
/dev/md/ZERO_0p1
 +
/dev/md/ZERO_0p2
 +
/dev/md/ZERO_0p3
 +
mdadm --detail --scan >> /mnt/etc/mdadm.conf
 +
Chroot in for config
 +
arch-chroot /mnt /bin/bash
 +
nano /etc/locale.gen
 +
en_US.UTF-8 UTF-8
 +
nano /etc/locale.conf
 +
LANG=en_US.UTF-8
 +
tzselect
 +
ln -sf /usr/share/zoneinfo/America/Chicago /etc/localtime
 +
 +
work on some grub stuff
 +
 +
pacman -Sv grub
 +
nano /etc/default/grub
 +
*Uncomment GRUB_DISABLE_LINUX_UUID=true
 +
#IGNORE LINE HAS TO DO WITH OLD GRUB *Add mdraid to GRUB_PRELOAD_MODULES
 +
#IGNORE LINE HAS TO DO WITH OLD GRUB GRUB_PRELOAD_MODULES="part_gpt part_msdos mdraid"
 +
Lets finish
 +
 +
Raid Stuff
 +
 +
cat /etc/mdadm.conf
 +
nano /etc/mkinitcpio.conf
 +
Add mdadm_udev to HOOKS=
 +
HOOKS="base udev autodetect modconf block mdadm_udev filesystems keyboard fsck"
 +
Add /sbin/mdmon to BINARIES<ref>https://bbs.archlinux.org/viewtopic.php?id=137058</ref>
 +
BINARIES="/sbin/mdmon"
 +
Regenerate it!
 +
mkinitcpio -p linux
 +
 +
grub-install --recheck /dev/md/ZERO_0
 +
grub-mkconfig -o /boot/grub/grub.cfg
 +
 +
cat /boot/grub/grub.cfg
 +
 +
echo your-hostname > /etc/hostname
 +
nano /etc/hosts
 +
systemctl enable dhcpcd@enp13s0.service
 +
exit
 +
umount -R /mnt
 +
reboot
 +
Remove Disk
 +
 +
==HYBRID MBR/GPT==
 +
In the end I did not do this, I could not get it to work because I did not have my raid array as bootable so I messed alot up trying to fix something that was not broken.  I am keeping this here because I may try it again someday.  For now I am doing the MBR method because my disks are only 20GB anyways.
 +
 +
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.<ref>https://wiki.archlinux.org/index.php/GUID_Partition_Table#gdisk_basic_.28with_hybrid_MBR.29</ref>
 +
 +
gdisk /dev/md/ZERO_0
 +
 +
Example from archlinux wiki:
 +
<pre>
 +
# 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
 +
</pre>
 +
<pre>
 +
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]
 +
</pre>
 +
 +
# DO NOT READ THISSo above, gdisk has an option to add the right flag [0xEF02] to a partition so the bios will find it but someone stated that gdisk lies or was broken.  Anyways, I did not do it at first and my system failed to boot.  Instead of using the Gdisk way <ref>https://wiki.gentoo.org/wiki/GRUB2</ref> I used parted<ref>https://velenux.wordpress.com/2012/07/12/grub-failing-to-install-on-debianubuntu-with-gpt-partitions/</ref> because I did not read anything about that.
 +
 +
# DO NOT DO THIS
 +
 +
parted /dev/md/ZERO_0
 +
p free [enter]
 +
set 3 bios_grub on
 +
Ignore
 +
q
 +
 +
# DO NOT DO THIS
 +
 +
Just to see changes:
 +
gdisk /dev/md/ZERO_0
 +
p[enter]
 +
Create Filesystem/swap/activate swap
 +
mkfs.ext4 /dev/md/ZERO_0p1
 +
mkswap /dev/md/ZERO_0p2
 +
swapon /dev/md/ZERO_0p2
 +
mount /dev/md/ZERO_0p1 /mnt
 +
nano /etc/pacman.conf
 +
Uncomment multilib on x64
 +
pacstrap -i /mnt base base-devel
 +
genfstab -U /mnt > /mnt/etc/fstab
 +
arch-chroot /mnt /bin/bash
 +
nano /etc/locale.gen
 +
en_US.UTF-8 UTF-8
 +
nano /etc/locale.conf
 +
LANG=en_US.UTF-8
 +
tzselect
 +
ln -sf /usr/share/zoneinfo/America/Chicago /etc/localtime
 +
 +
 +
Raid Stuff
 +
mdadm --detail --scan >> /etc/mdadm.conf
 +
nano /etc/mkinitcpio.conf
 +
Add mdadm to HOOKS=
 +
HOOKS="base udev mdadm autodetect modconf block filesystems keyboard fsck"
 +
mkinitcpio -p linux
 +
 +
Grub Install with Hybrid GPT<ref>https://wiki.archlinux.org/index.php/GRUB#GUID_Partition_Table_.28GPT.29_specific_instructions</ref>A better reference:  https://wiki.gentoo.org/wiki/Hybrid_partition_table
 +
 +
# pacman -Sv grub
 +
# grub-install --recheck /dev/md/ZERO_0
 +
# grub-mkconfig -o /boot/grub/grub.cfg
 +
echo your-hostname > /etc/hostname
 +
nano /etc/hosts
 +
systemctl enable dhcpcd@enp13s0.service
 +
 +
=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.
 +
 +
=Post Install=
 +
useradd -m -G wheel -s /bin/bash user
 +
#crap pacman -Sv udisks2 ntfs-3g
 +
#crap pacman -Sv inotify-tools
 +
#crap nano /etc/udev/rules.d/99-udisks2.rules
 +
locale-gen en_US en_US.UTF-8
 +
pacman -Sv devmon
 +
systemctl enable devmon@user.service
 +
systemctl start devmon@user.service
 +
 +
 +
=Clearing Failed Units=
 +
http://linux-audit.com/auditing-systemd-solving-failed-units-with-systemctl/
 +
 +
=DHCP Service Increasing Timeout=
 +
 +
su
 +
mkdir
 +
/etc/systemd/system/dhcpcd@.service.d
 +
nano /etc/systemd/system/dhcpcd@.service.d/timeout.conf
 +
File:
 +
<pre>
 +
[Service]
 +
ExecStart=
 +
ExecStart=/usr/bin/dhcpcd -w -q -t 0 %I
 +
</pre>
 +
Where -t 0 is infinite wait
 +
nano /etc/systemd/system/dhcpcd@.service.d/dhcpcdrestart.conf
 +
File:
 +
<pre>
 +
[Service]
 +
Restart=always
 +
</pre>
 +
 +
=Bring Network Interface Up With No IP=
 +
 +
About the other interface:
 +
 +
Right now I do a systemctl enable dhcpcd@enp14s0.service to dhcp that interface...I need the other interface to come up with nothing
 +
 +
It will work but it is reccomended to use networkd for all:
 +
 +
14:38 < vodik> webdawg: no, but networkd has a lighter dhcp implementation, you can use that
 +
14:38 < vodik> webdawg: [Match] Name=differentinterface [Network] DHCP=yes
 +
 +
About the interface I want to turn up on each boot:
 +
 +
*https://wiki.archlinux.org/index.php/Systemd-networkd#Wired_adapter_using_DHCP
 +
 +
14:35 < vodik> webdawg: networkd can do it
 +
14:35 < vodik> webdawg: [Match] Name=... [Network]
 +
14:35 < vodik> webdawg: if you have an empty [Network] section, networkd will bring the interface up but leave it unconfigured
 +
 +
cd /etc/systemd/network/
 +
sudo nano enp13s0.network
 +
File:
 +
[Match]
 +
Name=enp13s0
 +
[Network]
 +
 +
The archlinux doc above says to enable two services:
 +
 +
sudo systemctl enable systemd-networkd.service
 +
sudo systemctl enable systemd-resolved.service
 +
 +
Since I am going to still use the dhcpcd I am not going to enable resolved.service
 +
 +
=udiskie=
 +
 +
udiskie is a mount helper using either |udisks or udisks2 It includes support for password protected LUKS devices. See the udiskie wiki for [https://github.com/coldfix/udiskie/wiki/Usage usage details].
 +
 +
Github:  [https://github.com/coldfix/udiskie udiskie]
 +
 +
==udiskie - xfce==
 +
pacman -Sv xfce4-notifyd notify-osd udiskie
 +
cp /etc/X11/xinit/xinitrc .xinitrc
 +
nano .xinitrc
 +
Add to bottom (you will not need to do this if you have your .xinitrc done right):
 +
source /etc/X11/xinit/xinitrc.d/50-systemd-user.sh
 +
udiskie &
 +
Log out
 +
startx
 +
Run to test:
 +
xfce4-notifyd-config
 +
 +
=NetworkManager=
 +
 +
sudo pacman -Sv networkmanager networkmanager-openvpn network-manager-applet xfce4-notifyd
 +
*Should the applet not appear, install the xfce4-indicator-plugin AUR
 +
 +
You have to disable any conflicting services:
 +
dhcpcd@.service
 +
and/or
 +
netctl list
 +
 +
==Network Manager Password Prompt==
 +
 +
No prompt for password of secured Wi-Fi networks:  When trying to connect to a secured Wi-Fi network, no prompt for a password is shown and no connection is established. This happens when no keyring package is installed. An easy solution is to install gnome-keyring. If you want the passwords to be stored in encrypted form, follow GNOME Keyring to set up the gnome-keyring-daemon.
 +
 +
pacman -Sv gnome-keyring
 +
 +
I have not configured but it looks like it prompts now, will have to see how it works later.
 +
 +
=Reccomended Packages=
 +
base-devel git
 +
 +
=References=
 +
<references />

Latest revision as of 06:26, 12 August 2020

Stop Tumblerd in XFCE

pacman -R tumblerd

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 nano wget linux linux-firmware base-devel man-db man-pages texinfo openssh bash-completion lvm2
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 --target=i386-pc --recheck /dev/sda

This basic install script does not cover efi installs

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

Make sure to do networking:

/etc/systemd/network/20-wired.network

[Match]
Name=enp1s0

[Network]
DHCP=yes
reboot

Enable Swap

mkswap /dev/mapper/MyStorage-swap
swapon /dev/mapper/MyStorage-swap

Edit fstab:

nano /etc/fstab
# /dev/mapper/MyStorage-swap
UUID=32b094e3-e8de-113e-9dw6-72b99d31dd54       swap            swap            defaults                        0 0

Enable Swap/Get UUID

sudo blkid

Saved Links

Installing with Intel Fake Raid (MDADM)

https://wiki.archlinux.org/index.php/Beginners'_guide#Preparation

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
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.

MBR Install

Doing MBR because my bios does not support EFI, I ran into trouble with HYBRID/GPT, and my disks are only 20GB.

parted /dev/md/ZERO_0
mklabel msdos
mkpart primary ext4 1MiB 100MiB
set 1 boot on
mkpart primary ext4 100MiB 16.5GiB
mkpart primary linux-swap 16.5GiB 100%

Just to see changes:

fdisk -l /dev/md/ZERO_0

Create Filesystem/swap/activate swap

mkfs.ext4 /dev/md/ZERO_0p1
mkfs.ext4 /dev/md/ZERO_0p2
mkswap /dev/md/ZERO_0p3
swapon /dev/md/ZERO_0p3
mount /dev/md/ZERO_0p2 /mnt
mkdir -p /mnt/boot
mount /dev/md/ZERO_0p1 /mnt/boot/
nano /etc/pacman.conf

Uncomment multilib on x64

pacstrap -i /mnt base base-devel
genfstab -U /mnt > /mnt/etc/fstab
cat /mnt/etc/fstab
nano /mnt/etc/fstab

replace UUIDs with:

/dev/md/ZERO_0p1
/dev/md/ZERO_0p2
/dev/md/ZERO_0p3
mdadm --detail --scan >> /mnt/etc/mdadm.conf

Chroot in for config

arch-chroot /mnt /bin/bash
nano /etc/locale.gen

en_US.UTF-8 UTF-8

nano /etc/locale.conf

LANG=en_US.UTF-8

tzselect
ln -sf /usr/share/zoneinfo/America/Chicago /etc/localtime

work on some grub stuff

pacman -Sv grub
nano /etc/default/grub 
  • Uncomment GRUB_DISABLE_LINUX_UUID=true
#IGNORE LINE HAS TO DO WITH OLD GRUB *Add mdraid to GRUB_PRELOAD_MODULES
#IGNORE LINE HAS TO DO WITH OLD GRUB GRUB_PRELOAD_MODULES="part_gpt part_msdos mdraid"

Lets finish

Raid Stuff

cat /etc/mdadm.conf
nano /etc/mkinitcpio.conf

Add mdadm_udev to HOOKS=

HOOKS="base udev autodetect modconf block mdadm_udev filesystems keyboard fsck"

Add /sbin/mdmon to BINARIES[5]

BINARIES="/sbin/mdmon"

Regenerate it!

mkinitcpio -p linux
grub-install --recheck /dev/md/ZERO_0
grub-mkconfig -o /boot/grub/grub.cfg
cat /boot/grub/grub.cfg
echo your-hostname > /etc/hostname
nano /etc/hosts
systemctl enable dhcpcd@enp13s0.service
exit
umount -R /mnt
reboot

Remove Disk

HYBRID MBR/GPT

In the end I did not do this, I could not get it to work because I did not have my raid array as bootable so I messed alot up trying to fix something that was not broken. I am keeping this here because I may try it again someday. For now I am doing the MBR method because my disks are only 20GB anyways.

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.[6]

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]
  1. DO NOT READ THISSo above, gdisk has an option to add the right flag [0xEF02] to a partition so the bios will find it but someone stated that gdisk lies or was broken. Anyways, I did not do it at first and my system failed to boot. Instead of using the Gdisk way [7] I used parted[8] because I did not read anything about that.
  1. DO NOT DO THIS
parted /dev/md/ZERO_0
p free [enter]
set 3 bios_grub on
Ignore
q
  1. DO NOT DO THIS

Just to see changes:

gdisk /dev/md/ZERO_0
p[enter]

Create Filesystem/swap/activate swap

mkfs.ext4 /dev/md/ZERO_0p1
mkswap /dev/md/ZERO_0p2
swapon /dev/md/ZERO_0p2
mount /dev/md/ZERO_0p1 /mnt
nano /etc/pacman.conf

Uncomment multilib on x64

pacstrap -i /mnt base base-devel
genfstab -U /mnt > /mnt/etc/fstab
arch-chroot /mnt /bin/bash
nano /etc/locale.gen

en_US.UTF-8 UTF-8

nano /etc/locale.conf

LANG=en_US.UTF-8

tzselect
ln -sf /usr/share/zoneinfo/America/Chicago /etc/localtime


Raid Stuff

mdadm --detail --scan >> /etc/mdadm.conf
nano /etc/mkinitcpio.conf

Add mdadm to HOOKS=

HOOKS="base udev mdadm autodetect modconf block filesystems keyboard fsck"
mkinitcpio -p linux
Grub Install with Hybrid GPT[9]A better reference:  https://wiki.gentoo.org/wiki/Hybrid_partition_table
# pacman -Sv grub
# grub-install --recheck /dev/md/ZERO_0
# grub-mkconfig -o /boot/grub/grub.cfg
echo your-hostname > /etc/hostname
nano /etc/hosts
systemctl enable dhcpcd@enp13s0.service

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.

Post Install

useradd -m -G wheel -s /bin/bash user
#crap pacman -Sv udisks2 ntfs-3g
#crap pacman -Sv inotify-tools
#crap nano /etc/udev/rules.d/99-udisks2.rules
locale-gen en_US en_US.UTF-8
pacman -Sv devmon
systemctl enable devmon@user.service
systemctl start devmon@user.service


Clearing Failed Units

http://linux-audit.com/auditing-systemd-solving-failed-units-with-systemctl/

DHCP Service Increasing Timeout

su
mkdir
/etc/systemd/system/dhcpcd@.service.d
nano /etc/systemd/system/dhcpcd@.service.d/timeout.conf

File:

 [Service]
 ExecStart=
 ExecStart=/usr/bin/dhcpcd -w -q -t 0 %I

Where -t 0 is infinite wait

nano /etc/systemd/system/dhcpcd@.service.d/dhcpcdrestart.conf

File:

 [Service]
 Restart=always

Bring Network Interface Up With No IP

About the other interface:

Right now I do a systemctl enable dhcpcd@enp14s0.service to dhcp that interface...I need the other interface to come up with nothing

It will work but it is reccomended to use networkd for all:

14:38 < vodik> webdawg: no, but networkd has a lighter dhcp implementation, you can use that
14:38 < vodik> webdawg: [Match] Name=differentinterface [Network] DHCP=yes

About the interface I want to turn up on each boot:

14:35 < vodik> webdawg: networkd can do it
14:35 < vodik> webdawg: [Match] Name=... [Network]
14:35 < vodik> webdawg: if you have an empty [Network] section, networkd will bring the interface up but leave it unconfigured

cd /etc/systemd/network/
sudo nano enp13s0.network

File:

[Match]
Name=enp13s0
[Network]

The archlinux doc above says to enable two services:

sudo systemctl enable systemd-networkd.service
sudo systemctl enable systemd-resolved.service

Since I am going to still use the dhcpcd I am not going to enable resolved.service

udiskie

udiskie is a mount helper using either |udisks or udisks2 It includes support for password protected LUKS devices. See the udiskie wiki for usage details.

Github: udiskie

udiskie - xfce

pacman -Sv xfce4-notifyd notify-osd udiskie
cp /etc/X11/xinit/xinitrc .xinitrc
nano .xinitrc

Add to bottom (you will not need to do this if you have your .xinitrc done right):

source /etc/X11/xinit/xinitrc.d/50-systemd-user.sh
udiskie &

Log out

startx

Run to test:

xfce4-notifyd-config

NetworkManager

sudo pacman -Sv networkmanager networkmanager-openvpn network-manager-applet xfce4-notifyd
  • Should the applet not appear, install the xfce4-indicator-plugin AUR

You have to disable any conflicting services:

dhcpcd@.service

and/or

netctl list

Network Manager Password Prompt

No prompt for password of secured Wi-Fi networks: When trying to connect to a secured Wi-Fi network, no prompt for a password is shown and no connection is established. This happens when no keyring package is installed. An easy solution is to install gnome-keyring. If you want the passwords to be stored in encrypted form, follow GNOME Keyring to set up the gnome-keyring-daemon.

pacman -Sv gnome-keyring

I have not configured but it looks like it prompts now, will have to see how it works later.

Reccomended Packages

base-devel git

References

  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://bbs.archlinux.org/viewtopic.php?id=137058
  6. https://wiki.archlinux.org/index.php/GUID_Partition_Table#gdisk_basic_.28with_hybrid_MBR.29
  7. https://wiki.gentoo.org/wiki/GRUB2
  8. https://velenux.wordpress.com/2012/07/12/grub-failing-to-install-on-debianubuntu-with-gpt-partitions/
  9. https://wiki.archlinux.org/index.php/GRUB#GUID_Partition_Table_.28GPT.29_specific_instructions