Ubuntuが以上終了した時、次のブート時にタイムアウトするようにする(古い記事を転記)

Ubuntu 18.04でも必要か?)

以前は00_headerを直接書き換えていたが、いまはもう少し賢く設定可能。

/etc/default/grubに次の行を追加

GRUB_RECORDFAIL_TIMEOUT=${GRUB_TIMEOUT}

そして

% sudo update-grub

http://bneijt.nl/blog/post/ubuntu-server-continue-boot-after-failure/

USBメモリを使ったインストールをpreseedingである程度自動化(昔書いたやつをまとめて転記)

インストール作業環境・モチベーション

  • コンピュータの素人がコンピュータクラスタを管理している。Ubuntuのインストールが仕事の中心ではない。
  • たくさんのインストール作業を行うわけではない。数ヶ月に一度、例えば10台程度。
  • コンピュータの横にいて様子を見ながら作業する。
  • インストール中に本を読んだりしたいので、Ubuntuのインストールで、途中での入力作業を減らしたい。

参考にしたサイト

一般

preseedingの設定ファイル

preseedingのブートオプション

ssh-serverのrootログインの設定

d-i preseed/late_command string \
    in-target sed -i 's/PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config

手順

Ubuntu 14.04.1 server 64bit環境でテストしました。手持ちのコンピュータではUbuntu (14.04.2|14.04.3) server 64bitではそもそもUSBメモリをブート可能なデバイスとして認識しなかった。

  1. preseedingの設定をpreseed.cfgなどに保存し、ubuntuのUSBインストーラのトップディレクトリに置く。
  2. USBメモリを挿して、電源ON
  3. ブートの選択画面で、ESC,F6,ESCとキーボードを叩き、ブートオプションを書き込める状態にする。
  4. 次の文字列を加え、リターンキーを叩いて起動する。
 priority=critical locale=en_US file=/cdrom/preseed.cfg

preseedingの設定ファイルに間違いがあり途中でインストールがこけた場合は、手動でのインストールに切りかわる。

HDD(/dev/sdaなど)にすでにパーティションがあってマウントされてしまう場合

テストしてないけどメモを残す。

d-i preseed/early_command string umount /media || true

preseed.cfg

Ubuntu 14.04の時のもの。

boot option

ESC --> F6 --> ESC のあと、次の文字列を追加する。

priority=critical locale=en_US file=/cdrom/preseed.cfg

preseed.cfg (https://help.ubuntu.com/lts/installation-guide/example-preseed.txt)

# https://help.ubuntu.com/lts/installation-guide/example-preseed.txt
d-i debian-installer/locale string en_US.UTF-8
d-i debian-installer/splash boolean false
d-i console-setup/ask_detect boolean false
d-i keyboard-configuration/xkb-keymap select us
#d-i    preseed/early_command string killall.sh dhclient ; netcfg
d-i netcfg/choose_interface select auto
#d-i netcfg/dhcp_timeout string 30
# If you prefer to configure the network manually, uncomment this line and
# the static network configuration below.
#d-i netcfg/use_autoconfig boolean false 
#d-i netcfg/disable_autoconfig boolean true 
#d-i netcfg/disable_dhcp boolean true
#d-i netcfg/choose_interface select eth0
#d-i netcfg/disable_autoconfig boolean true
#d-i netcfg/dhcp_failed note
#d-i netcfg/dhcp_options select Configure network manually
#d-i netcfg/get_nameservers string 192.168.1.254
#d-i netcfg/get_ipaddress string 192.168.1.33
#d-i netcfg/get_netmask string 255.255.255.0
#d-i netcfg/get_gateway string 192.168.1.1
#d-i netcfg/confirm_static boolean true
d-i netcfg/get_hostname string hoge33
d-i netcfg/get_domain string localdomain

d-i mirror/http/mirror select jp.archive.ubuntu.com
d-i mirror/country string manual
d-i mirror/http/hostname string jp.archive.ubuntu.com
d-i mirror/http/directory string /ubuntu
d-i mirror/http/proxy string
d-i partman-auto/method string regular
#d-i partman-lvm/device_remove_lvm boolean true
#d-i partman-lvm/confirm boolean true
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i partman/default_filesystem string ext4
d-i clock-setup/utc boolean false
d-i time/zone string Japan
d-i clock-setup/ntp boolean true
d-i clock-setup/ntp-server string ntp.ubuntu.com
d-i base-installer/kernel/image string linux-generic
d-i passwd/root-login boolean true
d-i passwd/root-password-crypted password {MD5 hash}
d-i passwd/make-user boolean false
d-i user-setup/encrypt-home boolean false
d-i apt-setup/services-select multiselect security
d-i apt-setup/security_host string security.ubuntu.com
d-i apt-setup/security_path string /ubuntu
d-i debian-installer/allow_unauthenticated string false
d-i pkgsel/upgrade  select safe-upgrade
d-i pkgsel/language-packs multiselect 
d-i pkgsel/update-policy select none
d-i pkgsel/updatedb boolean true
d-i grub-installer/skip boolean false
d-i lilo-installer/skip boolean false
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
d-i finish-install/keep-consoles boolean false
d-i finish-install/reboot_in_progress note 
d-i cdrom-detect/eject boolean true
d-i debian-installer/exit/halt boolean false
d-i debian-installer/exit/poweroff boolean false
d-i pkgsel/include string openssh-server
d-i preseed/late_command string \
    in-target sed -i 's/PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config

swiperの挙動が気に入らないなあ→自分の設定ミス

swiperのminibufferのC-jとかC-sの挙動が気に入らないなあ、と思ったら設定ミスだったようだ。

C-jはicomplete-modeの残骸が悪さをしていた(消した)。

C-sはswiperからswiper-isearchにすると思った通りに動くようになった。マニュアル(Ivy User Manual )ちゃんと読まなあかん。

(global-set-key (kbd "C-s") 'swiper-isearch)

マニュアルを見て、これを加えてみた。

(global-set-key (kbd "C-x b") 'ivy-switch-buffer)
(global-set-key (kbd "C-c v") 'ivy-push-view)
(global-set-key (kbd "C-c V") 'ivy-pop-view)

素晴らしく快適。emacs最高。

emacs widnow間とframe間の移動

(global-set-key (kbd "C-c <left>")  'windmove-left)
(global-set-key (kbd "C-c <right>") 'windmove-right)
(global-set-key (kbd "C-c <up>")    'windmove-up)
(global-set-key (kbd "C-c <down>")  'windmove-down)
(global-set-key (kbd "C-<tab>") 'other-frame)

elpy, flycheck, irony, company-modeなどなどのインストール

emacsのpackage-installから。 パッケージ名は[elpy, flycheck, irony, company, company-irony, company-irony-c-hedears, smartrep, py-yapf]

exec-path-from-shell, cmake-mode, yaml-mode, yatex, use-package, ivy, counselなどもインストール。

dumb-jumpは少なくともFortranを読むのに必要。

dumb-jump

GitHub - jacktasia/dumb-jump: an Emacs "jump to definition" package for 40+ languages rgはbrew install ripgrepで入る。

elpyの導入

IDE Features — Elpy 1.33.0 documentation

個人的な Python 用の Emacs の設定 | org-技術

Emacs: The Best Python Editor? – Real Python

elpyの設定メモ - ししちにじゅうはち 4x7=28

pip install flake8 importmagic yapf jedi

M-x elpy-configでインストールしたパッケージが正しくelpyに読み込まれているか確認する必要がある。Macのアイコンから起動するemacsでは、shellの設定が読み込まれない。これはexec-path-from-shellパッケージをインストールして.emacs内でinitializeすることで詠みこまれるようになる。

M-x package-refresh-contents
M-x package-install exec-path-from-shell
(exec-path-from-shell-initialize)

company-ironyの導入

M-x irony-install-server RET

を忘れずに。

rtags

Update 2018/07/26. rtagsの設定やドキュメントがずいぶんアップデートされた。

インストールや設定はここに書いているように行う。

rtagsをmakeする環境としてcmakeとllvmが必要。ない場合は次のようにインストールする。

% brew install llvm cmake

emacsでrtagsとflycheck-rtagsをpackage-installする。

flycheck c++ 11の設定

(require 'rtags)
(add-hook 'c-mode-hook 'rtags-start-process-unless-running)
(add-hook 'c++-mode-hook 'rtags-start-process-unless-running)
(add-hook 'objc-mode-hook 'rtags-start-process-unless-running)
(setq rtags-completions-enabled t)
(require 'company)
(global-company-mode)
(push 'company-rtags company-backends)
(define-key c-mode-base-map (kbd "<C-tab>") (function company-complete))
(require 'flycheck-rtags)
(setq rtags-autostart-diagnostics t)
(defun my-flycheck-rtags-setup ()
  (flycheck-select-checker 'rtags)
  (setq-local flycheck-highlighting-mode nil) ;; RTags creates more accurate overlays.
  (setq-local flycheck-check-syntax-automatically nil))
(add-hook 'c-mode-hook #'my-flycheck-rtags-setup)
(add-hook 'c++-mode-hook #'my-flycheck-rtags-setup)
(add-hook 'objc-mode-hook #'my-flycheck-rtags-setup)

その他 emacs 設定

Emacsの設定 - nobUnagaの日記

自動改行をする/しない

(c-toggle-auto-newline 1)

homebrew (macOS Catalina)

brew install wget
brew install tmux
brew install coreutils
brew install gnu-tar
brew install imagemagick
brew install aspell
brew install gnuplot
brew install ripgrep
brew cask install iterm2
brew cask install osxfuse
brew install sshfs
brew cask install emacs
brew cask install xquartz
brew install llvm
brew cask install skim
brew cask install mactex-no-gui
export PATH=/usr/local/bin:$PATH

Emacsでのaspellの設定

(setq ispell-program-name "/usr/local/bin/aspell")
(setq ispell-list-command "--list")

tmux内からopen(macOS)を使う

brew update
brew install reattach-to-user-namespace
brew upgrade reattach-to-user-namespace
echo "set -g default-command \"reattach-to-user-namespace -l ${SHELL}\"" >> ~/.tmux.conf

Unable to use 'open' command in OSX tmux

NFSマウント上のファイルシステムでipythonを使うには?

テンポラリファイルをローカルマシン上に作れば良いみたい。

ipython --HistoryManager.hist_file=/tmp/ipython_hist.sqlite

やり方はここに書いてあった。